unity中shader管理建議 —— Shader基礎(chǔ)規(guī)范說明

1.使用的渲染路徑說明

現(xiàn)在游戲內(nèi)使用的渲染管線是 : Forward
所以shader的最低要求是支持Forward渲染路徑。 可以不對延遲渲染做支持。


1001.png

游戲發(fā)布使用的GPU的API為 OPENGLES3(android)和 Metal (ios),所以需要確保在至少在對應(yīng)API編譯時不出現(xiàn)異常。


1002.png

2. 命名方式

游戲的使用的自定義shader(非第三方插件和庫), 需要有一定的命名規(guī)范, 已達見名知意。
防止shader的重復(fù)創(chuàng)建和不能確定shader功能的問題。
游戲內(nèi)的命名可以按如下方式進行處理:


1003.jpg

顏色混合說明:


1004.png

內(nèi)置粒子命名:


1005.png

整體命名規(guī)范: 功能名(通用、牌桌、描邊、特效、水等)+通用前綴+[資源說明]+光照+[混合方式]+[其他描述(霧,模板等)]
具體可以參考unity內(nèi)置shader的命名方式**例如: Common-Transparent-Diffuse (通用-透明-漫反射)

3.著色器細節(jié)處理(Shader LOD設(shè)置)

消耗較大的shader應(yīng)該提供LOD支持,完成對不同性能手機的處理。 LOD原則按unity內(nèi)置的為準(zhǔn)

可為各個著色器分別設(shè)置著色器 LOD(使用 Shader.maximumLOD),也可為所有著色器進行全局設(shè)置(使用 Shader.globalMaximumLOD)。
在自定義著色器中,使用 LOD 命令可設(shè)置任何子著色器的 LOD 值。
Unity 中的內(nèi)置著色器按以下方式設(shè)置 LOD:
-頂點光照 (VertexLit) 類型著色器 = 100
-貼花、反光頂點光照 = 150
-漫射 = 200
-漫射細節(jié)、反光凹凸無光照、反光凹凸頂點光照 = 250
-凹凸、鏡面反射 = 300
-凹凸鏡面反射 = 400
-視差 = 500
-視差鏡面反射 = 600

4. Shader 的變體處理

4.1變體引起的問題:

1、大量的著色器變體會增加游戲打包時間,會讓游戲的總包體積變大;
    2、加載大量的著色器變體會很慢,并且消耗大量的內(nèi)存。

4.2 查看shader的變體

1.點擊著色器文件在Inspector面板中查看


1007.png

就這樣一個普通的新建的SurfaceShader就有569個變體,全編譯會生成569個GPU程序

2.在ShaderVaruantsCollection中查看


1008.png

3.剔除多余著色器變體
1)個別著色器特性,比如使用 #pragma shader_feature的著色器,如果沒有材質(zhì)使用到了這個特性,那么就不會把它打包進去或者刪除對應(yīng)代碼;
2)沒有被任何場景使用到的霧效(Fog)或光照貼圖模式(Lightmap)的著色器變體,也不會打包進去或者刪除對應(yīng)代碼;
變體是如何產(chǎn)生的,可以查看這篇文章:https://docs.unity3d.com/cn/2018.4/Manual/SL-MultipleProgramVariants.html

5. shader 相關(guān)的編輯器

如果后期需要大量使用shader功能的話,建議使用shader的編輯器進行處理,這樣標(biāo)準(zhǔn)容易統(tǒng)一,渲染問題也比較容易定位。
推薦比較好用的兩個shader可視化編輯器:

  1. Shader Graph https://docs.unity3d.com/cn/2018.4/Manual/shader-graph.html
  2. AmplifyShaderEditor https://assetstore.unity.com/packages/tools/visual-scripting/amplify-shader-editor-68570

6.其他 - 參考資源

粒子blend的說明 https://docs.unity3d.com/cn/2018.4/Manual/shader-StandardParticleShaders.html
標(biāo)準(zhǔn)著色器 https://docs.unity3d.com/cn/2018.4/Manual/StandardShaderMaterialCharts.html
舊版著色器 https://docs.unity3d.com/cn/2018.4/Manual/shader-Performance.html
LOD https://docs.unity.cn/cn/2018.1/Manual/SL-ShaderLOD.html
變體 https://docs.unity3d.com/cn/2018.4/Manual/SL-MultipleProgramVariants.html

?著作權(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)容