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

歡迎光臨散文網(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)遵守國家法律
丰原市| 天气| 安多县| 昆山市| 旌德县| 定南县| 柘荣县| 友谊县| 准格尔旗| 通海县| 夹江县| 阳春市| 新兴县| 扶沟县| 萝北县| 永州市| 铜陵市| 香河县| 织金县| 随州市| 奉贤区| 中卫市| 从化市| 安达市| 聂荣县| 禄劝| 绵阳市| 响水县| 博乐市| 林州市| 伊宁市| 肃南| 平泉县| 天峨县| 新巴尔虎右旗| 安阳市| 龙口市| 陆良县| 晋中市| 阳新县| 定远县|