Unity有兩種產生shader變種的方式:
|
multi_compile |
shader_feature |
適用情況 |
整體開關,如陰影開關,畫面質量級別等 |
逐Material特性,如是否使用法線貼圖,brdf選項等 |
編譯情況 |
Build時會窮舉編譯所有變種 啟動時會加載所有變種 過多的變種會導致內存耗盡直接崩潰(大約11個multi_compile) |
僅編譯和加載實際使用到的變種。具體時機尚不明晰。 |
用途 |
用於測試所有變種中是否有錯 |
大量變種時只能用它 |
補充:不要混合使用shader_feature和UsePass,有真機上無法編譯的問題(報錯:找不到vertex shader)。
將UsePass內容直接復制粘貼可以正常運行,multi_compile也可以和UsePass正常搭配使用。
我的測試環境是Unity5.3.6,iphone5S,metal