Unity-ShaderLab:SubShader
2021-04-11 09:47 作者:unity_某某師_高錦錦 | 我要投稿
Unity 中的每個(gè)著色器都包含一個(gè)子著色器列表。當(dāng) Unity 必須顯示網(wǎng)格時(shí),它將找到要使用的著色器,并選擇在用戶的顯卡上運(yùn)行的第一個(gè)子著色器。
語(yǔ)法
將子著色器定義為可選標(biāo)簽、通用狀態(tài)和通道定義列表。
詳細(xì)信息
子著色器定義渲染通道的列表,并且可選擇性地設(shè)置所有通道共同的任意狀態(tài)。此外,還可以設(shè)置子著色器專(zhuān)用的標(biāo)簽。
當(dāng) Unity 選擇要用于渲染的子著色器時(shí),它會(huì)為每個(gè)定義的通道 (Pass) 渲染一次對(duì)象(并且數(shù)量可能由于光交互而增加)。由于對(duì)象的每次渲染成本都很高,因此應(yīng)以盡可能少的通道數(shù)量定義著色器。當(dāng)然,有時(shí)在某些圖形硬件上,所需的效果不能在單個(gè)通道中完成;那么您別無(wú)選擇,只能使用多個(gè)通道。
每個(gè)通道定義可以是常規(guī) Pass、Use Pass?或?Grab Pass。
Pass 定義中允許的任何語(yǔ)句也可能出現(xiàn)在子 Subshader 代碼塊中。這將使所有通道都使用這一“共享”狀態(tài)。
示例
以上子著色器定義了單個(gè)通道 (Pass),用于關(guān)閉光照并且只顯示一個(gè)名為?_MainTex?的紋理網(wǎng)格。
標(biāo)簽: