Unity-ShaderLab:Name&&ShaderLab:舊版光照
語法
為當(dāng)前通道提供?PassName?名稱。請注意,在內(nèi)部,名稱將轉(zhuǎn)換為大寫。
詳細(xì)信息
為通道提供名稱即可讓?UsePass?命令能夠引用該通道。

材質(zhì)和光照參數(shù)用于控制內(nèi)置頂點(diǎn)光照。頂點(diǎn)光照是為每個(gè)頂點(diǎn)計(jì)算的標(biāo)準(zhǔn) Direct3D/OpenGL 光照模型。Lighting on?可開啟光照。光照將受到?Material?代碼塊、ColorMaterial?命令和?SeparateSpecular?命令的影響。
注意:使用頂點(diǎn)程序時(shí),材質(zhì)/光照命令無效;因?yàn)樵谶@種情況下,所有計(jì)算都在著色器中完整描述。建議現(xiàn)在使用可編程著色器,而不是舊版頂點(diǎn)光照。這些情況下,不要使用此處描述的命令,而是自行定義頂點(diǎn)和片元程序來自己執(zhí)行所有的光照、紋理和任何其他操作。
對于任何渲染的幾何體來說,第一個(gè)要計(jì)算的效果就是“頂點(diǎn)著色和光照”。它在頂點(diǎn)級別上運(yùn)行,并計(jì)算在應(yīng)用紋理之前使用的基色。
語法
頂級命令控制是否使用固定函數(shù)光照,以及一些配置選項(xiàng)。主要設(shè)置位于?Material 代碼塊中,下面進(jìn)行了詳細(xì)介紹。
Color
將對象設(shè)置為純色。顏色是用圓括號括起的四個(gè) RGBA 值,或者是用方括號括起的顏色屬性名稱。
Material
Material 代碼塊用于定義對象的材質(zhì)屬性。
Lighting
要使 Material 代碼塊中定義的設(shè)置生效,必須使用?Lighting On?命令啟用光照。如果關(guān)閉光照,則直接從?Color?命令獲取顏色。
SeparateSpecular
此命令將鏡面反射光照添加到著色器通道的末尾,因此鏡面反射光照不受紋理影響。僅當(dāng)使用?Lighting On?時(shí)才有效。
ColorMaterial
使用每頂點(diǎn)顏色代替材質(zhì)中設(shè)置的顏色。AmbientAndDiffuse?將替換材質(zhì)的 Ambient 值和 Diffuse 值;__Emission__ 將替換材質(zhì)的 Emission 值。
Material 代碼塊
此代碼塊包含有關(guān)材質(zhì)如何對光線做出反應(yīng)的設(shè)置。可省略這些屬性中的任何一個(gè),在這種情況下它們默認(rèn)為黑色(即沒有效果)。
漫射顏色 (Diffuse color):漫射顏色分量。這是對象的基色。
環(huán)境顏色 (Ambient color):環(huán)境顏色分量。這是?Lighting 窗口中設(shè)置的環(huán)境光產(chǎn)生的對象光照顏色。
鏡面反射顏色 (Specular color):對象的鏡面高光顏色。
光澤度數(shù)字 (Shininess number):高光的清晰度,介于 0 到 1 之間。如果為 0,您會看到一個(gè)巨大的高光,看起來很像漫射光照;如果為 1,您會看到一個(gè)微小的斑點(diǎn)。
發(fā)光顏色 (Emission color):任何光源均未照射到對象時(shí)的對象顏色。
照射到對象的光源的完整顏色為:
環(huán)境光?*?Lighting 窗口中的 Ambient Intensity 設(shè)置?+ (光源顏色 *?漫射?+ 光源顏色 *?鏡面反射) +?發(fā)光
對于照射對象的所有光源,重復(fù)該等式的光源部分(圓括號內(nèi))。
通常情況系會希望保持漫射和環(huán)境光顏色相同(Unity 的所有內(nèi)置著色器都會如此)。
示例
始終以純紅色渲染對象:
將對象著色為白色并應(yīng)用頂點(diǎn)光照的基本著色器:
以下是一種擴(kuò)展版本,可將材質(zhì)顏色添加為材質(zhì)檢視面板 (Material Inspector) 中的可見屬性:
最后是一個(gè)完整的頂點(diǎn)光照著色器(另請參閱?SetTexture?參考頁面):