Unity Shader - 在 URP 获取 Ambient(环境光) 颜色

之前在 Unity Built-in 管线中,我们在自定义 shader 中,可以使用一下代码来获取 Ambient 环境光的颜色:

fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.rgb

但是在 Unity URP 中,发现不生效了,虽然 URP 中也有定义这个宏,定义在:#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl"#define UNITY_LIGHTMODEL_AMBIENT (glstate_lightmodel_ambient * 2)

后来发现在 unity 论坛中有人问同样的问题:Get Ambient Color in custom shader

最终给出这 half3(unity_SHAr.w, unity_SHAg.w, unity_SHAb.w) 来获取 Lighting Setting 中的处理后的 SH 环境光颜色,代码如下:

            half4 frag(v2f i) : SV_Target
            {
                half3 ambient = half3(unity_SHAr.w, unity_SHAg.w, unity_SHAb.w);
                return half4(ambient, 1);
            }

运行效果:
在这里插入图片描述

感谢 Bigmoth 分享的其他 更适合的 _GlossyEnvironmentColor.rgb 的方式

在这里插入图片描述


References

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值