風で揺れる草木をレイトレーシングで描くと、形状を追跡するためのデータを毎フレーム更新する必要があります。植物が数万株ある場面では、その処理がGPUの時間とメモリを大きく使います。
AMDは9月17日に公開したGPUOpenの技術解説で、植物の外側に置いた簡素な「四面体ケージ」を動かす方法を紹介しました。同社の実験では、約2万5000株の植物を個別に揺らす場面で、加速構造に使うメモリは従来方式の最大約80GBから約1.7GBに減りました。何を節約した数値なのか、描画品質との関係を確認します。
四面体ケージの実験結果
AMDの公開デモは、Radeon RX 9070 XTを使い、フルHDで約2万5000株の植物をそれぞれ動かしています。表示する細かさを選んだ後の植物は、1フレームあたり約5億個の三角形に相当します。主光線と影の光線を用いたレイトレーシングで、AMDは60fps超と説明しています。
| AMDが示した同一場面の指標 | 従来の密な形状を更新する方式 | 四面体ケージ方式 |
|---|---|---|
| BVHなどの加速構造用メモリ | 最大約80GB | 約1.7GB |
| 1フレームのBVH更新時間 | 300ms超 | 約3.3ms |
数値はAMD自身の比較です。約47分の1という比率は80÷1.7から得られる概算で、グラフィックカード全体のVRAM使用量が47分の1になるという意味ではありません。テクスチャやフレームバッファーなど、ほかのデータは表の対象外です。Club386の報道も、この結果をBVHのメモリと更新時間の削減として紹介しています。
従来方式の80GBと300ms超は、同じ大量の植物を密な形状のまま個別に動かした場合に必要となる値です。RX 9070 XT上で従来方式を80GB使って実行し、そこから実測フレームレートを比べた結果ではありません。60fps超という値は四面体ケージ方式のデモに対応します。
BVH更新を軽くする仕組み
BVHは、光線がどの物体に当たるかを効率よく調べるための階層的な加速構造です。木の枝や葉の頂点が風で動くと、通常は動いた形に合わせて加速構造を更新します。植物ごとに揺れ方が違えば、同じ元データを使う植物でも更新後の状態をそれぞれ持つ必要があります。
AMDの詳細解説によると、新方式では高密度の植物を小さな四面体の集まりで囲みます。植物本体の細かい形状と、その形状に対応する加速構造は静的なまま再利用します。実行中に変形するのは外側のケージで、GPUは光線を元の静的な形状の座標へ変換して交差を調べます。
更新する対象が植物の膨大な頂点から少数のケージ頂点へ移るため、個別に動く植物を大量に置いた場面で効果が出ます。AMDが示す約3.3msは、こうした場面のBVH更新に使う時間です。ゲーム全体の1フレームを3.3msで描けるという値ではありません。
対象となる場面と描画品質
この方式は、風に揺れる草木のように、元の形を保ちながら多数の物体が変形する場面に向きます。AMDは群衆や遠景のキャラクターにも応用できると説明しています。四面体ケージを粗くすれば更新は軽くなり、細かくすれば元の動きを追いやすくなります。
一方、頂点を一つずつ自在に動かす方式と比べると、変形の表現には制約があります。細部の動きが目立つ近景の人物や、形状のつながりが変わる演出では、別の描画方式の方が適します。AMDも技術解説で、品質を優先する動きには個別の加速構造を使う選択肢を示しました。
また、このデモは大量の動く形状を扱う技術の検証です。AMDは高度な照明表現を評価したデモではないと明記しています。ここでの60fps超を、既存ゲームのレイトレーシング設定にそのまま当てはめることはできません。
ゲームへの実装状況
AMDはDirectX Raytracingと組み合わせられる技術として説明し、開発者向けのサンプルとC++ライブラリの準備を進めています。9月24日時点で、特定の市販ゲームやGPUドライバーへ四面体ケージ方式を搭載したという発表は確認できません。現段階では研究デモと開発者向けの提案です。
この研究は、GPUの演算性能を増やすだけでなく、動く形状のデータをどう持つかによって描画負荷が変わることを示しました。ゲームで利用する際は、開発者がどの物体に適用するかを選び、画質と処理時間を調整することになります。
まとめ
AMDの四面体ケージは、細かい植物の形状を再利用し、外側の簡素な構造だけを動かす描画手法です。RX 9070 XTを使った約2万5000株のデモで、AMDはBVHメモリ約1.7GB、更新時間約3.3ms、フルHDで60fps超を示しました。従来方式との比較値は同じ場面の加速構造に限られ、一般的なゲームのVRAM消費やフレームレート全体を示すものではありません。
実際のゲームでのレイトレーシング性能を知りたい方は、RX 9070 XTのレイトレーシング解説もご覧ください。
