うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】ライトが強いと白飛びするのをなんとかしてみる【Forward】

【環境】 Unity2021.3.16f1, URP12.1.8, Forward

通常 Light の Intensity を大きくすれば遠くまで明るくできるが、近い部分がライトの色が強く反映されてしまう

これを URP をカスタマイズすればなんとかできるんじゃないかと思ったのでやってみる

URP のカスタマイズはこちら を参考にしてください

追加ライトまわりの処理をしているのが com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl の以下の関数

ライトの色を加算しているために色が濃くなっているようです

half3 CalculateLightingColor(LightingData lightingData, half3 albedo)
{
 
    ・・・
 
    if (IsLightingFeatureEnabled(DEBUGLIGHTINGFEATUREFLAGS_ADDITIONAL_LIGHTS))
    {
        lightingColor += lightingData.additionalLightsColor;
    }
}

ということでここに以下のように制限を加えてみます

---        lightingColor += lightingData.additionalLightsColor;
+++      lightingColor += min(lightingData.additionalLightsColor, half3(1, 1, 1) * 0.2);

結果白くなりすぎず、ちょっと明るい程度まで色を落とすことができました