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

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

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

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

LINEで4Gamerアカウントを登録
QRコードでLINEの4Gamer
アカウントを友達登録すると
月〜金の週5回,21時に厳選
ニュースをお届けします!
※購読にはLINEアプリが必要です
[GDC 2016]シェーダモデル6.0がやってくる! Microsoftが語った「次のDirectX」
特集記事一覧
注目のレビュー
注目のムービー
印刷2016/03/17 19:45

イベント

[GDC 2016]シェーダモデル6.0がやってくる! Microsoftが語った「次のDirectX」

 Game Developers Conference 2016(以下,GDC 2016)における「DirectX 12 Advancements」(DirectXの発展)という題名のセッションで,Micosoftが「次のDirectX」の仕様について言及した。


DirectX 12が抱える課題とその対策


Max McMullen氏(Direct3D Development Lead, Microsoft)
 セッションで最初に登壇したのはDirect3D開発のリーダーであるMicrosoftのMax McMullen氏である。
 氏によれば,Windows 10のリリースとほぼ同時に提供が始まったDirectX 12であるものの,本格的な活用が始まったのは最近になってからで,実際,開発シーン各方面からの要望も最近になって届き始めたそうだ。

 それを踏まえて「すぐやる」系の改善リストに挙がっているのは,第1に,Windows 10以降のWindowsの標準アプリ形態となるUniversal Windows Platform(UWP)アプリで,FreeSyncやG-SYNCを利用できない問題への対処とのことだ。この問題には,APIを新設することで対応する。

UWPアプリでFreeSyncとG-SYNCが使えないことへ対応する
DirectX

 2つめは,Pipeline State Object(以下,PSO)の増大問題対策だ。DirectX 12では,グラフィックスパイプラインの流れを定義してPSOとすることで,APIコールのオーバーヘッド削減を行えるのだが,定義したパイプラインの構成を少し変えただけでも別のPSOとして定義しなければならないため,グラフィックス表現規模の大きいゲームやステージバリエーションの多いゲームでは,PSO数の増大が問題となった。そこで,複数のPSOをひとかたまりにして管理できる「PSOライブラリの定義」を可能にするのだそうだ。

PSOライブラリの概念を導入
DirectX

 また,DirectX 12ベースでのGPUデバッグ手法,環境の改善などを行うともMcMullen氏は予告していた。その幾つかについては,北米時間3月20日よりサンフランシスコで開催予定となっているMicrosoftの開発者向けイベント「Build 2016」で詳しい解説が入るようだ。

DirectX 12におけるGPUデバッグ手法,環境の改善などにも取り組むとのこと
DirectX DirectX


Shader Model 6がやってくる! ……そもそもShader Model 6とは?


Shader Model 6がやってくる!
DirectX
 話題は,開発が進められている新しいShader Model「Shaer Model 6」に移る。

 Shader Modelとは,プログラマブルシェーダのバージョンともいうべきもので,DirectX 8.x以降だと,以下DirectXとの間には以下のような対応関係があった。

  • DirectX 8.x:Shader Model 1.x
  • DirectX 9.x:Shader Model 2.x〜3.x
  • DirectX 10.x:Shader Model 4.x
  • Directx 11.x:Shader Model 5.x

 では,DirectX 12はどうかというと,Shader Model 5世代のままだった。というのも,DirectX 12は基本的に,「DirectX 11世代のGPUをより低オーバーヘッドで活用しよう」というコンセプトのもので生まれた新版だからだ。
 要するに,「遅ればせながら,次世代Shader Modelについての開発検討を開始した」ということなのである。

Chas. Boyd氏(DirectX PM, Microsoft)
 このセクションの講演を担当したのは,古くからDirectXの開発に関わってきたChas. Boyd氏だ。氏によると,Shader Model 6ではまず,シェーダ命令の粒度を変更することが可能になるという。

 ここでは説明を分かりやすくするために画素(ピクセル)を想定して解説するが,Shader Model 5以前だと,命令実行粒度が1ピクセル単位だった。これをShader Model 6では「2×2ピクセル」のような複数ピクセル単位で実行することを許容するというのだ。
 これはタイルベースの処理を行うのに都合がいいだけでなく,GPGPU用途での応用時にも効果を発揮しそうである。

粒度を粗くして処理できるということは,GPUネイティブのSIMD幅に適合させた最適化も行いやすいということでもある
DirectX

 また,Shader Model 6では,近い将来に登場予定のGPUで実装が見込まれる各種機能への対応も進む。もっとも,これはShader Modelの歴史を振り返れば必然の流れではある。
 ちなみに,具体例としてBoyd氏が挙げていたのは,VR(Virtual Reality,仮想現実)向けビューポート,プログラマブルブレンディング,プロシージャルテクスチャなどだ。

近い将来のGPUに搭載される機能への対応をShader Model 6では実現予定
DirectX

データ並列プログラミングの旨味はそのまま持続させることに意義がある,とBoyd氏
DirectX
 Shader Model 6では,言語仕様に関しても大きな拡張を予定しているようだ。
 よりC++らしい列挙型(Enum)や共用体(Union),仮想関数(Virtual),ビットフィールド構造体などのサポートなどをBoyd氏は挙げていたのだが,それとは別に「GPUプログラミングモデルの良さは活かしていきたい。CPUプログラミングになろうとしているわけではない」とも述べている。文字型オブジェクトやスタック操作,再帰制御,C99/Stdlib互換などをサポートする予定はないとのことだ。

Shader Model 6で採用見込みの要素(左)と,不採用が確定した要素(右)
DirectX
Shader Model 6で採用候補の要素(左)と,採用見送り候補の要素(右)
DirectX DirectX

 また,Shader Model 6のHLSL(High Level Shader Language)からは,コンパイラ基盤としてLLVM/Clangを採用する方針もBoyd氏は打ち出していた。
 LLVM(Low Level Virtual Machine)はオープンソースプロジェクトであることから,GPUプログラミング言語の言語仕様自体や最適化手法を独自に設計することができるようになるとのことだ。
 Microsoft側でも,この仕組みの実装を開始しており,2016年末までには実動デモを披露することができるだろうと,Boyd氏は見通しを示している。

Shader Model 6のプログラミング言語はLLVMベースとなる
DirectX DirectX
シェーダプログラムのコンパイルおよび最適化の流れを旧モデルと新モデルとで比較したもの。「Clang HLSLコンパイラ」の部分を置き換えれば,別言語でシェーダプログラムを書くこともできる
DirectX

 新しいシェーダステージが追加されたとか,そういうトピックではなかったが,DirectX 12のプログラミングモデルがよりネイティブになったことに呼応する形で,言語仕様もこの機会に近代化しようということなのだろう。

Shader Model 6のロードマップと現在の開発状況。現在はShader Model 5.xをLLVMで実装するために「Clang HLSLコンパイラ」を開発しているが,これはもう実動レベルになっているという
DirectX DirectX

Microsoftのゲーム開発者向け公式情報ページ(英語)

  • 関連タイトル:

    DirectX

  • この記事のURL:
line
4Gamer.net最新情報
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:08月15日〜08月16日
タイトル評価ランキング
92
82
NieR:Automata (PS4)
82
ARMS (Nintendo Switch)
78
スプラトゥーン2 (Nintendo Switch)
74
鉄拳7 (PS4)
2017年02月〜2017年08月