【環境】 Unity2021.3.16f1, URP12.1.8, Deferred
以前 は Forward で確認をしましたが、今回は Deferred でライトの白飛びをなんとかしてみます
Deferred では Forward とはライトの処理箇所が異なっており、com.unity.render-pipelines.universal/Shaders/Utils/Deferred.hlsl
でライトの計算をしています
Light UnityLightFromPunctualLightDataAndWorldSpacePosition(PunctualLightData punctualLightData, float3 positionWS, half4 shadowMask, int shadowLightIndex, bool materialFlagReceiveShadowsOff) { ・・・ // full-float precision required on some platforms float attenuation = DistanceAttenuation(distanceSqr, punctualLightData.attenuation.xy) * AngleAttenuation(punctualLightData.spotDirection.xyz, lightDirection, punctualLightData.attenuation.zw); ・・・
今回はライトの減衰を制御して強すぎないようにしてみます
float attenuation = DistanceAttenuation(distanceSqr, punctualLightData.attenuation.xy) * AngleAttenuation(punctualLightData.spotDirection.xyz, lightDirection, punctualLightData.attenuation.zw); +++ attenuation = min(attenuation, 0.01);
これで白飛びしないで明るくさせることができました