NVIDIAは2日、GPUに関する技術説明会を開催し、同社デベロッパーテクノロジーエンジニアの竹重雅也氏が最新のグローバルイルミネーション技術について解説した。
グローバルイルミネーション(以下、GI)技術とは、一言で言うと反射による間接光の表現を実現する技術だ。これまでのゲームグラフィックでは、物体に直接光が当たり、それによって陰影ができるという表現に留まっていた。これに対してGIでは、物体に当たった光が、反射して別の物体をほのかに照らすという間接光を表現するため、シーンの写実性がぐっと上がる。
これまでGIがゲームグラフィックであまり実装されてこなかったのは、負荷が高いからに他ならない。1フレームのレンダリングにどれだけでも(といっても現実的には制約はあるが)時間がかけられる映画などのオフラインレンダリングと違い、ゲームでは1秒間に30回以上の処理+レンダリングが求められる。GeForce GTX 600シリーズ(Kepler)は前世代よりもワット当たりの性能を2倍に引き上げているが、そのKeplerをもってしてもGIは重い処理となる。しかし、後に紹介する写真からも分かる通り、GIによる写実性の向上は目を見張るものがあり、各ゲームソフトメーカー、特にゲームエンジンを開発するメーカーは、リアルタイムでGIを実現できるアルゴリズムの開発にしのぎを削っているのが現状だ。
例えば、「Crysis」などをてがけるCrytekは、2010年に「Light Propagation Volumes」(LPV)という手法を発表した。LPVでは、3次元上の画素単位となるボクセル上で直接光が当たった位置と範囲を計算し、それがどのように隣接するボクセルに伝播していくかを計算する。これによって、ラジオシティと違い、光源やオブジェクトを動かしても、リアルタイムで反映できる。ただこの方法には、ボクセルの解像度を1辺当たり2倍にすると、消費するVRAMの量が8倍(2の3乗)になるほか、伝播処理を続けるに従って、光の方向が不正確になっていくという問題があった。
こういった問題を解決したのが、NVIDIAが2011年に発表した「ボクセルコーントレーシングを使ったインタラクティブな間接光」という論文にまとめられた手法。この手法の特徴は、8分木構造を使ってシーンを階層化していく点にある。
おおまかに言うと、大きな親ボクセルで光の衝突などの判定を行ない、物体の存在する場所では、ボクセルの1辺の解像度を2倍、つまりボクセルの密度を8倍にし、その中でも、物体のある場所のボクセル密度を8倍にするというように、処理の必要な部分だけ、階層状に解像度を上げていく。ボクセルの構築処理はすべてGPUが行なう。また、カメラ視点からのレンダリングでは複数の光線の代わりに円錐状に処理を行なう。これらにより、高解像度なボクセルを高速かつ現実的なメモリ使用量で実現できる。
グローバルイルミネーションとは | Crytekが開発したLPV | NVIDIAは8分木を使い、解像度と性能のバランスを取った |
NVIDIAが開発したGI対応の技術デモ。光は何重にも反射しており、廊下の端にうっすらカーテンの色が反射しているのが分かる | 外光の設定を変え、カーテンに集中的に当てると、反射が際立ってくる | 床のパラメータを変え、光沢のある材質に変えた場合の表現 |
左からエピック・ゲームズ・ジャパン サポート・マネージャーの下田純也氏、代表の河﨑高之氏、サポート・テクニカル・アーティストのロブ・グレイ氏 |
この技術を実際に取り入れたのがEPIC GAMESが開発し、業界定番とも言えるエンジン「Unreal Engine 4」(UE4)だ。今回エピック・ゲームズ・ジャパンのスタッフが、GeForce GTX 680搭載マシンを使って、UE4のデモを行なった。
UE4は、GIのほか、NVIDIAの物理演算エンジンPhysXや、破壊物表現など一部APEXにも対応。また、コードコンパイルの即座の反映といったことも可能で、プログラマ、アーティスト、デザイナーがさまざまな処理を待つことなく、最大限の創造性と生産性を引き出せるとしている。
以下に写真と動画でUE4のグラフィック面の特徴を紹介する。
【動画】UE4のウォークスルーデモ |
【動画】UE4を使った「Fortnite」の予告動画 |
(2012年 8月 2日)
[Reported by 若杉 紀彦]