Game Developers Conference 2012レポート

【GDC 2012】日本未発売のWindows版「デウスエクス」(Deus Ex:Human Revolution)の

DirectX 11対応グラフィックスの秘密


3月5日~9日開催(現地時間)

会場:San Francisco Moscone Center


 世界最大規模のゲーム開発者会議「GDC2012」が開幕した。

 GDCの開幕直後はチュートリアル(TUTORIALS)と呼ばれるセッションが2日間にわたって行なわれる。チュートリアルといっても全てが「初心者向けのセッション」というわけではなく、昨年から現時点までの技術動向などをおさらいするような比較的高度な内容のセッションも数多く執り行なわれる。

 マイクロソフト、AMD、NVIDIA、そして有力ゲームスタジオのスター開発者の面々が顔を揃える「Advanced Visual Effetcs with DirectX」も、毎年恒例の人気コースセッションだ。

 今年は、ゆっくりとだが、少しずつ活用が進みつつあるDirectX 11を中核に据えたセッションが8セッション行なわれた。

 まずは、本コースセッションの最初のセッションとなった「Augmenting the PC Graphics of Deus Ex:Human Revolution using DirectX 11 Technology」をレポートする。




■ 日本未発売の「デウスエクス」のWindows版はDirectX 11対応だった


Matthijs De Smedt氏(Nixess Software、グラフィックスプログラマ)

 「Deus Ex:Human Revolution」は、日本でも2011年夏に「デウスエクス」としてスクウェアエニックスから発売されたアクションRPGだ。日本ではPS3版とXbox 360版のみが発売となったが、海外では同時にWindows版もリリースされている。

 しかも、Windows版は、PS3、Xbox 360版のベタ移植ではなく、DirectX 11対応となっているのだ。

 Windows版の開発にあたっては、独立系の開発スタジオであるNixxes Softwareが協力しており、今回のセッションでは、このNixess Softwareのグラフィックスプログラマ、Matthijs De Smedt氏が登壇し、「デウスエクス」Windows版に使用されたDirectX 11テクノロジーについての解説を行なった。

 「デウスエクス」に用いられたグラフィックスエンジンは「トゥームレイダー:アンダーワールド」のレンダリングエンジンで、フォワードレンダリングとDeferred系のLight Pre-passレンダリングのハイブリッドエンジンに仕立てられている。開発のメインターゲットとなっていたのはPS3、Xbox 360版であったため、Windows版の開発にあたっては、コストを掛けられないという制約があったようだ。

 そこで開発チームは「PS3、Xbox 360よりも大幅にハイパワーなGPUパワーを、アーティストの手をほとんど借りずに、上質に見せるためにはどうすればいいのか」ということに頭を悩ませることとなった。

 結果、導き出されたのは「DirectX 11ベースとすること」で、しかも「プログラマブルシェーダ仕様5.0(SM5.0:Shader Model5.0)を使う」、「Compute Shaderを使う」、「テッセレーションを活用する」という、意外にも志の高い目標だった。




■ PS3、Xbox 360版にはないWindows版ならではの表現

 PS3版、Xbox 360版にはない、Windows版専用のDirectX 11グラフィックスエフェクトとしては「アンチエイリアス処理」、「SSAO」、「被写界深度表現」、「テッセレーション」、「ソフトシャドウ」などが組み込まれた。

● アンチエイリアス処理

 PS3版、Xbox 360版でもアンチエイリアス処理はなされているが、古典的なMSAA(Multi Sampling Anti Aliasing)が採用されているのみだ。

 これに対して、Windows版では、最近流行のイメージベース(画面座標系)ポストプロセスによるアンチエイリアス処理が選べるようにした。

 実装されたのは「DLAA」、「FXAA」、「MLAA」の3タイプの手法。

 DLAAは「Directionally Localized Anti-Aliasing」の略で「STARWARS:The Force Unleashed 2」で採用されたことで脚光を浴びた手法だ。簡単に言うと、画像解析でエッジを検出し、そこにブラーをかけるというアプローチになる。詳しいアルゴリズムについては、Lucas ArtsのDmitry Andreev氏のサイトや原案にもなっているAMDの開発者サイトに詳しい。

 FXAAは、NVIDIAのTimothy Lottes氏が考案した手法で、昨年は大ブームと言えるほど一気に採用が広がった手法だ。こちらも画像解析でエッジを抽出して抽出したエッジに対してぼかしを施すというアルゴリズムになる。詳細はこちらを参照(PDF形式)のこと。

 MLAAも、画像処理的なアプローチだが、こちらは「明暗差の出方」に着目し、その出方のパターンに応じた適応型のアンチエイリアシング処理を行なう。例えば明暗差(すなわちジャギー)がL字形に生じていたら、これが「\」状になるよう、色(≒階調)補間を行なう。詳細はこちらを参考にして欲しい。


全体像各手法ごとのビジュアルの違い。□内が比較ポイント

 DLAAは暗めの箇所のジャギーの低減が弱く、FXAAは逆にそうした箇所のジャギーの低減に強い。ただFXAAはドット単位のディテールが若干ぼやける傾向にあり、MLAAはそうした傾向はないものの、明暗差のない箇所のジャギーがやや残り気味になる。

 どれも一長一短というか得意不得意がある……というのがSmedt氏の見方で、「ユーザーがは、どれか好きな手法を選べばよい」ということのようだ。

● 被写界深度の表現

 PS3版、Xbox 360版では、9×9テクセルのガウシアンブラーをかけて実現していた被写界深度の表現だが、Windows版では、Compute Shaderを用い、29×29テクセルのガウシアンブラーをかけ、より広範囲にボケ味が広がる表現を実現している。


全体像表現の比較。29×29の方がボケ味が強い

● SSAO

 SSAOはScreen Space Ambient Occlusionの略で、レンダリング結果のZバッファを探査して架空の環境光からどのくらい遮蔽されているのかを求めて「陰色」を付けるエフェクトだ。


SSAO OFFSSAO ON

 PS3版、Xbox 360版では9×9テクセルの範囲のZバッファ探査をピクセルシェーダで行なう実装だったのに対し、Windows版はCompute Shaderを用いて、19×19テクセルの範囲のZバッファに対して半球状の探査を行なう実装になっている。

 これにより、さらに正確な自己遮蔽具合が再現されるようになったのだが、生成された陰色が若干ノイジーになってしまったため、着目しているZバッファのテクセルに隣接する箇所の深度値との差分を計算して、その部分のジオメトリ情報(実際には法線情報)を疑似的に復元してから、遮蔽探査を行なうようにする工夫を盛り込んだとのこと。

 意外にも、見た目よりも結構重い処理が実装されることとなったようだ。


SSAOの結果がノイジーに法線バッファ
再構築した法線情報。これを元に遮蔽探査を行なうこれによってこのような安定したSSAOが得られるようになる

● テッセレーション

 テッセレーションの活用に関しては最初はディスプレースメントマッピングによるディテール付加までをやろうとしたが、そのディテールを表現するためのハイト(高さ)マップ情報が必要なことと、テクスチャの継ぎ目でクラック(亀裂)が起こることが確認され、追加のアートワークが必要になると判断し、採用を断念した。

 その代わり、多ポリゴン化による3Dモデルのスムーズ化の方向性でテッセレーションを活用することとした。採用アルゴリズムは、フォン・テッセレーションを採用。


テッセレーション・オン/オフの比較(ワイヤーフレーム)
テッセレーション・オン/オフの比較(ファイナル)
テッセレーション・オン/オフの比較(拡大)テッセレーション・オン/オフの比較(拡大)

 ただ、この種のテッセレーション活用では誰もが直面するクラック(亀裂)の問題と、膨張の問題に直面する。

 亀裂は、3Dモデルを構成する頂点のうち、同一座標に複数の頂点があって、その頂点が異なる法線を持つときに起こりうる。この問題に対しては、プリプロセスで、そうした箇所の頂点の法線を同一値に揃える処理を施すことで解決する。


テッセレーションのクラック問題テッセレーションのクラックが起こる理由

 膨張の問題とは、テッセレーションによって多ポリゴン化されることで不必要に丸みを帯びてしまう現象のことだ。これについては、エッジ付近に追加のポリゴンを盛り込むアートワークを施すことで対策した。つまり、テッセレーションされて多ポリゴン化されて丸みが起こるのを、そうしたダミーポリゴンに対して起こるように調整したというわけだ。


テッセレーションするとならなくていいところまで丸くなってしまうテッセレーションによって丸くなってしまうところをダミーポリゴンで吸収させるアプローチ

 なお、テッセレーションは最大分割係数を3.0までとし、視点から10メートル距離境界内でのみ適用されるようにしたとのこと。また、ポッピング(3Dモデルの体積が変化して、ある距離を堺に3Dモデルが痩せたり太ったりして見える事)を避けるため、境界付近ではテッセレーションの分割率を3.0から0.0へフェードアウトさせる工夫を盛り込んでいる。テッセレーション時代のLOD処理のスタンダード手法といったところだろうか。

● ソフトシャドウ


ソフトシャドウ表現

 Windows版ではPS3版、Xbox 360版にはない、柔らかな影表現、いわゆるソフトシャドウ表現が盛り込まれている。これはピクセルシェーダによる9×9テクセルの近傍比率フィルタリング(PCF:Percentage Closer Filtering)によって実現されている。





■ 終わりに


 この他、Windows版では3D立体視への対応や、マルチモニタへの対応がなされている。

 3D立体視は、AMD、NVIDIAの両ハードに対応しており、マルチモニタは縦設置のモニタを組み入れてもちゃんと動作できるような対応力と自由度の高い多画面環境が実現できている。また、偶数画面時に問題になる、照準がベゼル位置に来てしまってプレイしにくい状況にも対応できるモードも搭載している。

 多くのPCユーザーのパソコンにはDirectX 11世代のGPUが搭載されているが、その高機能はほとんど使われずじまいだ。そうした高機能を酷使するようなPC専用のハイテク/ハイエンドゲームは、今では1年に数えるほどしか出てこなくなってしまった。

 家庭用機向けのゲームのPC版は海外では律儀に発売されるが、しかしそのほとんどがベタ移植。そのため、家庭用機と変わりばえのないDirectX 9世代のグラフィックスしか楽しめない場合がほとんどだ。

 そんななかこの「デウスエクス」は、限られた開発期間と開発予算のなかで最大限の努力をして先進のGPUテクノロジーを活用し、家庭用機版では見られないビジュアルをPCゲーマー届けてくれた。これはファンにとっては喜ばしいことである。

 こうした動きが、他のメーカーにも波及することを期待したいものだ。それと、日本でもWindows版の「デウスエクス」の発売を望みたい。


(2012年 3月 6日)

[Reported by トライゼット西川善司]