オススメ機能
Twitter
お気に入り
記事履歴
ランキング
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2015/06/09 00:00

連載

西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

 NVIDIAが,COMPUTEX TAIPEI 2015に合わせる形で,「GM200」コア採用の新型GPU「GeFoce GTX 980 Ti」(以下,GTX 980 Ti)を発表したのは記憶に新しいところだろう。
 NVIDIAのデモ開発チームは,そんなGTX 980 Tiのリリースに合わせて,Windows 10&DirectX 12対応の新作技術デモ「MECH Ti」(MECH Ti Feature Demo)を開発し,COMPUTEX TAIPEI 2015の会場近くにあるホテル「Grand Hyatt Taipei」内にある同社プライベートブースにおいて披露していた。

 本稿では,このMECH Tiに組み込まれた要素技術を細かく見てみたいと思うが,まずは,下のビデオを見てもらいたい。これは,展示されていたGTX 980 Ti搭載機からHDMI出力された映像を,ビデオキャプチャデバイスで録画したものである。



DX12の「Conservative Rasterizer」を活用する「Ray Traced Shadows」


 MECH Tiの影生成には「Ray Traced Shadows」(※リンクをクリックするとpdfファイルのダウンロードが始まります)と呼ばれる技術が採用されている。開発を担当したのはNVIDIAのJon Story氏(Senior Developer Technology Engineer)だ。

Ray Traced Shadowsの効果。投射距離の短いところでは鋭い影に,投射距離が長いところではぼやけた影になっている
画像集 No.002のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

 ご存じの人も多いと思うが,今日(こんにち)のGPUにおいて,他者からの遮蔽によって生じる「影」は,自動的には得られない。そのため,影を描画するためには,別途,影を描画する処理系を実装して走らせる必要がある。

画像集 No.003のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
デプスシャドウ技法では,シャドウマップ解像度に依存したジャギーが描画した影に出てしまう
画像集 No.004のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
解像度が十分に高くできれば鋭い輪郭の影生成を行える一方,広いシーンで品質を保つには,巨大なサイズのテクスチャでシャドウマップを生成する必要が出てくる
 そんなわけで,ゲームグラフィックス(=リアルタイムCG)における影生成にはなかなかの歴史があって,10年前には「Stencil Shadow Volume」(ステンシルシャドウボリューム,以下カタカナ表記)と「Depth Shadow」(デプスシャドウ,Shadow Mapsとも。以下カタカナ表記)との壮絶な戦い(?)があった。そのときは,結果的には後者が多くのゲームで採用されることになって落ち着いた経緯がある。
 ただ,デプスシャドウ技法では,影生成元となる光源から,シーン内の全オブジェクト(=遮蔽物)までの距離をテクスチャに描画して,遮蔽物までの距離の分布データをシャドウマップ(Shadow Maps)として最初に生成するのだが,影描画にあたっては,このシャドウマップ解像度(≒テクスチャ解像度)に依存したジャギーが出てしまう弊害と闘わなければならなかった。

 ステンシルシャドウボリュームではこのジャギーが出ないというのが優位点だったのだが,デプスシャドウ技法が勝っ(てしまっ)た結果として,「ジャギーを淡くボカして,ジャギー感の露呈をごまかす」というのが,ゲームデベロッパにおける定番のやり方になっている。

影の輪郭を一様にボカす。デプスシャドウ技法における,ジャギーを低減させる常套手段がこれだ
画像集 No.005のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.006のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

 それに対して,新開発のRay Traced Shadowsは,そうしたジャギーを低減しつつシャープな影生成を行えるようになっており,かつ,必要であれば影の投射距離に比例したボケ具合を実現するような,リアルなソフトシャドウ表現も行えるのが特徴だ。

 Ray Traced Shadowsが持つアルゴリズムの概念自体は,デプスシャドウ技法のパイプラインと似て非なるものだ。
 まず,影生成元となる光源からシーン全体を見下ろして,シーン内のオブジェクト(遮蔽物)までの距離をテクスチャにレンダリングする。デプスシャドウマップ技法だと,ここで,ピクセル(=テクセル)に分解されたシーン内のオブジェクトのシルエットが,光源までの距離情報と共に書き出されるのだが,Ray Traced Shadowsでは,ピクセルに分解した情報を書き出すのではなく,その遮蔽オブジェクトを構成するのポリゴンの情報を書き出すのである。

画像集 No.007のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
Deep Primitive Mapとは,その3Dモデルを構成するポリゴンのうち,光源に対して向いているもの(=光源から光を遮蔽するもの)の情報をテクスチャに書き出したもの
画像集 No.008のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
Deep Primitive Mapの最上階層は「何個のポリゴンが光を遮蔽したか」のカウント数したものになる。後段のレイトレーシングで,カウントが0のところはレイが素通りする。1以上の箇所には,対応する下階層にポリゴンのID番号が記録される
 MECH Tiを使って具体的な話をすると,光源からの光を遮蔽するのがロボットの腕である場合,その腕を構成するポリゴンの個数とポリゴンIDがテクスチャ配列(=3Dテクスチャ)に出力される。
 この3DテクスチャをRay Traced Shadowsでは「Deep Primitive Map」と命名している。なお,ここでいうPrimitiveは「ポリゴン」という解釈でいい。

 Deep Primitive Mapは階層構造になっていて,光源からの光を遮蔽している部位のポリゴンの枚数とそのポリゴンIDを,適当な分解能(N×N)で記録する。そのため,多ポリゴンモデルになると,光を遮蔽するポリゴンの枚数が多くなり,すべての情報を記録できないケースも生じうるため,何枚までのポリゴン情報を記録しておけるかのカウント数(d)も慎重に決定しなければならない。

 NVIDIAの実装では,この「N×N×d」を1024×1024×32(128MB)〜1024×1024×64(256MB)で確保していたが,「最適な設定」は,影生成元となる3Dモデルが持つポリゴンの数や,影の投射先となるシーンの大きさに配慮しながら,適宜決定する必要があるだろう。

Deep Primitive Mapを可視化したところ。N×N×d構造において,赤い箇所はdよりも多い数のポリゴンが存在してしまったている。設計初期段階でこの赤を少なくするようにdを増やすか,あるいは3Dモデルのポリゴン数を調整する必要があるわけだ
画像集 No.009のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
8192×8192で256MBシャドウマップによるデプス技法の影(左)と,1024×1024×64で256MBのDeep Primitive Mapを用いたRay Traced Shadowsの影(右)。テスクチャメモリ使用量は同じながら,影の品質は後者で確かに向上している
画像集 No.010のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.011のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

 Ray Traced Shadowsでは,このDeep Primitive Mapを生成する部分で,DirectX 12の機能を採用している。
 「遮蔽部位を構成するポリゴン情報がDeep Primitive MapのN×Nにおいてどこに記録されるべきか」は,ラスタライザによってポリゴンをピクセルに分解して判定することになる。そしてここで,ラスタライズ処理によって「ポリゴンの一部が少しでもN×N解像度にかかっていたら,ポリゴン情報をDeep Primitive Mapに記録する」のに,DirectX 12(もしくはDirectX 11.3)の「Conservative Rasterizer」機能を活用するのだ。

Ray Traced Shadowでは,Deep Primitive MapのN×N構造において,「そのポリゴン情報をどこに記録すべきか」の対応付け処理に,Conservative Rasterizer機能を応用している(左)。右のスライドでは中央の例に注目してほしいが,Conservative Rasterizerを活用できないと影に隙間ができてしまうことになる
画像集 No.012のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.013のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

Depth Shadowでは,シャドウマップを読み出すことで一意的に「影か否か」の判定を行えたが,Ray Traced Shadow法では,描画対象となるピクセルから光源に向かってレイを飛ばすレイトレーシングを行う必要がある
画像集 No.014のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 ただし,Deep Primitive Mapを作成しただけでは影は生成されない。シーンを描画するとき,描画対象となるピクセルが他者に遮蔽されてるか否か(=影か否か)の判定が必要となる。
 具体的には,ライティング対象として着目しているピクセル位置から,影生成元の光源に向かってレイ(ray)を飛ばし,Deep Primitive Mapを読み出して,Deep Primitive Map内にあるいずれかのポリゴンに衝突しているかどうかを,おおざっぱに判定する。そのうえで,衝突していると判定できた場合には,当該ポリゴンの向きや形状を読み出したうえで,レイとの衝突判定をより正確に行って,「影か否か」を判断するという流れだ。

「投射距離に応じた影の見え方」を工夫できるのも,Ray Traced Shadowの特徴だ
画像集 No.015のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 「大ざっぱな判定」は,「N×Nの最上層に記録されている遮蔽ポリゴン枚数が0か1以上かで行っている。0なら衝突しておらず,1以上なら衝突していると判断できる。
 影と判断できる場合は影として描画することになるわけだが,レイがどのくらい空間を旅して衝突したかの情報を基にすれば,影の投射距離も分かる。なので,投射距離が長ければ長いほど淡い影にすれば,投射距離に応じたソフトシャドウも描けるわけである。

投射距離が短い影は鋭く,投射距離が長い影は淡くといった,表現的な変化を付けられる。現実の影もそういう傾向があるので,よりリアルになるというわけだ
画像集 No.016のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.017のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

アンチエイリアシング処理では,FXAAのようなポストプロセス系を活用するよう,NVIDIAは推奨している
画像集 No.018のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 なお,このRay Traced Shadowは,描画解像度に依存せず,1ピクセル単位で正確な形状の影の生成が行えるというメリットがある一方,GPUが持つMSAA(Multi-Sampled Anti-Aliasing,マルチサンプルアンチエイリアシング)の適用対象外になってしまうという弱点も抱えている。NVIDIAはそれに対し,ポストプロセス系アンチエイリアシング処理であるFXAA(Fast Approximate Anti-Aliasing,ファーストアプロキシミットアンチエイリアシング)を用いて対処するよう推奨していることも押さえておきたい。

Ray Traced Shadowの弱点と制限
画像集 No.019のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 もう1つ。Ray Traced Shadowは,影生成元の動的光源がシーン内に複数ある場合,光源の1つ1つに対してDeep Primitive Mapを生成しなければならないため,ポリゴンカウントやポリゴンIDを記録していくメカニズムの都合上,オープンワールドのような巨大な空間に無数の樹木やキャラクターが配置されるような世界の影生成には適合しづらいとされる。
 仮にゲームで採用するとしても,プレイヤーの視点から近距離にいる主要なキャラクターに対象を限定したり,クローズアップショットが多くなるイベントシーンに限ったりすることになりそうだ。


DX12の「Volume Tiled Resources」を活用する「Sparse Smoke」


 PlayStation(以下,PS) 4とXbox Oneが実際に市場へ登場するまでの間,業界では,「PS4&Xbox One世代のゲームグラフィックスではボリュメトリックな流体表現が本格化するはず」と言われ,けっこうな期待感も持って迎えられていたのだが,実際のところはといえば,PS3&Xbox 360世代と同様の,パーティクルベースの表現手法が今もってなお支配的である。

Alex Dunn氏は学生時代から流体表現に関する技術発表を行ってきた,流体物理の伝道師として知られる。氏のWebサイトには過去の流体デモがいろいろあるので,チェックしてみるといいだろう
画像集 No.020のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 そんな状況にあって,MECH Tiデモでは,流体物理のエキスパートであり,Game Developers Conferenceなどの技術カンファレンスで「流体物理をもっと活用しよう」と強く呼びかけ続けている“流体物理伝道師”のAlex Dunn氏(Developer Technology Engineer, NVIDIA)が開発した「Sparse Fluid Simulation」(※リンクをクリックするとpdfファイルのダウンロードが始まります)を採用してきた。

MECH Tiは,流体シミュレーションによる煙の表現を,「Sparse Smoke」(スパーススモーク)として実装している。右はデモから煙をカットしてみたテストショット
画像集 No.021のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.022のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

ボクセルベース(グリッドベース)のオイラー的手法による流体シミュレーションの概念
画像集 No.023のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
画像集 No.024のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 流体表現にはいくつかの手法が考案されているが,最もシンプルなのは,空間を三次元的な格子で区切り,その格子単位でシミュレーションを行うオイラー的手法だ。つまり,空間をボクセル化(≒グリッド化)して,着目しているボクセルが隣接するボクセルに対して影響を及ぼしたり,逆に着目しているボクセルが周囲のボクセルから影響を及ぼされたりする「伝搬」を計算する手法である。

 ボクセルで管理するパラメータは圧力や速度,渦度(渦巻運動ベクトル)などで,これらのパラメータからグリッド間で生じる流体の移流度を計算し,グリッド単位の圧力や渦度や速度も更新させる。現実世界の場合,ある単位時間(Δt)内ですべての空間同士が互いに影響し合うが,コンピュータの場合,時間も空間も離散で計算することになるため,少しでも再現の正確性を高めるため,この計算は,性能の許す分だけ,複数回,反復的に実行し,その結果を採用するのが一般的である。

 グリッド管理されている流体情報の描画にあたっては,CTスキャンやMRIスキャンでデータの描画に使われることの多い「Maximum Intensity Projection」(最大値投影法)を用いることも多いが,MECH Tiデモでは「Ray Marching」(レイマーチング)を活用している。
 レイマーチングというのは,レイトレーシングのようなもので,描画対象となるピクセルから視線方向にレイを飛ばし,流体情報を格納しているグリッドにレイを潜らせる。そのうえで,レイが進むたびに,当該グリッド内の流体密度をサンプリングし,ライティング計算を行っていくことになる。

レイマーチングしたときにライティング計算を行えば,煙に陰影を付けることができる(左)。右はライティング計算をせずに濃淡表現を行った例。濃淡表現だけでもそれなりの見た目にはなるが,左と見比べるとやはり見た目は寂しく見える
画像集 No.025のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.026のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
MECH Tiにおける「煙に対しての影生成」に関する解説はないのだが,映像を見る限り,煙の影はちゃんと地面やロボットに投射されて出ているようだ。GameWorksに含まれる流体ライブラリ「Flameworks」では,デプスシャドウ技法の応用版のようなものが活用されているようなので,それに準じた手法が使われていると思われる
画像集 No.027のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

 では,このデモにおける流体表現のどのあたりがDirectX 12的かというと,流体を管理するグリッドの確保法,ということになる。

左が従来的なテクスチャの概念。中央がDirectX 11.2で標準仕様に採用されたバーチャルテクスチャメモリことTiled Resources。右がDirectX 12&11.3で組み込まれたVolume Tiled Resourcesとなる
画像集 No.028のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 DirectX 11.2で,GPUのローカルグラフィックスメモリに乗り切らないような大容量テクスチャを,64KB単位で区切ったタイルテクスチャで管理し,それを仮想メモリ的に取り扱おうとする機構「Tiled Resources」(タイルドリソース)が実装された。このTiled Resourcesは,DirectX 12&11.3でさらに拡張され,テクスチャ配列(=3Dテクスチャ)をも取り扱えるようになったのだ。この拡張されたTiled Resourcesには,「Volume Tiled Resources」(ヴォリュームタイルドリソース)という名称が与えられている。

シミュレーショングリッドが複数個集まった単位をブリックとして管理する
画像集 No.029のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 そう,MECH Tiでは,流体シミュレーション用のグリッドを,Volume Tiled Resourceで確保してあるのだ。
 MECH Tiでは,流体シミュレーション用のグリッドを複数個まとめた固まり――NVIDIAはこれを「Brick」(ブリック,以下カタカナ表記)と読んでいる――を1タイルあたり64KBで管理し,この固まり(=ブリック)を,ローカルのグラフィックスメモリ上で動的に有効化していく仕組みを実装している。
 逆に言うと,流体情報を保持していない,空きグリッドだらけの空きブリックは,ローカルグラフィックスメモリから仮想メモリへとオフロードされることになる。いわゆるスワッピング処理に相当する処理が行われるわけである。

1ブリックを64KBで設計して,それをVolume Tiled Resourcesから管理するようにする
画像集 No.030のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.031のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

CPUスレッド側でVolume Tiled Resources制御エンジンを走らせることで,ブリックをローカルグラフィックスメモリへ読み出したり,メインメモリへ書き出したりできるようにする。意外に設計難度は高そう
画像集 No.032のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
 厄介なのは,ある時点まで「空き」ブリックだったのが,流速の高い流体が移流して「有効」ブリックとなったとき,ローカルのグラフィックスメモリ上でブリックの読み出しが間に合わず,次のフレームの流体計算が行えなくなってしまうようなワーストケースが発生し得ることである。
 この問題に対して,Volume Tiled Resourcesでは,「ブリック出し入れの予測エンジン」をCPU側のスレッドで走らせることによって対応しつつ,メインシーンの描画に対する流体描画の遅延を2フレームほど許容する設計になっている。流体はほとんどのケースでぼんやりとしたものなので,こうした実装でも構わないだろうという判断のようだ。

Volume Tiled Resourcesで,ローカルグラフィックスメモリへのブリック読み出しが間に合わない問題に対しては,流速の上限を設けて抑制するのが効果的。流速の上限をシミュレーションシステム全体として設けるのか,ブリック単位で設けるのかは,実装上の選択ということになる。いずれにせよ,2フレーム程度の遅延余裕を持って実装するのが現実的なようである
画像集 No.033のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.034のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
Volume Tiled Resourcesを使わず,すべてのグリッドをローカルグラフィックスメモリ上で管理し,シミュレーションもそれら全グリッドに適用すると,フレームレートが下がってしまう……という例(左)。Volume Tiled Resourcesを使うと,空グリッドはシミュレーション対象外となるため,負荷が下がって,フレームレートが向上する(右)
画像集 No.035のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.036のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る
ロボットの動きが,流体としての煙に乱流の影響を与えていると分かる例
画像集 No.037のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る


DX12の機能を活用してはいないが,MECH Tiでアピールされる「Screen Space Reflections」


 MECH Tiデモの中頃で,注目の表現技術の1つとしてアピールされる「Screen Space Reflections」(スクリーンスペースリフレクション)は,キャラクター自体の部位がキャラクター自体に映り込んで見える表現だが,結論からいうとこれは,DirectX 12とはあまり関係のないグラフィックス表現技術だったりする。

Screen Space Reflectionsは局所的な映り込みを再現するテクニック。水面や金属表現のリアリティを高める効果がある
画像集 No.038のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る

 これは,普通にシーンをレンダリングした後で,映像中の鏡面材質において,視線を反射する方向にレイを放ち,局所的なレイトレーシングを行うことで表現するものとなっている。
 描画結果としての映像は平面でしかない。しかし,レンダリングが終わった後でも,当該シーンの奥行き構造を記録した深度バッファの内容は残っているので,その深度バッファを立体空間と見立てて,それに対してレイを放つのだ。放たれたレイが他者に衝突したら,深度バッファの位置に対応する映像フレームのピクセルカラーを持ち帰って,その鏡面材質箇所に描き込んでやる。すると,これが嬉しいことに,局所的な映り込み表現となるのである。

 いかにもリアルタイム3Dグラフィックスといった,“2.5D”的なポストプロセステクニックによる鏡像生成は,「Realtime Local Reflections」(リアルタイムローカルリフレクション)とも呼ばれる。もともとはCrytekが「Crysis 2」に実装したのが始まりだったので(関連記事),Realtime Local Reflectionsという名前のほうで覚えている人も多いだろう。

左はScreen Space Reflectionsによる局所的な映り込みなし,右がありだ。ロボットのコクピット側面に注目すると,ロボットの胸部が映り込んでいるのが分かる
画像集 No.039のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る 画像集 No.040のサムネイル画像 / 西川善司の3DGE:GTX 980 Ti用として披露されたDX12ベースの新作デモ「MECH Ti」,その技術に迫る


開発者に向けたショウケースとなるMECH Ti

公開はWindows 10の発売前後か


 現在,NVIDIAが技術デモ向けに開発・実装した高度なリアルタイム3Dグラフィックス技術は,同社のゲーム開発支援ブランド「GameWorks」のソフトウェア開発キットに,ライブラリとしてどんどん追加されている。

 DirectX 12やDirectX 11.3の新機能は,どう便利なのか,一般的な開発者レベルではよく分からないものも多い。それだけに,このような実動デモの形で分かりやすい形で見せてくれるのは,開発者からするとありがたかったりするのだ。
 実際,MECH TiにおけるConservative RasterizerやVolume Tiled Resourcesの活用は,「このような使い方があったのか」と気づかせてくれるユニークなものなので,開発コミュニティへの影響も小さくはないだろう。

 ちなみにこのMECH Tiデモ,NVIDIAによると,近々一般公開もされる予定とのことだ。DirectX 12ベースである以上,常識的に考えると,7月29日のOS発売以降だとは思うが,楽しみに待ちたい。

NVIDIAのGameWorks公式情報ページ(英語)

  • 関連タイトル:

    GeForce GTX 900

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:04月17日〜04月18日