>   >  リアルタイムレイトレーシングとEnlightenによるHybrid型GI
リアルタイムレイトレーシングとEnlightenによるHybrid型GI

リアルタイムレイトレーシングとEnlightenによるHybrid型GI

Topic 2:Ray-traced Enlighten Visibility

RTRTに対する第2の取り組みは、ビジビリティ(Visibility)だ。Enlightenのランタイムは、光源情報に加え、そのシャドウ情報も必要とする。Enlightenではあらかじめシーン内に数多くのサンプリングポイントを生成しており、これが影に入っている場合はビジビリティの値が0になる。この値が、シャドウ情報としてランタイムに提供される。正しいビジビリティを用いると、ライティング時のライトリークを防ぎ、自然な間接光を表現できる。

▲Ray-traced Enlighten Visibilityの図解。シーン内のサンプリングポイントから光源にシャドウレイを飛ばし、その結果をビジビリティに記録する

RT Enlighten Visibilityは全てのタイプの光源に対応

従来のEnlighten(SDK版)では、シャドウ情報はゲームエンジンの実装に任せ、レイキャスティング、シャドウマップのサンプリングなどを用いるのが一般的だった。新たに追加されるRay-traced Enlighten Visibilityでは、サンプリングポイントから光源にシャドウレイを飛ばし、その結果をビジビリティに記録する。本機能は理論上レイトレーシングをサポートした全てのゲームエンジンに適用でき、さらに全てのタイプの光源に対応できる。飛ばすレイはシャドウレイのみでデノイザーも必要ないため、かなり軽量で高いパフォーマンスの機能となっている。

▲Ray-traced Enlighten Visibilityのデモ映像。天井の窓の開閉によって光源の一部が遮断され、トンネルの奥に光が届きにくくなる様子が自然な間接光によって表現されている。本デモのサンプリングポイント数は最大4万で、GeForce RTX 2060を用いた場合の処理時間は0.04ms程度だった

Topic 3:レイトレーシングファイナルギャザーとEnlightenの組み合わせ

RTRTに対する第3の取り組みは、レイトレーシングファイナルギャザー(以下、RTファイナルギャザー)とEnlightenの組み合わせだ。一般的に間接光のレンダリングでは、スペキュラやリフレクションと、ディフューズを分けて処理する。後者はカメラの向きを変えても見た目が変わらないため、ライトマップやプローブに結果を保存することが多い。Enlightenでディフューズを処理する場合は、事前計算されたデータをベースに、シーン全体における光源からの光のバウンスをシミュレートし、バウンスした面にその結果を記録する。この結果がライトマップやプローブに保存され、レンダリング時にサンプリングすることで間接光が生成される。Enlightenによるライティングの主なメリットは、無限バウンスが得られること、安定した結果が得られること、GPU負荷が軽いことの3点だ。その反面、ディテールはライトマップピクセルの大きさに制限され、移動物体は事前計算に含まれないため、バウンスは計算できない。

▲Enlightenでのディフューズの処理方法の図解。【上】シーン全体におけるスポットライトによる直接光からの光のバウンスをシミュレートし、【下】バウンスした面にその結果を記録している


▲Enlightenによるディフューズ処理のデモ映像(ディフューズ以外も計算)


▲Enlightenによるディフューズ処理のデモ映像(ディフューズのみ計算)。間接光がリアルタイムに更新されているが、移動物体である青色の列車からのバウンスは計算されていない


一方で、RTファイナルギャザーでは画面上のピクセル(スクリーンピクセル)からレイを飛ばし、ヒットしたポイント(ギャザーポイント)のライティング情報をまとめる。実質はファーストバウンスのシミュレーションとも言える手法で、リアルタイムでのレンダリングが可能だ。ほかのGI手法と併用することで自然な間接光を表現できるため、シリコンスタジオでは、手始めにUnreal Engine 4(以下、UE4)のRTファイナルギャザーとEnlightenを組み合わせる手法を検証した。

▲RTファイナルギャザーでのディフューズの処理方法の図解。【上】スクリーンピクセルからギャザーポイントにレイを飛ばし、【中】そのギャザーポイントから光源にシャドウレイを飛ばしている。【中】では左上のポイントのみがレイのトレースに成功している。【下】最後に、ギャザーポイントで得られたライティング情報をスクリーンピクセルにまとめることで間接光の計算結果を得る


▲レイトレーシングファイナルギャザーによるディフューズ処理のデモ映像(ディフューズのみ計算)。青色の列車からのライトバウンスも計算されているが、ややノイジーな結果となっている


©Silicon Studio Corp., all rights reserved. 

次ページ:
RTファイナルギャザーとEnlightenの制限を相互補完し、パフォーマンスを最大化

特集