WiiUで、グラフィックは良くなるか?

AMDの言葉で、SM4.1(Shader Model4.1)が搭載されることがわかったWiiU
現在PS3Xbox360で採用されているSM3.0とどのように違うのでしょうか? それを検証していこうと思います。
まず、GPU自体の仕事を見ていきましょう。今回の内容は、全て西川善司氏の「3Dグラフィックス・マニアックス」及び「3Dグラフィクス講座」の要約です。
 
GPUの仕事とは


1 マップを生成
2 家やらキャラクターやらを配置
3 頂点単位にシェーダー適用(頂点シェーダ=入力された1個の頂点に対し、1個の結果出力を行なうシェーダユニット)
4 頂点単位の増減(SM4.0以降)
5 カメラの設置

6 視界以外の描画を破棄
7 これまで計算上のポリゴンや位置情報を、描画ピクセルに変換
8 ピクセル単位にシェーダー適用
9 テクスチャ貼付け
10 深度チェック、アンチエイリアス処理 

http://journal.mycom.co.jp/column/graphics/009/index.html
 

まず、現在PS3Xbox360で採用されているDirectX9世代、SM3.0が登場したのが、2004年です。DirectXというのはWindowsのグラフィックAPIです。なので、どの世代のシェーダーモデル(SM)に対応しているかは、マイクロソフトのさじ加減です。対してシェーダーモデル(SM)は、グラフィックボードメーカーが設定した分類です。主にNVIDIAATI、そしてS3がしのぎを削り、様々な描画技術を向上させていきました。
しかしSM3.0の登場により、3Dグラフィックの世界は基本技術の完成を果たしました。PS3Xbox360のゲームを見ればわかるとおり、それまでのグラフィックとは描写力が比較になりません。SM4.0以降は、いわば派生技術の世界に突入しており、ただ美しいグラフィックを作成するのでなく、「いかに手間をかけずに、美しいグラフィックを作成するか?」といった方面に進んでいます。


 
・SM4.0のトレンドを見る
では、SM3.0とSM4.1ではどのように違うのでしょうか? グラフィックの世界は流行り廃りがあります。凄い技術でも対応したゲームソフトが出てこないと、その技術はマイナーに終わってしまいます。SM3.0に比べてSM4.1がマイナーなのは、ひとえにPS3Xbox360でSM3.0が採用されたからであり、技術的に優れていたかどうかはあまり関係がありません。またSM4.0や4.1に対応したDirectX10は、Windows Vistaで搭載されました。ご存知のとおり、OSとしてVistaはあまり評判が良くなく、早々にWindows7の登場となってしまいます。Windows7には、SM5.0に対応したDirectX11が載ってしまい、これもSM4.0がマイナーとなった理由です。


画像はATIが出したSM3.0と4.0の差です。いろいろシェーダーを適用するのに数の制限が大きくなっているのがわかります。
まずテクスチャへのアクセスが8倍の128枚に増えています。他にも同時に複数バッファにレンダリングする「マルチレンダーターゲット(MRT)」は、4から8へと拡張されています。さらに、これまでプログラムを組んでいたRGBE形式がサポートされ、HDRレンダリングが簡単になります。
http://journal.mycom.co.jp/column/graphics/005/index.html

そんな派生技術の集まりであるSM4.0以降ですが、もちろん影響の大きい新技術があります。それが「ジオメトリシェーダー」です。SM3.0まで描画の頂点数は、CPUの命令通り描画していました。これをGPUだけで増やしたり減らしたりできるようにするのが、「ジオメトリシェーダー」です。このジオメトリシェーダーを使って、様々な新技術が生まれました。その中で代表的なものが、以下の4つですね。

1 ファーシェーダ:毛や棘といった細かい表現を付け加える
2 モーションブラー:SM3.0までのブラー効果(カメラブラー)が、フレームの前後を重ね合わせて表示したのに対し、それぞれのオブジェクトごとに効果を与える。
3 ディスプレースメントマッピングテッセレーションと組み合わせてオブジェクトに近づくほど、頂点を分割して表示する。
4 ストリームアウトプット
最後の「ストリームアウトプット」が特徴的です。今までのGPUの処理の流れは、一番上の画像にあるとおり、一方通行でした。要するに毎回毎回最初から計算しているわけです。「ストリームアウトプット」は、描画した位置情報やテクスチャ情報を取得し、そこから再計算をすることが出来ます。GPUの中だけで処理が進むため、CPUの負荷が大きく減らすことができるわけですね。
 



・SM4.1のトレンドを見る
さてここまでSM4.0の進化の話でした。それではSM4.1になるとどうなるのか? 実はNVIDIAATIとの勢力争いから生まれたのですね。

DirectX 10.1」と題され、Microsoft関係者も登壇したDirectX 10.1リリース直前のDirect3D関連セッションなのにもかかわらず、AMD (ATI) の人間が登壇した。さらに、昨年末、NVIDIAに近い情報筋より聞いた情報によれば「NVIDIAとしては短期的にDirectX 10.1をサポートする予定はない。また、エミュレーションで実装するようなことも考えていない」というコメントが聞こえてきており、今回のDirectX 10.1はかなりAMD (ATI) 主導で生まれたと思われる。
 しかし、DirectX 10.1の新機能ラインナップはどれもこれも機能自体は、かゆいところに手が届くすばらしいものばかりで、非の打ち所がない。ただ、二大GPUメーカーの足並みがそろわなければ実際のアプリケーションで実用化される可能性は低い。
http://game.watch.impress.co.jp/docs/20080219/d3d.htm

WiiUが、AMDGPUを載せていなければ、たぶん他の選択となったでしょう。

1 シェーダの入出力がDirectX 10.0の128ビット×16個からDirectX 10.1では128ビット32個へと拡張
2 Zバッファに対してもアンチエイリアスを効かせられる。(セルフシャドウのジャギが軽減される)
2番目は、要するになんにでもAAがかけられるようになるので、たとえばセルフシャドウでもジャギがなくなり、ちゃんとした影に見えるようになるということです。
他にもプログラミングテクニックの幅が増えたり、手間が減ったりしています。
 



・SM5.0はどうなったのか
1 ハル・シェーダー搭載:ポリゴンの分割を計画
2 ドメイン・シェーダー搭載:分割されたポリゴンに“3Dとして”の意味付けや変移を与える
3 演算シェーダー搭載
4 テッセレータ搭載(固定シェーダー):ハルシェーダに従ってポリゴンを分割
5 シェーダーの機能ブロックをモジュール化
6 1つのテクスチャ命令で同時に4カ所のテクセルを読み出してしまう命令の新設(Gather()命令)
こうしてみてくるとDirectX 11は、新しいプログラマブルシェーダーが増加して、さらにGPGPU対応に便乗した機能強化がピクセルシェーダーに対して行なわれたという印象で、複雑度がもの凄いことになっている。この複雑な処理体系(パイプライン構造)はCPUと比較にならない。
http://game.watch.impress.co.jp/docs/series/3dcg/20090325_79920.html
 
シェーダープログラムは、SM3.0で一応の完成をみました。それまでのシェーダープログラムは、その長さにも制限があって、自由に開発できませんでした。SM3.0になり自由にプログラムできるようになって、今のグラフィックレベルに到達したわけです。SM4.0と4.1は残念ながら、SM3.0の派生技術版となります。SM3.0を効率良く、手間をかけずに扱うことができるわけですね。
SM5.0はまた大きく変わりました。それまで「頂点シェーダー」→「ピクセルシェーダー」の処理が、「頂点シェーダー」 → 「ハルシェーダー」 → 「テッセレータ」 → 「ドメインシェーダー」 → 「ジオメトリシェーダー」 → 「ピクセルシェーダー (→ 演算シェーダー)」と倍以上の工程に増えたのです。西川氏が「相当複雑」と言うわけです。しかし本格的なテッセレーションの組込みにより、ポリゴンは非常にリッチとなり、テクスチャもシェーダーもピクセル単位ごとに細かく設定できるようになります。SM5.0を使用したゲームの臨場感はやはり凄まじく、PS3Xbox360の次世代機は、当然に載せてくるでしょう。
 

・まとめ
さて、タイトルの「WiiUで、グラフィックは良くなるか?」という点ですが、間違いなく良くなるでしょう。毛のフサフサ加減が違うとか、トゲトゲ加減が違うとか、セルフシャドウのカクつきがなくなったとか、地味な差ですが良くなります。開発側にとっては、今まで制限のあった細かい部分が修正され、開発しやすくなるでしょう。むしろそっちの影響の方が大きいのが、SM4.0世代です。
気は早いですが、WiiUの後継機は、おそらくSM6.0や6.1といったSM5.0の派生技術版になるでしょう。任天堂のグラフィックレベルは、派生技術版と思うのが、今後も正しいと思われます。