イベント
Unigine製ベンチマークソフト「Superposition」の目玉技術,画面座標系リアルタイムレイトレーシング技術とは
Superpositionは,「4Gamerベンチマークレギュレーション20.0」でも採用しているベンチマークソフトで,8K解像度やVRをターゲットに,次世代GPUを対象とした高負荷なテストを行えるのが特徴だ。無償で利用できる「Basic」のほかに,19.95ドルの有料版「Advanced」と,商用利用も可能な995ドルの「Professional」という3タイプがラインナップされている。
そんなSuperpositionの概要がデモとともに語られたセッション「Superposition Benchmark:
Unigine 2.5で作られ,ゲームエンジン本体よりも先に登場したSuperposition
Unigineは,2005年に設立された企業で,2009年にWindows 7とDirectX 11がリリースされたのとほぼ同時に,当時最新の機能だった「テッセレーションステージ」をフル活用したベンチマークソフト「Heaven Benchmark」をリリースして名を上げた。
そうした経緯もあってか,日本では「Unigine=ベンチマークソフト」といったイメージが強いようだ。しかし東欧圏では,社名と同じ名称のゲームエンジンである「Unigine」の認知度はそれなりにあり,PCゲーム開発スタジオでの採用事例も増えつつある。また近年では,先進的なグラフィックスエンジンが高く評価されて,ゲームエンジンの非ゲーム用途にも進出している。SIGGRAPH 2015でUnigineブースを取材したときには,Unigine製エンジンは,業務用や訓練用のシミュレータ開発用途での引き合いが強いという話だった。
さて,そんなUnigineがRTLでお披露目したのが,2017年6月にリリースしたばかりの最新版「Unigine SDK 2.5」(関連リンク,以下 Unigine 2.5)だ。
Unigine 2.5では,新しいレンダリングテクニック「Screen-Space Ray-Traced Global Illumination」(以下,SSRTGI)の導入が大きな特徴となっている。そして,SSRTGIを搭載するUnigine 2.5を活用し,Unigineの技術を知らしめるべくベンチマークソフトとして制作したのが,セッションのメインテーマであるSuperpositionというわけだ。
下に,Superpositionを実際に8K解像度で実行したムービーを掲載しておこう。さすがに8K解像度の再生環境を持つ人はほとんどいないと思うが,4KやフルHD解像度でもそのクオリティは分かるはずだ。
SSAOと似ているが,遮蔽率ではなく露出率を用いるSSRTGI
前置きが長くなったが,RTLのセッションでは,UnigineのDenis Shergin氏が,Superpositionをデバッグモードで実行しながら,SSRTGIの概念を解説した。時間の限られたRTLで詳細な説明はできないこともあり,本稿では,Shergin氏が示した概念をもとにしながら,筆者の考察も交えてレポートしていきたい。
さて,そのSSRTGIだが,基本的には従来からある画面座標系(Screen Space)のレンダリングテクニックをベースに,その延長線上にある技術だ。
画面座標系の技法で最も有名なのは,PCゲームのグラフィックス設定でも見かける「Screen Space Ambient Occlusion」(スクリーンスペース・アンビエントオクルージョン,以下 SSAO)だろう。SSAOは,シーンの全ポリゴンをレンダリングしたあとに残った深度バッファ(Z Buffer)を調べて,注目しているピクセルがどのくらい遮蔽されているかの遮蔽率を計算し,その結果に応じた陰影を付けるという,疑似的な影生成技法だ。遮蔽率が高いピクセルほど影を濃くするのである。
一方,SSRTGIでは,SSAOのように注目ピクセル周辺の深度バッファを調査はするものの,それで得るのは遮蔽率ではなく,正反対の露出具合であるという。つまり,対象ピクセルが周囲からどれくらい見えているのかを調べるのだ。
なお,SSAOでは,遮蔽率というスカラ値(向きを持たない数値)を使っていたが,SSRTGIでは,露出している向きの平均をベクトルで求めるのがミソとなっている。これはいわゆる「Bent Normal」と呼ばれるものだ。
Bent Normalとは,いくつかの方向を調べて「露出している向き(=ベクトル)のすべてに,当該ピクセルの法線に対する余弦(Cosθ)をかけ合わせて,これらの平均を求めたもの」だ。……と言っても,これだけでは意味が分からない人が大半だろう。ものすごく大雑把に言えば,「当該ピクセルが何にも遮蔽されることなく,露出している方向の平均ベクトル」といったところだろうか。
和歌山大学床井研究室のWebページに,分かりやすい説明があるので,興味のある人はそちらも参照してほしい。
SSRTGIにおけるレイトレーシング処理は,深度バッファ上の深度分布から復元した3D空間内で,レイを飛ばして行う。具体的には,描画する各ピクセルから,Bent Normalの向きにレイを飛ばして,それが何かに衝突したら,その衝突地点の深度バッファに対応するピクセル色を取得して照明計算を行うと,Shergin氏は説明していた。
これを聞いて,CGに詳しい人なら,「SSR/RLR」(Screen Space Reflection
Shergin氏が言うには,SSRTGIだけでなくSSAOやSSR/RLRも同時に行うと,最終レンダリング結果の品質はさらに向上するそうだ。実際にSuperpositionでは,これらを組み合わせているとのことだった。
Unigine 2.5ではSSRTGI以外にも,「Screen Space Shadows」(SS Shadow)というテクニックも実装しているそうで,これもSuperpositionで実際に使用しているという。
SS Shadowとは,SSAOとSSRTGIをミックスしたようなテクニックだ。SSAOでは,シーン描画後の深度バッファを調べて遮蔽率を求め,各ピクセルに対して遮蔽率に応じた影の色を付けていく。一方のSS Shadowでは,各ピクセルから光源方向に画面座標系のレイトレーシングを行い,何かに衝突したらそのピクセルは遮蔽されているから影があると見なすとのこと。
たとえば,植物を多数配置しているものの,それらにちゃんとした影生成を行っていない場合や,近景にはデプスシャドウ技法によるリアルタイムシャドウ生成を行っているが,遠方では省略しているようなゲームグラフィックスでは,効果が大きそうである。
SSRTGIはSSAO並みに普及するか?
SSRTGIの優位性は,一切の事前計算をすることなく,それなりに高品質な間接照明を表現できることだ。得られる間接照明は1バウンス分だけだが,ゲームグラフィックス用途であれば必要十分と言えよう。
RTLのデモで示されたように,静的オブジェクトだけでなく動的オブジェクトと混在していても,辻褄の合った間接照明を得られるのはすごい。セッション映像では,緑の発光体を動かして,その緑の光が周囲を照らすような表現を披露しているので,じっくり見てほしい。
性能も上々だそうで,Shergin氏によると,SuperpositionにおけるフルHD解像度でのフレームレートは,ハイエンドGPUなら100fps以上は出るとのことだ。
Superpositionは無料で公開中なので,興味のある人は実際に自分のPCでその実力を確かめてみることをお勧めしよう。
UnigineのSuperposition 公式Webページ(英語)
SIGGRAPH 2017のReal-Time Live! 公式Webページ
- この記事のURL: