COMPUTEX TAIPEI 2015の開幕を翌日に控えた日本時間2015年6月1日7:00,NVIDIAは,「
GeForce GTX TITAN X」と「
GeForce GTX 980」の間を埋めるウルトラハイエンド市場向けGPU「
GeForce GTX 980 Ti」を発表した。GeForce GTX 980 Tiについてはレビュー記事が詳しいので,気になる人はそちらを参照してもらうとして,本稿では,GeForce GTX 980 Tiの周辺情報として明らかにされた,
- NVIDIAの現行GPUが対応する「DirectX 12」の機能レベル
- 仮想現実技術サポートを目的とした「GameWorks VR」
DirectX 12に存在する3つの機能レベルと
NVIDIA製GPUのサポート状況
Windows 10で採用されるDirectX 12は,DirectXとして久しぶりのメジャーアップデートであると同時に,オーバーヘッドの低減,マルチスレッドの対応強化といった大規模な改良が入るアップデートとして期待されている。
DirectX 12に関しては4Gamerでも過去に何度か取り上げてきたが,そのグラフィックスAPIである「
Direct3D 12」には,「
Feature Level」(フィーチャーレベル,以下 機能レベル)が設けられている。まず最低限サポートされるべきAPI群――本稿ではこれを便宜的に「ベースAPI」と呼ぶ――があり,その上に「
Feature Level 12_0」「
Feature Level 12_1」という,2つの機能レベルが設けられている。
機能レベル自体は,GPUベンダーがサポートしてもしなくてもいい,オプションのようなものだ。サポートしていなくても,Direct3D 12のベースAPIでサポートされているオーバーヘッドの低減やマルチスレッド対応の強化といった恩恵は受けられるが,サポートしていれば,より高度なグラフィックス表現が可能になるとされている。
冒頭で述べたように,GPUを手がける主要なメーカーはこれまで,「DirectX 12のサポート」自体は明らかにしてきたものの,GPUが対応する機能レベルについては,あまり具体的なことを語ってこなかった。もちろん,非公式にはいろいろ言われていたりするのだが,筆者が記憶する限り,公式に語られたことはなかったと思う。
それだけに,今回,GeForce GTX 980 Tiの発表に合わせて,NVIDIAでノートPC向けGeForceおよびTegra製品のプロダクトマーケティングマネージャーを務める
Gaurav Agarwal(ガラフ・アガーワル)氏がそのことを語ったのは意味があるわけだ。
さて,機能レベルとその違いは下のスライドを見てもらえればと思うが,ベースAPIとFeature Level 12_0,Feature Level 12_1のそれぞれに,設定された機能が並ぶ。それを見てピンときた人もいるだろうが,DirectX 12における機能レベルには,DirectX 11.2で実装されていた,あるいはDirectX 11.3で実装される機能も含まれている(関連記事)。
Agarwal氏によると,
Fermi世代とKepler世代,そしてMaxwellの第1世代は,DirectX 12のベースAPIのみをサポートするという。念のために言い換えておくと,これらのGPUではFeature Level 12_0もFeature Level 12_1もサポートされない。
それに対して,
Maxwellアーキテクチャの第2世代に属するGPUでは,Feature Level 12_0もFeature Level 12_1もフルサポートするとのことだ。デスクトップGPUについて言うなら,「
GeForce GTX 960」以上のGeForce GTX 900シリーズとGeForce GTX TITAN Xが,現時点において,DirectX 12のフル機能を利用できる製品ということになる。
余談気味に続けておくと,Fermiから第1世代MaxwellのGPが,DirectX 11においても「Direct3D 11」の「Feature Level 11_0」しかサポートできていないことは,開発者の間ではよく知られていた。
また,機能レベルとDirectXのバージョンには直接の関係がない。たとえば,「DirectX 11.2対応」と謳われるGPUなら,絶対に「Feature Level 11_1」をサポートしておかなければならないということはないのだ。機能レベルはあくまでもオプションなので,サポートしてもしなくてもいい。だから,第1世代Maxwell以前のGPUが「DirectX 12対応だけれども,ベースAPIしか対応していない」というのも,「まあそうだよね」という話だったりするのである。
話を戻そう。Agarwal氏は第2世代MaxwellアーキテクチャでサポートされるFeature Level 12_0とFeature Level 12_1について,2つの実例を挙げて効果をアピールしていた。
1つめは,「Volume Tiled Resources」関連だ。
Tiled ResourcesはDirectX 11.2で,またVolume Tiled ResourcesはDirectX 11.3で実装された機能だ(
関連記事)。簡単に説明しておくと,古典的なテクスチャのようなリソースは「シーンが変わるたびにすべてを読み込む必要があり,効率が悪かった」(Agarwal氏)ため,リソースを一定の小さな単位「Tile」(タイル)に分けて管理することで,Tile単位で読み込めるようにしたのがTiled Resourcesとなる。
そして,そのTileに,それこそ「温度」などといった属性情報を付加できるようにしたのが,Volume Tiled Resourcesである。
その例として示されたのが下のスライドで,これは,Volume Tiled Resourcesで,流体シミュレーションベースの煙を表現したものとなる。Game Developer Conference 2015(以下,GDC 2015)の「Sparse Fluid Simulation in DirectX」というセッションにおいて,NVIDIAのエンジニアであるAlex Dunn氏が説明した手法をベースにしたグラフィックス表現だ。
2つめの実例は,「
Conservative Raster」と呼ばれる機能にまつわるものとなる。
Conservative(コンサバティブ)は「保守的な」といった意味を持つ単語だが,通常,ラスタライザはトライアングルを描画するとき,トライアングルに沿ってピクセル埋めてトライアングルを表示する。それに対してConservative Rasterはトライアングルが少しでも横切ったピクセルすべて埋めてしまうという違いがあるそうだ。
その実例として示されたのが下のスライドで,これは,レイトレーシングを応用した影の描画となる。Conservative Rasterが無効だと,レイトレーシングベースの影を生成するとき,影の一部に隙間が生まれてしまうが,有効化するとこれが見事に埋まるというのが見どころだ。
ちなみに,この「レイトレーシングを応用した影描画」も,GDC 2015の「Hybrid Ray-Traced Shadows」というセッションにおいて,NVIDIAのエンジニアであるJon Story氏が詳細を明らかにしている。
今回の説明会で,
Fermi以降,第1世代MaxwellまではDirectX 12のベースAPIどまりとなり,第2世代MaxwellからDirectX 12のフル機能がサポートされることがはっきりした。実際にゲームでFeature Level 12_1まで使われるかどうかは何ともいえないが,フル機能をサポートできるかどうかというのは,今後の“GPU競争”における1つのテーマになり得るだろう。
ちなみにAMDの場合,DirectX 12をサポートすると述べてはいるものの,「Graphics Core Next」アーキテクチャのバージョン1.0,1.1,1.2がそれぞれどのFeature Levelをサポートするかについて,公式な情報は出していなかったりする。もちろん,現時点でもいろいろ語られてはいるわけだが,いずれAMDからも情報が出てきたときには,気に留めておくと,GPU選びの参考になるはずだ。
VR技術のサポートをGameWorksに追加
NVIDIAは,Oculus VR製の「
Rift」に代表される,仮想現実(Virtual Reality,以下 VR)対応ヘッドマウントディスプレイ(以下,HMD)に関する開発者サポートも,GeForce GTX 980 Tiと同時に発表している。Agarwal氏いわく,ゲームデベロッパ向けに配布されているソフトウェア開発キット「GameWorks SDK」に,APIとライブラリのセットたるGameWorks VRが追加されるとのことだ。
GameWorks VRに含まれる機能は,下のスライドに書かれている5つ「Multi-res Shading」「VR SLI」「Context Priority」「Direct Mode」「Front Buffer Rendering」がメインになるそうだが,Agarwal氏は今回の説明会でMulti-res Shadingについてとくに時間を割いて説明を行っている。
Multi-Resolution Shadingは,MaxwellアーキテクチャのGPUを使った,レンダリングの高速化および低遅延化技術である。
VR対応HMDでは,「画面の中央はよく見える一方,視野から外れる画面の周囲はよく見えない」という特性がある。ならば,画面の中央は高解像度でレンダリングして精細感を上げつつ,周囲は解像度を落として処理負荷を下げようというのが,Multi-Resolution Shadingにおける基本的な考え方だ。
下のスライドがその例で,このように,映像をいくつかの区画に分けて,中央は高解像度でレンダリングするが,周囲は余分な情報を落としてしまう。これにより「最大で20%程度の高速化を図ることができる」とAgarwal氏は述べていた。少ない描画遅延が何より重要なVR対応HMDにおいて,遅延の低減に大きな効果を期待できるそうである。
筆者は,実際にRiftの最新版デモ機「Crescent Bay」を使ったデモも体験したのだが,Multi-Resolution Shadingを使って周囲の解像度が落とされても,普通に使う分にはまったく違いが分からなかった(※違いをチェックしようと目をこらせば,分からないこともない)。人間の目で気づかない範囲で情報量を減らせるというのは,確かに効果的といえるだろう。
VRの開発支援というと,GDC 2015でAMDが「LiquidVR」を大々的に発表しており(
関連記事),NVIDIAはちょと遅れた感があったが,GameWorks VRと名前を与えて,ようやく本腰を入れてきたというところだろうか。GDC 2015のタイミングで発表できていれば,もう少しアピールできたのかなという気もするが……。
いずれにしても,これでNVIDIAとAMD両社によるVR技術支援施策が出揃ったわけで,今後,ますます競争が激しくなりそうだ。