「レイトレーシングが変えるゲームグラフィックス」というテーマでつづってきた不定期連載。前回は「GPUから見たレイトレーシング」をテーマに、NVIDIAのGeForce RTX 30シリーズにおけるレイトレーシング処理の高速化手法を解説した。
今回は、同シリーズの後継モデルで、今も現役の「GeForce RTX 40シリーズ」におけるリアルタイムレイトレーシング処理の“最適化”手法をチェックしていきたい。
GeForce RTX 40シリーズの開発において、NVIDIAはレイトレーシング性能を向上させるための改良や拡張に対し、“多角的な視点”で取り組んだとされる。
一体どこがどう多角的なのか……を見ていく前に、説明の都合上「レイトレーシングとは何か?」という基礎を改めて振り返っておきたい(何度も説明していることなので、耳にたこができてしまっている人は、このパートは読み飛ばしても構わない)。
大ざっぱに言えば、レイトレーシングとは「あるピクセルの色を算定するとき、そのピクセルが受け取っているはずの光の情報を得るために光線(=レイ)を射出して、その軌跡をたどる(=トレースする)処理」のことを指す。下図は、レイトレーシングにおける典型的な3つのパターンを示している。
レイトレーシングの概念図。分かりやすくするために、図ではレイをロケットのイラストで置き換えている(図版はインプレスから発売されている拙著「ゲーム制作者になるための3Dグラフィックス技術 改訂3版」から引用:以下同)この図では、レイトレーシングにおけるレイトレース事例を示している。
図の1-a〜1-cは、「ターゲットのピクセルに光が当たっているか否か」を調べるためのロケット(=レイ)だ。あるピクセルから飛ばしたロケットが光源に到達したら、発射元のピクセルには「光が当たっている」と判断できるので、プログラマブルシェーダー(最近のGeForceなら実務担当は「CUDAコア」)を呼び出して、そのピクセルの陰影具合を演算させるることになる。
図の2-a〜2-cは、「ターゲットのピクセルが影か否か」を調べるためのロケットだ。飛ばしたロケットが第三者に衝突したのであれば、「発射元のピクセルは第三者に遮蔽(しゃへい)されている」、つまり「影になっている」と判断できるので、発射元のピクセルは暗い色とすることになる。
そして図の3-a〜3-cは、光が当たっていると判断された発射元のピクセルから、視線の反射方向にもロケットを飛ばしているケースだ。もしも発射元のピクセルが、「テカテカとした金属のような鏡面反射特性の強い材質」だとすると、このロケットが視線の反射方向の第三者に衝突しら、「発射元ピクセルにはその第三者が映り込んでいる」と判断できる。
レイトレーシングの処理は、上記のように行われる。
NVIDIAのGeForce RTXシリーズでは、これを「RTコア」と呼ばれるレイトレーシングユニットが担当している。具体的には、ロケット(=レイ)を打ち出す「レイの生成処理」と、ロケットを進める「トラバース(Traverse:横断)処理」、そして衝突判定を行う「インターセクション(Ray-Triangle Intersection:交差)処理」の3つだ。
なお、実際のライティングやシェーディングの演算は、レイトレーシングにおいてもプログラマブルシェーダー(先述の通り、GeForceシリーズならCUDAコア)が担当する。
RTコアが行う3つの仕事のうち、特に負荷が高いのがトラバース処理とインターセクションだ。
GPUの「レイトレーシング処理」改良の歴史をひもとく【GeForce RTX 30シリーズ編】
2035年、ゲームグラフィックスは「オール・パストレーシング時代」へ――レイトレーシング技術の“先”を見つめる
「レイトレーシング」の最大の“敵”とは何か? やっつける方法はあるのか?
ゲームの中で「レイトレーシング」はどう使われる? 実例を見てみよう
最近よく聞く「レイトレーシング」 一体ナニモノ?Copyright © ITmedia, Inc. All Rights Reserved.