PC初心者、あるいは近代ゲームグラフィックスの仕組みに詳しくないゲームファンは、ここまでの結果を見ると以下の2つの疑問を思い浮かべるではないだろうか。
答えは案外シンプルだったりする。グラフィックスメモリの“差”だ。いくら演算性能に勝るGPUを搭載したとしても、グラフィックスメモリに差があると、グラフィックス品質における「下克上」が生じてしまう。
ということで、現代のゲームグラフィックスではTFLOPSで表されるGPUそのものの性能よりも、グラフィックスメモリを重視すべき……なのだが、グラフィックスメモリで重視すべき“差”とは何なのだろうか。それを知るには、現代におけるゲームグラフィックスのアーキテクチャをひもとく必要がある。
前提として、近代のゲームグラフィックスは、グラフィックスメモリの容量を大量に消費し、さらにグラフィックスメモリの帯域をえげつなく消費する。
グラフィックスメモリは、その名の通りGPUが使うメモリだ。その容量は、「8GB」「12GB」「16GB」といった具合で、グラフィックスカードのパッケージにも大きく書いてある。メーカーによっては、カードの型番に容量を示す数値が含まれていることもある。
通常、グラフィックスカードのパッケージにはグラフィックスメモリの容量が記載されている(写真はMSIの「Radeon RX 7600 MECH 2X CLASSIC 8G OC」と「GeForce RTX 4060 GAMING X NV EDITION 8G」で、いずれも8GBのグラフィックスメモリを備えている)「グラフィックスメモリ」はGPUに直結されている。CPUに直結している「メインメモリ」とは別物で、最近ではGDDR6/GDDR6X/GDDR7といった規格を採用している(Gは「グラフィックス」を表す)。
そしてグラフィックスメモリの「帯域」は、簡単にいうとGPUとグラフィックスメモリが1秒間にやりとりできるデータ量を表す。当然、数値が大きければ大きいほど、大きなデータを短時間でやりとりできるということになる。
近代ゲームグラフィックスが、大容量のグラフィックスメモリを消費し、帯域の消費も大きくなってきた――そう聞くと「4K解像度が主流になったから?」「3Dモデルを構成するポリゴン数が多くなったから?」といった理由が直感的に思い浮かびそうだ。確かにこれらも一因なのだが、もっと“決定的な”要因がある。
その1つは「レイトレーシング(レイトレ)への対応」だ。レイトレを行うためには、レイトレ専用のシーン構造体として「BVH(Bounding Volume Hierarchy)」を構築する必要がある。BVHのディスプレイサイズは「どの程度の大きさで、どの程度の複雑性をもってシーンを描画するか」によって変わるが、屋内シーンでも数十MB、屋外の広大なシーンだと数百MB〜数GBに達する。
ちなみに、BVHは「レイトレ専用の構造体」として、「レイトレを使わず、通常描画するために準備した3Dシーンの構造データ」とは別に用意しなければならない。別に用意しないといけないとなれば、そりゃあメモリ容量を“浪費”するわけである。
BVHを活用した交差判定のイメージ。レイを発射したら、そのレイと衝突している直方体があるかどうかを検出する仕組みだ。なお、BVHは、階層構造として「ボトム(下位)」と「トップ(上位)」という概念を取り入れている(拙著「ゲーム制作者になるための3Dグラフィックス技術 改訂3版」より)「レイトレは演算の負荷が重い」というイメージがあると思うし、確かにその通りなのだが、レイトレの実務を担当する「レイトレーシングユニット(RTU)」自体は、それほど複雑な幾何学演算をしているわけでもない。実は、レイトレ処理においても、実際の各種陰影計算(ライティング/シェーディング/テクスチャリング)は以前のGPUから搭載されていた「プログラマブルシェーダーユニット」に外注されているのだ。
そうなると「RTUの最も負荷が大きい仕事は何?」という疑問が生じる。
近代GPUのRTUは、大きく「レイの生成」「レイの推進」「レイの交差判定」の3つを担っている。これらのうち、先述したBVH構造体の中でレイを進ませるレイの推進処理と、BVHの中を進むレイがどのポリゴンと衝突したかを判断する交差判定は、事実上グラフィックスメモリ内のBVH構造体に対する探索動作と等しい。
これは要するに、グラフィックスメモリ内のデータをひたすら読み込みまくるという挙動となる。レイが反射したり分散したりすれば、当然データへのアクセス頻度は上がる。そしてレイが散らばれば、アクセスに対するキャッシュは効きにくくなり、ランダムアクセスを強いられる。
BVHは直方体の階層構造となっているため、レイは直方体があると検出すると、ぶつかったレイが“どの層”の直方体に相当するか探査を進める。最終的に、最下層の直方体に含まれるポリゴンに対して衝突判定を行うことになる(ゲーム制作者になるための3Dグラフィックス技術 改訂3版より)そしてレイトレ処理の対象となる3Dオブジェクトが動いたり、消滅したり、はたまた新たな3Dオブジェクトが登場したりすれば、BVH構造体を更新しなければならない。そう、今度はグラフィックスメモリーへの書き込み処理のラッシュが発生する。
GPUのグラフィックスメモリへのアクセス頻度は、「レイトレオフ」の時と「レイトレオン」の時とでは、全く違った状況になっているのだ。
レイトレーシングの概念図。図では光線をロケットのイラストで置き換えているが、処理の1つ1つでグラフィックスメモリへのアクセスが頻発するのだ(ゲーム制作者になるための3Dグラフィックス技術 改訂3版より)
カプコンが「モンスターハンターワイルズ ベンチマーク」を公開 Steam Store経由でダウンロード可能
GPUの「レイトレーシング処理」改良の歴史をひもとく【Radeon RX 7000シリーズ編】
GPUの「レイトレーシング処理」改良の歴史をひもとく【GeForce RTX 40シリーズ編】
GPUの「レイトレーシング処理」改良の歴史をひもとく【GeForce RTX 30シリーズ編】
2035年、ゲームグラフィックスは「オール・パストレーシング時代」へ――レイトレーシング技術の“先”を見つめるCopyright © ITmedia, Inc. All Rights Reserved.