GPUの「レイトレーシング処理」改良の歴史をひもとく【GeForce RTX 30シリーズ編】レイトレーシングが変えるゲームグラフィックス(第5回)(3/4 ページ)

» 2024年07月12日 17時00分 公開
[西川善司ITmedia]
※本記事はアフィリエイトプログラムによる収益を得ています

GeForce RTX 30シリーズでレイトレ処理は“どう”改善したのか?

 NVIDIAの主張の“核心”に迫る前に、ちょっとした“前説”を入れよう。

そもそも「レイトレ」って何だっけ?

 この連載も久しぶりなので、レイトレーシングの概念を軽くおさらいしておこう。

 レイトレーシングとは「あるピクセルの色を計算するとき、当該ピクセルが受け取るはずの光の情報を探るために、光線(=レイ)を射出してたどる(=トレーシングする)処理」のことを指す。

 光線の射出方向と角度は、回収したい情報の種類によって決まる。例えば、近くの光源に向かって光線を射出して光源に到達できれば、そのピクセルは「その光源に照らされている」ことが分かる(下図「1」を参照)。一方、光源に達する前に他の3Dオブジェクトと衝突すれば、そのピクセルは「3Dオブジェクトによって影になっている」ことが分かる(下図「2」を参照)。

 さらに、当該ピクセルを見つめるユーザーの目線の反射方向に光線を射出して、他の3Dオブジェクトに衝突したとしたら、そのピクセルには「衝突した3Dオブジェクトが映り込んでいる」と判断できる(下図「3」を参照)。

模式図 レイトレーシングの概念図。図では光線をロケットのイラストで置き換えている(図版はインプレスから発売されている拙著「ゲーム制作者になるための3Dグラフィックス技術 改訂3版」より)

「RTコアの性能は先代比で2倍」の“からくり”

 RTコアが担当するのは、そんなレイトレーシングにおける「光線の生成処理」と、光線を動かす「トラバース(横断)処理」、そして衝突判定に相当する「インターセクション(交差)判定」の3点だ。

 GeForce RTX 30シリーズ発表当時、NVIDIAは同シリーズのRTコアの公称性能値の目安として、「GeForce RTX 3080(GA102)の三角形との交差判定レートは、GeForce RTX 2080 SUPER(TU102)の2倍」と語っていた。

 先述の通り、GeForce RTX 20シリーズとGeForce RTX 30シリーズのトップモデル同士で比較すると、RTコアの総数は17%しか増えていない。なのに、性能の向上率は1.17倍ではなく2倍――なぜ、そのようなことが可能なのか。

 実は、この“2倍”の意味は簡単に解説できる。結論からいうと、GeForce RTX 30シリーズでは、RTコアにおける交差判定ユニットのデュアルパイプライン化によって、完全並列動作を実現したことが大きな要因だ。順を追って解説しよう。

 近代のレイトレーシング技術では、三角形の交差判定を高効率に行うために、3Dオブジェクトを「BVH(Bounding Volume Hierarchy)」と呼ばれる構造で管理している。

 BVHは、当該3Dモデル全体を覆うことができる最小体積の直方体(Box)だ。なお、この直方体は3D座標軸に平行/垂直な向きにそろえられた「AABB(Axis Aligned Bounding Box)」構造になっている。こうした構造体は「AS(Acceleration Structure)」と呼ばれる。

トップ/ボトム判定 BVHを活用した交差判定のイメージ。レイを発射したら、そのレイと衝突している直方体があるかどうかを検出する仕組みだ。なお、BVHは、階層構造として「ボトム(下位)」と「トップ(上位)」という概念を取り入れている(ゲーム制作者になるための3Dグラフィックス技術 改訂3版より)
インターセクト時の挙動 BVHは直方体の階層構造となっているため、レイは直方体があると検出すると、ぶつかったレイが“どの層”の直方体に相当するか探査を進める。最終的に、最下層の直方体に含まれるポリゴンに対して衝突判定を行うことになる(ゲーム制作者になるための3Dグラフィックス技術 改訂3版より)

 さて、話は少し変わるが、GeForce RTX 20シリーズとGeForce RTX 30シリーズのRTコアのブロックダイヤグラムを見比べて見てほしい。

RTコアのアーキテクチャ比較 左がGeForce RTX 20シリーズ(Turingアーキテクチャ)、右がGeForce RTX 20シリーズ(Ampereアーキテクチャ)のRTコアのブロックダイヤグラム

 RTコアでは、「BVH Traversal」という箇所でレイの「生成」と「推進」の処理を行う。推進処理は、事実上はリスト構造への探索のようなものになる。

 そして、BVH Traversalとつながる「Bounding Box Intersection」は、推進したレイとAABBとの衝突判定を行う。そして同じくBVH Traversalとつながる「Triangle Intersection」は最下層のAABBとの衝突した際に呼び出され、三角形との最終的な衝突判定を行う。

 Triangle Intersectionでは、シンプルながらも幾何学的な計算が行われる。図をよく見比べると分かるが、GeForce RTX 30シリーズではTriangle Intersectionが“二重化”されている。先に触れた「交差判定ユニットのデュアルパイプライン化」は、まさにこのことである。

 要するに、2つのパイプラインが“個別に”レイの「三角形との衝突判定」を計算できるので、「性能2倍」とうたっているわけだ。

二重化 Triangle Intersectionのパイプラインを二重化することによって、「三角形との衝突判定」を並列処理できるようになった

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

最新トピックスPR

過去記事カレンダー