在Unity3D中的渲染優(yōu)化-優(yōu)化Shader

1.使用Shader中的LOD技術(shù)

Shader的LOD技術(shù)可以控制使用的Shader等級,原理是,只有Shader的值小于某個設(shè)定的值,這個Shader才會被使用,而使用了那些超過設(shè)定值的Shader的物體將不會被渲染執(zhí)行。

例如,我們通常會在SubShader中使用類似下面的語句來指明該Shader的LOD值:

SubShader{

Tags{"RenderType" = ?"Opaque"}

LOD 200

}

我們也可以在Unity Shader的導(dǎo)入面板上看到該Shader的LOD值。在默認(rèn)情況下,允許的LOD等級是無限大的。這意味著,任何被當(dāng)前顯卡支持的Shader都可以被使用。但是,在某些情況下需要去掉一些有復(fù)雜計算的Shade渲染。這時可以使用Shader.maximumLOD或Shader.globalMaximumLOD來設(shè)置允許的最大LOD值。

Unity內(nèi)置的Shader使用了不同的LOD值(Diffuse使用的LOD為200,Bumped Specular的LOD為400)。

2.優(yōu)化shader的代碼

(1)如果可以,盡可能將一些計算放到頂點著色器中進(jìn)行

(2)在片元著色器中盡可能使用低精度的浮點值進(jìn)行計算

(3)在使用插值寄存器把數(shù)據(jù)從頂點著色器傳遞給下一階段時,避免使用過多的插值寄存器。

(4)盡可能不要使用分支語句和循環(huán)語句

(5)盡可能不要使用discard操作,因為這會影響硬件的某些優(yōu)化

(6)對于全屏的屏幕后期處理效果來說,盡量把多個特效合并到一個Shader中。例如,哦我們可以把顏色校正和添加噪聲等屏幕特效在Bloom特效的最后一個Pass中進(jìn)行合成。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容