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

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

CEDEC2020のセッションシリコンスタジオが発表した、リアルタイムレイトレーシング(以下、RTRT)とEnlighten(エンライトゥン)の組み合わせによるHybrid型グローバルイルミネーション(GI)。高品質なGIを少ない計算量で実現できる本手法は、ゲームをはじめとするインタラクティブコンテンツでの実用化が期待されている。本記事では、その詳細を解説する。

※本記事内の画像は全て開発中のものです。
※本記事は月刊『CGWORLD + digital video』vol. 267(2020年11月号)掲載の「リアルタイムレイトレーシングとEnlightenによるHybrid型GI」を再編集したものです。

TEXT_尾形美幸 / Miyuki Ogata(CGWORLD)

  • シリコンスタジオ
    本記事で紹介するEnlightenに加え、ポストエフェクトミドルウェアYEBIS、リアルタイムレンダリングエンジンMizuchiなど、高度なミドルウェアを開発。その提供先はゲーム業界だけに留まらず、CG映像・自動車・建築業界など広範囲にわたる。クリエイター職の派遣・紹介に特化した人材事業も展開。
    www.siliconstudio.co.jp

Enlighten 3.11では次世代コンソール機もサポート

EnlightenはイギリスのGeomericsが開発したリアルタイムGIミドルウェアで、2017年に開発・販売・サポート権などがシリコンスタジオに移管された。2020年9月にはEnlighten 3.11(SDK版・Unreal Engine 4版)がリリースされ、次世代コンソール機の正式サポートも始まった。近年では『State of Decay 2』(2018)、『GOD EATER 3』(2018)、『eFootball ウイニングイレブン 2020』(2019)などの開発に採用され、フォトリアルな間接光表現やライティングワークフローの効率化に貢献している。

▲【左】EnlightenによるGIを適用しない場合。穴から差し込む直接光が当たっている領域以外は、完全に真っ暗になっている/【右】EnlightenによるGIを適用した場合。光源から届く光が物体表面を反射していく様子をシミュレートしており、その結果、直接光が届かない領域にもやわらかい間接光が伝搬している。Enlightenは、このような間接光表現をリアルタイムに実行できる


そんなEnlightenの最新機能とRTRTを組み合わせたHybrid型GIの効果やパフォーマンスについて、CEDEC2020で発表した吉野 潤氏(リードエンジニア)と蘇 紹華氏(エンジニア) に話を聞いた。

▲【左】吉野 潤氏(リードエンジニア)/【右】蘇 紹華氏(エンジニア)


「Enlightenはラジオシティ法に基づいてGIを計算します。しかしラジオシティ法は計算負荷の高い手法なので、静的なジオメトリ情報は事前に計算し、最終的な光の伝搬のみリアルタイムに計算することで動的なGIを実現しています。われわれは前者をプリコンピュート、後者をランタイムと呼んでいます」(吉野氏)。プリコンピュートではCPU群による並列処理も活用しており、ランタイムはCPUで非同期に処理している。「ランタイムではクオリティとレイテンシがトレードオフになっており、パフォーマンス調整を柔軟に行えます。加えて、Enlightenはいかなるゲームエンジンにもインテグレート可能です」(蘇氏)。

インテグレーション時には、まずエディタ側でEnlighten向けのプロパティ設定を行い、ゲームエンジン側と必要情報をやり取りしながらプリコンピュートを実行。その結果をランタイム向けに変換する。ゲーム実行時には、ランタイムの結果がライトマップ・プローブ・環境マップ(以下、キューブマップ)などのテクスチャとして出力され、これらをシェーダからサンプリングすることでGIが適用される。

▲【左】橙色の領域はライトマップ、緑色の領域はプローブを表している。Unreal Engine 4(以下、UE4)版では、視覚的に確認できる上のようなデバッグビューが実装されており、設定内容を容易に検証できるようになっている/【右】ライティング解像度を表しており、緑:高解像度(約4m/px)橙:中解像度(約10m/px)紫:低解像度(約20m/px)となっている。前述のライトマップ、プローブも含め、Enlightenが必要とするプロパティ設定項目の一例だ

フォトリアルな間接光の変化をリアルタイムにアップデート

Hybrid型GIの解説に入る前に、EnlightenによるリアルタイムGIの導入メリットを整理しておこう。第1のメリットは、インゲームの時間や天候をシームレスに変化させつつ、それに伴うフォトリアルな間接光の変化も表現できる点だ。第2のメリットは、ライティングのトライ&エラーを気軽に行えるため、シーンのブラッシュアップのスピードが格段に向上する点だ。Enlightenを使用した場合、シーン作成後に前述のプリコンピュートを実行しておけば、ライトの配置・調整時のGIへの影響がリアルタイムにアップデートされる。一方で、非リアルタイムGI手法のベイク(陰影の焼き付け)を用いた場合には、ライト編集時の影響を確認できるまでに長い待ち時間が発生してしまう。

▲EnlightenによるリアルタイムGIのデモ映像。太陽の位置の変化に伴い、間接光による陰影がリアルタイムに変化している


▲Enlightenを使用した場合、プリコンピュート完了後は、ライト編集時のGIへの影響を即座に確認できる。なお、Enlighten 3.10(2019年11月リリース)では、大規模シーンのプリコンピュート時間を短縮するための最適化が行われた

Topic 1:レイトレーシングリフレクションとEnlightenの組み合わせ

さて、ここからは本題に入る。Enlightenの開発エンジニアは、RTRTに対する3つの取り組みを実施している。以降では、それらを順番に解説する。第1の取り組みは、レイトレーシングリフレクション(以下、RTリフレクション)とEnlightenの組み合わせだ。リフレクションは光源やカメラの向きに応じて反射するレイの方向が変わるため、ライトマップやプローブに結果を保存できない。そこで一番よく使われるのがキューブマップで、ベイクを使わずリアルタイムに更新する場合は、キューブマップのサイズを制限する必要がある。なお、グロッシーリフレクションもミップマップを使えば表現できる。Enlightenでは現在この手法を採用しており、キューブマップの更新をCPU側で行なっている。更新負荷は軽く、GPU側はCPU側で生成されたキューブマップをサンプリングするだけでリフレクションを表現できる。

▲【上】Enlightenによるリフレクション。光源の角度が変わると、【下】キューブマップの直接光と間接光がリアルタイムに更新される。以降で紹介するデモシーンの光源は、ムーバブルなディレクショナルライトとスカイライトのみで、ベイクされた間接光はない。つまり、全ての間接光がリアルタイムに更新される。本シーンはUE4をベースにつくってあるが、同じ技術をほかのゲームエンジンにも応用できる


一方、RTリフレクションはリアルタイムにシーン全体を更新できるため、画面外のジオメトリもリフレクションに反映される。精度の高い結果を生成できる点もメリットだ。ただし、グロッシーリフレクションの場合はレイを複数飛ばす必要があるため、パフォーマンスが低下し、ノイズが増える可能性がある。リフレクションにセカンドバウンスを追加すると処理が重くなるという問題もある。

▲RTリフレクションによる直接光だけを反映させた結果。画面右側の球体ほどグロッシーリフレクションの値が高くなっており、ノイズが目立つ

Enlightenのフォールバック機能によってパフォーマンスが向上

そんなRTリフレクションにEnlightenを組み合わせると、高いパフォーマンスでフォトリアルな結果を生成できるのに加え、前述の問題も解決できる。ラフネスが閾値を超えた場合、またはマックスバウンスを超えた場合に、Enlightenのキューブマップにフォールバックする(入れ替える)機能を追加することで、パフォーマンスを向上させつつ、ノイズを減らすことが可能となる。

▲RTリフレクションによる直接光に、Enlightenによる間接光を追加した結果。セカンドバウンスが計算されておらず、球体の隣接部分は黒くなっている


▲Enlightenのキューブマップにフォールバック機能を追加した結果。ラフネスの閾値を超えた右側の球体とセカンドバウンスの部分がEnlightenのキューブマップに入れ替えられている

パフォーマンスの向上を実現しつつ、ノイズを減らす

▲パフォーマンステストの結果。Enlightenのフォールバック機能によって、パフォーマンスが向上していることがわかる。なお、本テストでは、マックスバウンスを1、サンプリング数も1に設定。GPUはNVIDIAのGeForce RTX 2080 Tiを使用


©Silicon Studio Corp., all rights reserved. 

次ページ:
Topic 2:Ray-traced Enlighten Visibility

特集