現在Preview 8までリリースされているUE4.23から新機能としてSSGI(Screen Space Global Illumination)が導入されます。
これは4.23段階では実験的機能(Experimental)なものとして提供されており、まだ正式に使える状態ではありませんが、かなり綺麗に動いている状態です。
今回追加されたSSGIは全てリアルタイムに処理され、焼き付けられたライトマップの上に動的光源を追加することができます。UE4には既に他のGI機能がありますが、それらとも別物となります。
使い方は以下のコマンドをコンソール上で入力するだけです。
r.SSGI.Quality x
x には"1~4"の数値を入力します。0がデフォルトでこの状態ではSSGIが効いていないので、1以上の値を設定します。4が一番描画品質が高い分、描画負荷も高くなります。
ではここから実際に使ってみた画像を載せてみます。
SSGIを適用してみた
今回はシーケンサーデモの室内に意図的にエミッシブカラーを高くしたスタティックメッシュを配置し、その光源で背景が程度影響を受けているのかをチェックしてみます。
まずはSSGI OFFの状態
次にSSGI ONの状態
少しわかりにくいので拡大した画像を縦に並べてみました。
ご覧の通り、SSGIが効いていると、OFFの状態に比べてかなり広範囲に光が影響していることがわかります。またこれらは動的光源なので、スタティックメッシュ以外のスケルタルメッシュにもしっかりと影響があります。
ハッキリとわかるくらいかなりイイ感じです!
SSAOも大きく変化
またSSGIを実装する上で、SSAO(Screen Space Ambient Occlusion)も再実装されており、ほぼ別物のように変化しています。
まずはSSGIがなしの状態のSSAO。
次にSSGIがありの状態のSSAO。
こちらは非常にわかりやすい!!
設定を詰めていないとは言え、ほぼ別物です。特に壁のタイル状になっている部分がしっかりと奥行が認識できるようになっているのが素晴らしい。これだけ違っていたらぜひ使ってみたいとも思いますね。
スクリーンスペースの欠点
とはいえ、スクリーンスペースを使った技術なので、やはり欠点があります。それは画面内に映る部分の光しか反映されないということです。動画で観るとよくわかります。
画面内大きく映るのであればかなり効果が高いですが、一部分にしか映らない場合には効果が薄いです。全く映らない場合には照明の変化に違和感があることにも注意が必要です。