リアルタイム レイ トレーシング全体が 2018 年の NVIDIA GeForce 20 シリーズ GPU のリリースから始まったというのは信じがたいことです。ハイエンドのプリレンダリングされたハリウッド映画で使用されている照明方法が、突然、ライブビデオゲームでも使用できるようになりました。まあ、少なくともそれが約束だった。
実際には、レイ トレーシングは期待されるほどの影響を与えていません。問題の 1 つは、この世代のコンソールにはレイ トレーシング機能がほとんど搭載されていなかったことですが、PC であっても、それをまともに利用できるのは実際にはハイエンド システムだけであるということです。 Microsoft は一連の開発者向け発表の一環として、このテクノロジーの根本的な変化に向けたロードマップを示しており、将来的にはこのテクノロジーがより効率的で普及することが約束されているため、この状況は変わりつつあるかもしれません。
クラスター化されたジオメトリ
三角形ごとのレイ トレーシングの終わり
復習が必要な場合は、レイ トレーシングが実際に何であるかについて、NVIDIA が提供する優れた説明を参照してください。
レイ トレーシングの皮肉なことに、実際のレイのトレースがプロセスの中で常に最も負担のかかる部分ではないということです。ライティング パスを実行する前に、レイ トレーシング プロセスを最適化するためにシーンに関する膨大な量のデータを準備する必要があります。光線がシーン内のオブジェクトと交差したかどうかを伝えるために使用されるデータ構造があります。
これまでの動作では、シーンのジオメトリ内の三角形から加速構造が構築されています。少数の三角形を使用する小規模なスケールでは問題なく機能しますが、最新のグラフィックスには膨大な量のジオメトリが含まれています。
さらに悪いことに、そのジオメトリは本質的に動的であることがよくあります。たとえば、メッシュ シェーダを使用すると、ジオメトリをより動的に生成または管理できますが、アクセラレーション構造に影響を与える可能性があります。最近のビデオ ゲームもアセット ストリーミングを利用しています。つまり、データ構造の一部として必要な新しいジオメトリと、メモリに残すべきではないジオメトリが常にストリーミングされます。
その結果、GPU がレイ トレーシング シーンのレンダリングに大部分の時間を費やし、アクセラレーション構造全体の再構築に時間を無駄に費やしているだけという状況が発生する可能性があります。これが、Microsoft が「クラスター化ジオメトリ」と呼ぶデータ構造を構築するための新しいアプローチを考案した理由です。
新しいモデルは、すべての三角形を個別の単位として扱うのではなく、近くの三角形をコンパクトなクラスターにグループ化し、加速構造の構成要素として使用します。それは派手に聞こえますが、それは実際に私たちにとって何を意味するのでしょうか?重要なポイントは次のとおりです。
-
アクセラレーション構造は事前にグループ化されたチャンクから組み立てられるため、より速く構築できます。
-
クラスタを複数の構造間で再利用できるため、メモリ使用量が向上します。
-
作業は一度にすべて行うのではなく、複数のフレームに分散できます。
この概念はコンピュータ グラフィックス全体において新しいものではなく、Nanite Virtualized Geometry などの概念に適用されてきましたが、これによりこの概念が主流になりました。
パーティション化された TLAS (PTLAS): 新しい階層レベル
レイ トレーシングは、処理を高速に保つためにデータ構造の階層に依存しています。高いレベルで:
-
BLAS = 個々のオブジェクト (最下位レベルの加速構造)
-
TLAS = シーン全体 (トップレベルのアクセラレーション構造)
繰り返しになりますが、大規模な動的シーンでは TLAS がボトルネックになる可能性があります。アイデアは単純です。トップレベルの構造を 1 つの大きなオブジェクトとして扱うのではなく、より小さく、より管理しやすい部分に分割します。
長年にわたってゲームがどのように変化したかを考えると、それが実現するまでには長い時間がかかりました。 PTLAS は、ディスクからのジオメトリ ストリーミング、多くのアニメーションを含むシーン、動的な詳細レベル システムに役立ちます。現在および前世代のゲームに注目している場合は、これらすべてに聞き覚えがあるはずです。最近のゲームにはこういったシナリオが詰め込まれているからです。
PTLAS を使用すると、ゲーム エンジンは変更されたシーンの一部を更新するだけで済みます。データ構造の完全な再構築が必ずしも必要でない場合は、その計算作業をすべて省略できます。現在、更新と再構築はモジュール式になっています。
GPU主導のアクセラレーション構造
CPU が消耗しつつあります
CPU がレイ トレーシング プロセスで重要な役割を果たしていると知って、多くの人が驚いていると思います。この時点まで、プロセスの大部分を調整するのは CPU でした。
したがって、レイ トレーシングをオンにするということは、CPU にも制限があるフレーム レートに影響を与えることを意味します。 DXR では、GPU 上にアクセラレーション構造を構築することが常に許可されてきましたが、新しい方向性は、GPU がより多くのプロセスを自律的に処理できるようにする方向にさらに前進しています。 CPU の負荷が減ると、全体的なパフォーマンス、特に最低パフォーマンスが向上するはずです。
クラスター化ジオメトリ + PTLAS = スケーラブルなレイ トレーシング
崖というより山という感じ
これら 2 つのテクノロジーを組み合わせると、レイ トレーシングによるスケーラビリティが大幅に向上します。つまり、より多くのシステムで処理できるようになり、解像度が高くなったり、シーンの詳細が増えたりするにつれて、パフォーマンス要件がより適切に増加します。
これが実際に出荷されるゲームに実装されるまでにはしばらく時間がかかるでしょうが、レイ トレーシングの未来は確かに明るいように思えます。 DirectX の実際のバージョン番号が時間の経過とともに固定されているように見える場合でも。