Unity_Shader著色器(固定管線著色器)

First:


//一個Shader由Properties,SubShader,FallBack組成

Shader"CustomLearn/First"{

//屬性:用來指定代碼有那些輸入

Properties{

//屬性的語法:Name("DisplayName",type)=defaultValue(options)

//Name是屬性的名字慨代,簡單的來說相當于一個變量名耘柱,在之后整個Shader代碼中將使用

//這個名字獲取該屬性里面的內容

//DisplayName:將顯示在Unity引擎材質編輯器中做為shader的使用者可讀取的內容,即材質中顯示的內容

//type:屬性的類型,主要由以下幾種類型:

//1.Color--顏色捺萌,RGBA(紅,綠抒线,藍粟耻,透明度)由四個量來定義,每個量的值在0-1之間

//2.2D--是一個2的冪次方大小的貼圖锨咙,這張貼圖將在采樣后被轉化為對應基于模型的UV的每個像素的顏色语卤,最終被顯示出來,帶有options(可選項)

//3.Rect--是一個非2的冪次方的貼圖,

//4.Cube--即Cubemaptexture(立方體紋理)粹舵,簡單的來說就是6張有聯(lián)系的2D貼圖組合钮孵,主要用來做反射效果

//2-4對于貼圖來說,其值可以用一個代表tint顏色字符串來表示眼滤,其值可以為空巴席,options只對貼圖有關,里面至少寫一個空的{}

//如果需要打開特定選項诅需,可以把其寫在{}里面漾唉,如果同時打開多個選項,可以用空格分開

//選項有以下幾種:ObjectLinear,SphereMap,CubeReflect,CubeNormal中一個或者是White,Black,Gray,Bump(凹凸)中的一個堰塌;

//5.Range--一個介于最大值和最小值之間的浮點數(shù)赵刑,其值可以在材質編輯器中滑動調節(jié),比如Shader中某些特定的參數(shù)蔫仙,透明度其值為0-1料睛,就可以用該類型表示;

//6.Float--一個浮點數(shù)

//7.Vector--一個四維數(shù)摇邦,寫成(x,y,z,w);

//defaultValue:默認值恤煞,一個符合格式的值來設置為默認值;

_Color?("MainColor",Color)?=?(1,0.5,0.5,1)

}

//SubShader是子著色器施籍,可以有一個居扒,也可以有多個,在實際運行中丑慎,哪個子著色器被調用喜喂,是由運行平臺來決定的

//子著色器是代碼的主體,每一個子著色器包含一個或者多個pass

//每一個pass都會渲染一次對象竿裂,在計算著色時玉吁,平臺會選擇最優(yōu)先使用的那個著色器,然后以此運行里面的pass腻异,會得到一個輸出結果进副,最后才會渲染出來

SubShader{

//pass通道控制被渲染的對象的幾何體,除了表面著色器以外悔常,其他兩種(固定管線著色器和頂點片段著色器)著色器的subshader下面一定要有pass通道影斑,其語法格式如下

//pass{[NameandTags][RandererSetup][TextureSetup]}

//基本通道包含一個可選的渲染設置命令列表和可選的被使用的文理列表

//NameandTags:可以定義pass的名字和做任意數(shù)量的標簽,為pass命名后机打,可以在別的著色器中使用該名字來調用矫户,標簽可以用來向渲染器說明pass的意圖

//RendererSetUp(渲染設置):只用在固定功能管線著色器中,可以設置圖形硬件的各種狀態(tài)残邀,可用的設置命令如下:

//1.Material{}:材質皆辽,定義一個使用定點光照管線的材質

//2.Lighting:光照柑蛇,其值取為On或Off;

//3.Cull:剪裁驱闷,設置剪裁模式唯蝶,有Back,Front,Off

//4.ZTest:深度測試,模式有LessGreaterLEqualGEqualEqualNotEqualAlways

//5.Fog{}:霧效遗嗽,設置霧效的參數(shù)

//6.AlphaTest:油墨Alpha測試,模式有LessGreaterEqualNotEqualAlways

//7.Blend:Alpha混合

//8.Color:設置頂點光照關閉時使用的顏色

//9.ColorMask:顏色遮罩鼓蜒,當值為零時痹换,相當于關閉所有顏色通道的渲染,取值為RGB\A\0或者RGBA任意組合

//10.Offset:深度偏移

//11.SeparateSpecular:高光顏色都弹,取值為On或者Off

//12.ColorMaterial:顏色集娇豫,當計算頂點光照時,使用每個頂點的顏色

//TextureSetup(紋理)的命令有以下三種

//1.combine:將兩種顏色混合可以是previous(上一次texture的顏色),constant(常量顏色),primary(頂點顏色),texture(紋理顏色)

//2.constantColor:常量顏色

//3.matrix:設置矩陣對紋理坐標進行變換

pass{

Material{

Diffuse[_Color]

}

Lightingon

}

}

//以上所有的子著色器都不能運行的話畅厢,執(zhí)行該回調

FallBack"Diffuse"

}

second:

Shader"CustomLearn/Second"{

properties{

_Color("MainColor",Color)?=?(1,1,1,1)

_SpecColor("SpecColor",Color)?=?(1,1,1,1)

_Emission("Emission",Color)?=?(0,0,0,0)

_Shininess("Shininess",Range(0.01,1))?=0.7

_MainTex("MainTexture",2D)?="White"{}

}

SubShader{

//tag值暗示了要輸出的是什么冯痢,如果輸出的都是非透明物體,寫在Qpaque中框杜,如果想渲染透明或者半透明的物體浦楣,寫在Transparent里面,其他有用的標簽

//“IqnireProject”=true(不受投影影響)

//"ForceNoShadowCasting"="True"(不產(chǎn)生陰影)

//"Queue=XXX"(渲染的順序隊列)

//如果使用Unity做一些透明或者不透明的效果時咪辱,很可能會遇到不透明的物體無法在透明物體后邊顯示出來振劳,這種情況有可能是由shader渲染順序造成的,Queue的值會有以下幾種:

//1.BackGround--最早被調用的渲染油狂,用來渲染天空盒或者背景

//2.Geometry--這個是默認值历恐,用來渲染不透明的物體

//3.Transparent--從后往前的順序渲染透明物體

//4.Overlay--用來渲染疊加效果,是渲染的最后階段

//5.以上的值都對應了一個整數(shù)

//BackGround--1000

//Geometry--2000

//Transparent--3000

//Overlay--4000

//"Queue"="Transparent"+100表示在Transparent之后100的值的Queue上調用专筷,這樣的話就可以通過調整Queue的值弱贼,來確保某些物體一定在另一個物體之前或之后渲染

Tags{"Queue"="Transparent"}

//透明度的混合

BlendsrcAlphaOneMinusSrcAlpha

//SubShader包裝了一個渲染方案,而方案的執(zhí)行是由pass來完成的磷蛹,故可以包含多個pass吮旅,而每個pass包含了渲染一個幾何體的具體代碼

Pass{

Material{

//漫反射顏色

Diffuse[_Color]

//環(huán)境光顏色

Ambient[_Color]

//加亮時光澤度0-1之間,如果為0效果為漫反射的顏色弦聂,1的時候會得到一個細微的亮斑

Shininess[_Shininess]

//物體反射高光的顏色

Specular[_SpecColor]

//自發(fā)光的顏色

Emission[_Emission]

}

//開啟燈光

LightingOn

//開啟頂點光照的平行高光的顏色

SeparateSpecularOn

//設置紋理

SetTexture[_MainTex]{

//紋理的顏色

ConstantColor[_Color]

//混合效果

Combinetexture*?primary?DOUBLE,texture*Constant

}

}

}

FallBack"Diffuse"

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末鸟辅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子莺葫,更是在濱河造成了極大的恐慌匪凉,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捺檬,死亡現(xiàn)場離奇詭異再层,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門聂受,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒿秦,“玉大人,你說我怎么就攤上這事蛋济」鞅睿” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵碗旅,是天一觀的道長渡处。 經(jīng)常有香客問我,道長祟辟,這世上最難降的妖魔是什么医瘫? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮旧困,結果婚禮上醇份,老公的妹妹穿的比我還像新娘。我一直安慰自己吼具,他們只是感情好僚纷,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拗盒,像睡著了一般畔濒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锣咒,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天侵状,我揣著相機與錄音,去河邊找鬼毅整。 笑死趣兄,一個胖子當著我的面吹牛,可吹牛的內容都是我干的悼嫉。 我是一名探鬼主播艇潭,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼戏蔑!你這毒婦竟也來了蹋凝?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤总棵,失蹤者是張志新(化名)和其女友劉穎鳍寂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體情龄,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡迄汛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年捍壤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞍爱。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹃觉,死狀恐怖,靈堂內的尸體忽然破棺而出睹逃,到底是詐尸還是另有隱情盗扇,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布沉填,位于F島的核電站粱玲,受9級特大地震影響,放射性物質發(fā)生泄漏拜轨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一允青、第九天 我趴在偏房一處隱蔽的房頂上張望橄碾。 院中可真熱鬧,春花似錦颠锉、人聲如沸法牲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拒垃。三九已至,卻和暖如春瓷蛙,著一層夾襖步出監(jiān)牢的瞬間悼瓮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工艰猬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留横堡,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓冠桃,卻偏偏與公主長得像命贴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子食听,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容