摸鱼指南NOTE1:开始记录一些在游戏开发维护过程遇到的问题,以及这些问题背后的原因和解决方法。
这篇主要是记录排查问题的一些思路,可以考虑考虑如何更高效地找到问题所在,也可以更好地摸鱼^^
问题:shader_feature优化导致显示异常
事情的起因是一次优化,为了控制shader变体的数量,减少打包出来的shader体积,所以将shader中的几个宏定义从multi_compile改成了shader_feature。
修改前:
#pragma multi_compile _ LIGHTMAP_ON
#pragma multi_compile _NORMALMAP
#pragma multi_compile _PARAMETERMAP
#pragma multi_compile _ SCENE_SPOTLIGHT_DIFFUSE_ON
修改后:
#pragma shader_feature _ LIGHTMAP_ON
#pragma shader_feature _NORMALMAP
#pragma shader_feature _PARAMETERMAP
#pragma shader_feature _ SCENE_SPOTLIGHT_DIFFUSE_ON
在本地Editor测试一遍之后觉得毫无问题,但是提交打包后却发现,修改过后的材质显示的不那么对了OTL,以下两张图分别为修改前后的效果,可见修改后丢了部分信息。


本文记录了在Unity中使用shader_feature进行优化时遇到的显示异常问题。通过分析和排查,发现由于shader_feature与multi_compile在变体打包上的区别,导致LIGHTMAP_ON和SCENE_SPOTLIGHT关键词未正确打包,进而引发渲染错误。解决方案是将这些关键词改回multi_compile,强调在优化时需注意Unity内置关键字的特殊性。
最低0.47元/天 解锁文章
5399

被折叠的 条评论
为什么被折叠?



