在unity中使用UberShader和Shader变种管理

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

posted @ 2017-02-04 15:39  潜水的牛  阅读(2913)  评论(0编辑  收藏  举报