最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity-使用替換的著色器進(jìn)行渲染

2021-04-16 09:26 作者:unity_某某師_高錦錦  | 我要投稿

有些渲染效果需要使用一組不同的著色器來渲染場(chǎng)景。例如,良好的邊緣檢測(cè)要求紋理具有場(chǎng)景法線,這樣才能檢測(cè)出表面方向不同的邊緣。其他效果可能要求紋理具有場(chǎng)景深度,諸如此類。為此,可使用所有對(duì)象的替換著色器來渲染場(chǎng)景。

應(yīng)通過腳本使用函數(shù)?Camera.RenderWithShader?或?Camera.SetReplacementShader?來實(shí)現(xiàn)著色器替換。這兩個(gè)函數(shù)均采用?shader?和?replacementTag

工作方式如下:攝像機(jī)按正常方式渲染場(chǎng)景,對(duì)象仍使用自己的材質(zhì),但要更改最終使用的實(shí)際著色器:

  • 如果?replacementTag?為空,則使用指定的替換著色器來渲染場(chǎng)景中的所有對(duì)象。

  • 如果?replacementTag?不為空,則對(duì)于將要渲染的每個(gè)對(duì)象:

    • 查詢真實(shí)對(duì)象的著色器以獲取標(biāo)簽值。

    • 如果沒有該標(biāo)簽,則不渲染對(duì)象。

    • 在替換著色器中找到一個(gè)子著色器,并且該子著色器的一個(gè)給定標(biāo)簽具有找到的值。如果找不到此類子著色器,則不渲染對(duì)象。

    • 現(xiàn)在,使用該子著色器來渲染對(duì)象。

因此,比如說,如果所有著色器都要有一個(gè)值為“Opaque”、“Transparent”、“Background”或“Overlay”的“RenderType”標(biāo)簽,則可編寫一個(gè)替換著色器,該著色器只使用一個(gè)具有 RenderType = Solid?標(biāo)簽的子著色器來渲染實(shí)體對(duì)象。在替換著色器中找不到其他標(biāo)簽類型,因此不會(huì)渲染對(duì)象?;蛘吣部梢詾椴煌癛enderType”標(biāo)簽值編寫若干子著色器。順便提一下,Unity 的所有內(nèi)置著色器都設(shè)置了一個(gè)“RenderType”標(biāo)簽。

光照著色器替換

使用著色器替換時(shí),將使用攝像機(jī)上配置的渲染路徑來渲染場(chǎng)景。這意味著用于替換的著色器可以包含陰影和光照通道(您可以使用表面著色器進(jìn)行著色器替換)。這對(duì)于渲染特殊效果和場(chǎng)景調(diào)試很有用。

Unity 內(nèi)置著色器中的著色器替換標(biāo)簽

Unity 的所有內(nèi)置著色器都設(shè)置了一個(gè)“RenderType”標(biāo)簽,可以在使用替換著色器進(jìn)行渲染時(shí)使用此標(biāo)簽。標(biāo)簽值如下:

  • __Opaque__:大部分著色器(法線、自發(fā)光、反射和地形著色器)。

  • __Transparent__:大部分半透明著色器(透明、粒子、字體和地形附加通道著色器)。

  • __TransparentCutout__:遮罩透明度著色器(透明鏤空、兩個(gè)通道植被著色器)。

  • __Background__:天空盒著色器。

  • __Overlay__:光環(huán)、光暈著色器。

  • __TreeOpaque__:地形引擎樹皮。

  • __TreeTransparentCutout__:地形引擎樹葉。

  • __TreeBillboard__:地形引擎公告牌樹。

  • __Grass__:地形引擎草。

  • __GrassBillboard__:地形引擎公告牌草。

內(nèi)置場(chǎng)景深度/法線紋理

攝像機(jī)內(nèi)置了渲染深度或深度+法線紋理的功能(可能在某些效果中需要該功能)。請(qǐng)參閱攝像機(jī)深度紋理頁面。請(qǐng)注意,在某些情況下(取決于硬件),可以使用著色器替換方法在內(nèi)部渲染深度和深度+法線紋理。因此,務(wù)必在著色器中設(shè)置正確的“RenderType”標(biāo)簽。

代碼示例

Start() 函數(shù)指定替換著色器:

此函數(shù)請(qǐng)求 EffectShader 使用 RenderType 鍵。對(duì)于所需的每個(gè) RenderType,EffectShader 都有一個(gè)鍵/值標(biāo)簽。Shader 應(yīng)如下所示:

SetReplacementShader 將檢查場(chǎng)景中的所有對(duì)象,不使用它們的普通著色器,而是使用第一個(gè)具有指定鍵的匹配值的子著色器。在此示例中,任何對(duì)象的著色器若具有 Rendertype=“Opaque” 標(biāo)簽,都將被 EffectShader 中的第一個(gè)子著色器替換,任何對(duì)象若具有 RenderType=“SomethingElse” 著色器都將使用第二個(gè)替換子著色器,以此類推。如果任何對(duì)象的著色器不具有替換著色器中指定鍵的匹配標(biāo)簽值,則不會(huì)渲染這樣的對(duì)象。


Unity-使用替換的著色器進(jìn)行渲染的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
普格县| 榆树市| 曲周县| 巫溪县| 远安县| 台中县| 资溪县| 建德市| 阜南县| 沭阳县| 卓资县| 南昌县| 安溪县| 丹东市| 揭东县| 中牟县| 连平县| 贞丰县| 呼图壁县| 东源县| 富蕴县| 临汾市| 库伦旗| 延吉市| 贵溪市| 庐江县| 塘沽区| 高雄县| 西宁市| 井研县| 旬阳县| 潼关县| 贵阳市| 荆门市| 临海市| 秦安县| 梁平县| 恩平市| 扬中市| 内江市| 阳山县|