Unity - 场景曝光问题 - 隐藏的GraphicsSettings.asset的m_LightsUseLinearIntensity属性 - 线性空间的灯光强度

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


原因

经过半天时间排查。。。
发现是美术同学使用了以前我们一个老项目的配置方式来制作的场景
因为这个项目以前很多项目配置是走 脚本来设置的
而刚刚好有一些属性再 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;
    }
}

效果如下
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值