文章目录
原因
经过半天时间排查。。。
发现是美术同学使用了以前我们一个老项目的配置方式来制作的场景
因为这个项目以前很多项目配置是走 脚本来设置的
而刚刚好有一些属性再 unity eidtor 是没有公开的
然后手动的对应的配置修改后即可解决
修复
开始我只能通过对比:FrameDebugger 的参数差异
发现端倪:
发现没有地方可设置的unity_Lightmap_HDR参数
我的工程 shader 参数

美术同学的 shader 参数:

通过 builtin shader 的搜索,我大概是知道处理 color space 和 RGBM 相关编解码相关的,但是还是不知道是在哪里设置的
然后搜索到某乎上的一位大佬的文章:Unity3D ShaderLab 之 DecodeLightmap解读
阅读后,只是对 unity_Lightmap_HDR 的作用进一步肯定,然后还是不能找到 unity editor 中哪里可以设置
发现 隐藏的GraphicsSettings.asset的m_LightsUseLinearIntensity属性
经过千辛万苦,用了排除法 + compare tool(svn differ 或是 beyond comparer)
发现美术同学制作的场景中的项目配置 m_LightsUseLinearIntensity = 1,启用该值,就让 unity_Lightmap_HDR 启用了
而我们项目使用的是 m_LightsUseLinearIntensity = 0
所以同步该值之后就顺利解决了,我只能说:unity 对开发者一直不太友善,why?
在 Unity Editor 下没有任何地方可以修改,只能通过在 GraphicsSettings.asset 中 手动修改 m_LightsUseLinearIntensity 的值,或是直接通过 GraphicsSettings.lightUseLinearIntensity 来修改
Unity和Substance Painter的Look Dev显示校准

修复前

修复后

我们可以在运行时,调整:
public class ToggleLightLinear : MonoBehaviour
{
public bool linearLightIntensity;
private void Update()
{
GraphicsSettings.lightsUseLinearIntensity = linearLightIntensity;
}
}
效果如下

博客讲述了在Unity中遇到光照问题的解决过程,原因是美术同学使用了旧项目配置,导致无法设置unity_Lightmap_HDR参数。通过对比FrameDebugger和搜索资料,发现GraphicsSettings.asset的m_LightsUseLinearIntensity属性被设置为1,而项目原本设置为0。修复方法是同步该值,可在运行时通过代码调整GraphicsSettings.lightsUseLinearIntensity。修复后,光照效果正常。
9026

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



