在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