レイ トレーシングとは
しかしまずは、レイ トレーシングとは何か、簡単に定義しておきましょう。そして、リアルタイム レイ トレーシングが出現する前にゲーム エンジンで伝統的に使われてきたレンダリング方法である、ラスタライズとの違いについて、概要を確認します。レイ トレーシングとは、最終的なレンダリングにおける各ピクセルの色を決定する方法です。そのために、カメラから進みシーン内をバウンスする光の経路をトレースして、その経路で色の収集と反映を行っていきます。光の物理的な振る舞いを再現することで、ラスタライズよりもはるかにフォトリアルな結果を得ることができます。たとえば、ソフトでディテールに富んだ影や、画面外のオブジェクトでの反射を表現できます。
一方、ラスタライズは、後方から前方に向かって、シーンのオブジェクトを描画していきます。そのために、変換マトリックスを使って 3D オブジェクトを 2D 平面にマッピングします。メッシュに格納された情報 (色、テクスチャ、法線) に基づいて各ピクセルの色を決定し、シーンのライティングと組み合わせます。一般的に、ラスタライズはレイ トレーシングよりもずっと高速に動作しますが、リアルな反射、透過、アンビエント オクルージョンなど、バウンスした光に依存する効果を描写することはできません。
技術的な触媒
過去数十年にわたり、レイ トレーシングは、最もリアルなイメージを追求する人々によって、長編映画で使用されてきました。しかし、ごく最近まで、映画の解像度でレイ トレーシングを行うには、1 フレームあたり数時間、あるいは数日かかることもありました。レイ トレーシングを利用したフレームを 24 fps 以上でレンダリングするというのは、想像し難いことでした。そこに、2 つの革新的な技術が時を同じくして登場しました。Microsoft の DirectX Raytracing (DXR) フレームワークと、NVIDIA の RTX プラットフォームです。NVIDIA および ILMxLAB との協力により、GDC 2018 で、Epic Games はリアルタイム レイ トレーシングを初めて公開することができました。それが、スター・ウォーズ/最後のジェダイのキャラクターが登場する技術デモ、Reflections です。

「Reflections」の画像
このデモでは、テクスチャが適用されたエリア ライト、レイ トレーシングを利用したエリア ライト シャドウ、レイ トレーシングを利用した反射、レイ トレーシングを利用したアンビエント オクルージョン、映画のような被写界深度、NVIDIA GameWorks によるレイ トレーシングのノイズ除去が使われていて、すべてをリアルタイムで実行しました。Unreal Engine のハイブリッド アプローチにより、レイ トレーシングのメリットを享受することがないパスについてはラスタライズを使用して、全体のパフォーマンスを向上させました。

レイ トレーシングを利用したエリア ライト シャドウ
これらは初期の取り組みです。プロトタイプの Unreal Engine のコードはユーザーには公開されていませんでした。また、デモをリアルタイムで実行するには、ハードウェアとして、Tesla V100 GPU を 4 つ搭載した NVIDIA DGX Station が必要でした。価格帯としては 10 万ドルほどになります。そういったわけで、ソフトウェアの面でもハードウェアの面でも、一般的なユーザーが利用できるものではありませんでした。
リアルタイム レイ トレーシングの大衆化
5 か月後の SIGGRAPH 2018 で、NVIDIA および Porsche との協力により、Epic Games は、Porsche 911 Speedster のコンセプト映像、「The Speed of Light」を公開しました。これは映画のようなリアルタイムのエクスペリエンスです。ムーアの法則に従って、このデモに必要なのは NVIDIA Quadro RTX カード 2 枚のみとなりました。このカードは当時の価格で 1 枚あたり 6,000 ドル以上したので、結構な金額ではありますが、前回のセットアップと比べれば費用がはるかに抑えられていました。
「The Speed of Light」の画像
前回のデモで使われた機能に加えて、The Speed of Light では、レイ トレーシングを利用した透過表現、クリア コート シェーディング モデルと、ディフューズ グローバル イルミネーションが使われました。映画のようなエクスペリエンスだけでなく、インタラクティブなデモも作成し、シーンがリアルタイムであることを示しました。
2019 年 3 月の GDC 2019 の時点では、レイ トレーシングの機能を Unreal Engine 4.22 のベータ機能として提供する準備ができていました。12 か月でこのテクノロジーがどれほど発展したのかを示すために、Epic Games のパートナーである Goodbye Kansas と Deep Forest Films は、デジタル ヒューマンが登場するリアルタイム映像、Troll を作成しました。

「Troll」の画像
Troll は Reflections と比べるとはるかに複雑です。どちらも 24 fps で実行されていますが、Troll で 6,200 万の三角ポリゴンが使われているのに対して、Reflections では 500 万でした。また、ライトの数はそれぞれ 16 と 4 でした。Troll ではレイ トレーシングを利用したパスが 1080p の解像度でレンダリングされたのに対して、Reflections ではその半分の解像度でレンダリングしてからスケール アップしていました。さらに、Troll ではパーティクルをレイ トレーシングしていて、Alembic ジオメトリ キャッシュ、髪、皮膚など、Unreal Engine の映像パイプラインにおけるほかの基本的なコンポーネントとの相互運用性が確保されていました。そうした複雑さにもかかわらず、Troll は 1 枚の NVIDIA RTX 2080 Ti でレンダリングされました。これは現在の定価が 1,199 ドルの商品です。
「Troll」でのスクリーン スペース反射 (左) とレイ トレーシングを利用した反射 (右) の比較
現在では、ソフトウェアは Unreal Engine 内で無料で利用できるようになり、要求されるグラフィックス カードは極端に高価なものではなくなりました。リアルタイム レイ トレーシングは誰もが利用できるものになっています。
Unreal Engine 4.23 でのレイ トレーシング
Unreal Engine でレイ トレーシングを最初に実装しようと Epic Games がコードを記述していたのと同じ時期に、Microsoft は DXR フレームワークの仕上げをしていて、NVIDIA は新しいハードウェアとドライバに取り組んでいました。また、レイ トレーシングをサポートするために、レンダリングのパイプラインについて大規模なリファクタリングを実施しました。SIGGRAPH 2019 でプレビューを紹介した Unreal Engine 4.23 では、その両方の要因によってもたらされる不安定さへの対処に力を注いでいます。また、空のパス、グローバル イルミネーション、ノイズ除去など、多くの領域でパフォーマンスが向上しています。リアルタイム レイ トレーシングでは、トレースできる光の数が限られているため、ノイズ除去が非常に重要です。

Evil Eye Pictures による短編映画「emergence」における、グローバル イルミネーションの効果的な利用
また、intersection シェーダーを実装しました。これによって、独自のプリミティブ タイプをサポートし、髪やフラクタルなど複雑なジオメトリをレンダリングできます。複数の GPU をサポートする作業を開始しています。4.23 で追加された低レベル サポートによって、特定のパスをどの GPU でレンダリングするか制御できます。さらに、サポートするマテリアルやジオメトリのタイプを追加し続けています。ランドスケープ ジオメトリ、Instanced Static Mesh、プロシージャル メッシュ、Niagara スプライト パーティクルなどをサポートします。
リアルタイム レイ トレーシングの前途
これで終わりではありません。Epic のチームは、引き続き実装の改善に努めています。4.23 でパフォーマンスと安定性が大きく向上しましたが、この機能が実制作で使用できる「プロダクション レディ」であると正式に認められるまでに、パフォーマンスと安定性についてまだ多くの作業が残されています。とはいえ、多くのユーザーが、現在のベータ版のコードを本番環境で喜んで使用しています。そうしたユーザーの皆様がコードの負荷テストを行ってくださっていることに感謝しています。また、社内では Fortnite のシネマティックス チームがいいプレッシャーを与えてくれています。前にも述べたとおり、4.23 では、低レベルでの複数の GPU のサポートを追加しました。これをもっと簡単に使える機能にしていく予定です。また、より多くのタイプのジオメトリをサポートしていきます。最も難しい例の 1 つは、葉が風になびくアニメーションのようなエフェクトのために必要とされる、ワールド位置オフセットを使うフォリッジです。この点についてはいくつかのアイデアを発展させているところです。
Epic Games によるこれまでの取り組みについてより詳しくお知りになりたい方は、SIGGRAPH 2019 でのこちらのテック トークをご覧ください。
Unreal Engine でのリアルタイム レイ トレーシングをすでにお試しいただき、貴重なフィードバックを積極的に送っていただいている皆様に御礼申し上げます。まだお試しになっていない方は、最新の Unreal Engine を今すぐダウンロードしてください。皆様からのご意見をお待ちしています。