Unity Shader打包:multi_compile与shader_feature

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

摸鱼指南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,以下两张图分别为修改前后的效果,可见修改后丢了部分信息。

修改前的路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值