この記事はKrShaderSystemHの環境光(ディフューズ)に関する解説です。
KrShaderSystemLではEnvC.xを使用することで偽の環境光を足せました。KrShaderSystemHでも同じことが可能ですが、状況によっては必ずしも必要というわけではありません。EnvC.xを使用する場合は下準備が必要だったり、適したものを選ぶ必要がありましたがKrShaderSystemHではそれをする必要がない場合があります。
KrShaderSystemHにあってKrShaderSystemLにないもの、それはライトスペースでの動的環境光です。詳しくは省きますが、直接平行光からの環境光、つまりシャドウマップ座標系での簡易的なGIとなります。この値はMainSystemD.xのSi値が強さとなります(Siを0にすればなくなります)。
この処理はシャドウマップの範囲内で中心に近いほど適用されます。それより外側では偽の一律の環境光(EnvCではなくグレー一色)が適用されるため、シャドウマップの場所と大きさに注意してください(シャドウマップの位置はMainSystem.xの位置、大きさはSi値で変更される)
下の画像はKrShaderSystemHでのこの環境光の有無を比較したものです。環境光がある場合では直接光のあたった草などからの反射で全体的に緑色の環境光が加算されていることがわかります。
(両方ともSSGIもオフししています)
↓ライトスペースでの動的環境光なし
↓ライトスペースでの動的環境光あり
SSGIでは画面に写っているものだけしか反映されませんでしたが、この環境光計算では視点の影響を受けません。そのためより使いやすいかと思います(動作自体は重いと思います)。
KrShaderSystemHではSSGIも使用しています(MainSystemD.xのRxで強さ変更)。また、SSGI、SSRともにKrShaderSystemLに比べて見た目が向上しています。これらは環境光に対するデノイズ見直しによるものが大きいと思われます。同様のデノイズ処理はライトスペースでの動的環境光でも行っています。
↓直接光のみ
↓直接光+ライトスペースでの間接光
↓直接光+ライトスペースでの間接光+SSGI
↓他エフェクトを足した状態での最終的な実際のMMDでの出力