ニュース
カプコン,DX10版「ロスト プラネット」のグラフィックスをアップデート。8月17日実装
2007/08/09 23:59
 カプコンは,「ロスト プラネット エクストリーム コンディション」(以下ロスト プラネット)の大型アップデートを2007年8月17日に行うと発表した。その内容は多岐に及んでいるが,今回4Gamerでは,カプコンとNVIDIAが開催した,アップデートの技術的なポイントを解説する事前説明会に参加したので,カプコンの開発者自ら説明する新フィーチャーのポイントをレポートしたいと思う。ゲームプレイに関するアップデートについては,ぜひ別記事を併せてチェックしてほしい。

■DX10ではビジュアル表現とパフォーマンスが向上
■ジオメトリシェーダを利用した新しいエフェクトが追加に


 さて,今回のアップデートで追加されるのは,DirectX 10版ロスト プラネットのビジュアル表現およびパフォーマンスの向上だ。

 まずビジュアル表現についてだが,カプコンの第二制作部 ソフトウェア制作室 プログラマーで,今回技術面の解説をしていただいた石田智史氏いわく,「DirectX 10ではビジュアルが劇的に変わるといわれていますが,実際には,“DirectX 10でできること”の大部分はDirectX 9でもできます」。
 では,DirectX 10でしか実現できないことは何かというと,ジオメトリシェーダを利用したエフェクトと,GPGPU(※GPUに汎用計算をさせること)としての用途であり,ロスト プラネットでは前者を利用していると同氏。そして,製品版で実装されている以下のエフェクトについて,DirectX 10ネイティブのものを追加した改良版が,アップデートで実装されるという。
  • モーションブラー
  • 被写界深度
  • ファーシェーダ
●モーションブラー
DirectX 10ベースモーションブラーのイメージ。(1)ベロシティマップを作成し,(2)ベロシティ方向にジオメトリシェーダでラインを生成して,(3)それをアキュムレーションバッファに加算合成,(4)さらにイメージベースのブラー画像と合成する
 順に見ていこう。ロスト プラネットが採用しているモーションブラー技法「2.5Dモーションブラー」に関しては,連載「西川善司の3Dゲームエクスタシー」のバックナンバー「カプコンに聞く『ロスト プラネット』のグラフィックスオプション」が詳しいのでぜひ参考にしてほしい。

 従来の2.5Dモーションブラーは,「シーン内の3Dキャラクターが,前回位置から現在位置までどう動いたか」の情報を基に頂点を引き延ばしてブラー処理を行う,頂点ベースの処理だった。
 これに対して今回のアップデートで導入されるのは,ベロシティマップを参考にしてラインのジオメトリを生成し,それをアキュムレーションバッファに積み重ねて,ベースのイメージと合成する手法。テクスチャ(=ベロシティマップ)からジオメトリを生成するというのは,もちろんDirectX 9では不可能だ。

中央は,実際に64回描画してスーパーサンプリングした(要するにとてもリアルタイムではない手法で行った)“理想的なモーションブラー”。左はDirectX 9の結果で,動きの激しい,あるいは重なりの大きな部分でオクルージョンアーティファクト(Occulusion Artifact,シミのようなもの)が出ているのに対し,DirectX 10(右)では中央に近い,自然な結果になっている。ジオメトリシェーダがDirectX 9の限界を超えた例といえよう


●被写界深度
DirectX 10ベース被写界深度処理のイメージ。絞り形状のテクスチャを貼ったトライアングルを深度マップからジオメトリシェーダで生成し,それを四つのビューポートに分けてレンダリング。最後にそれらを合成している
 被写界深度とは,画面内でピントが合っているように見える範囲の大きさのこと。3Dグラフィックスにおいては,目標物(=対象)以外の部分をボカすことで,写真のようなシーンを演出する技法のことを指す。従来は,「ぼかした画像を何段階か用意しておき,視点からの距離に応じて混ぜ合わせてボケを表現する」のが一般的だった。
 それに対して今回の手法は,ピントのずれた範囲のドットを,距離に応じて実際の写真と同じように拡大して合成していくという手間のかかるものになっている。デプスマップ(Depth Maps,深度マップ)から,六角形の絞りの形をしたテクスチャを貼ったテクスチャをジオメトリシェーダで生成。それをアキュムレーションバッファに積み重ねていくイメージだ。

 さてDirectX 10には,シェーダ内でどのビューポートにレンダリングするかを決定できる「マルチビューポートレンダリング」(Multi-Viewport Rendering)という機能がある。そこで今回のアップデートでは,「焦点よりも奥」「焦点よりも手前」のビューポートを用意。さらにそれぞれについて「強く動かす部分」のビューポートを設け,四つのビューポートに分けてレンダリングして最後に合成するという手法が採用されている。

DirectX 9ベースではキャラクターの輪郭に周りのピクセルがかかってにじんでしまう(左)。しかし,DirectX 10ではそういったにじみがない。HDRに対応するほか,絞り形状も自由にできるため,非常にフォトリアリスティックな絵を作り出せる(右)というわけだ


有限の統合型シェーダユニットを奪い合うことになるため,パッチで追加される新機能を有効にすると,ユニットの数が少ないGeForce 8600以下ではパフォーマンスに影響があるはずと石田智史氏
 このとき,「なぜ六角形の絞りの形を,三角形のテクスチャに貼るのか?」という疑問を感じた人は鋭い。三角形では,六角形の周囲を余分に描いてしまうわけで,どう考えても四角形のほうが効率はいいはずだ。
 これについて石田氏は次のように説明している。

「GeForce 8800を利用しても,ジオメトリシェーダで3頂点を超える頂点を生成すると,極端にパフォーマンスが落ちるんです。そこで,今回用いているジオメトリシェーダのフィーチャーは,すべて2か3頂点にしました。四角形のほうが効率はいいんですけど,実際にパフォーマンスを計測すると,三角形のほうが四角形より1.5倍くらい速い。3頂点というのが,現状のジオメトリシェーダの一つのポイントかなと思いますね。よく紹介されているようなDirectX 10のジオメトリシェーダのサンプルをゲームで使うのはまだ現実的じゃないかな,と」

●ファーシェーダ
DirectX 10ファーシェーダを利用すると(開発機では)こんな感じに毛を伸ばすお遊びもできる
 毛の長さと方向をレンダリングしたテクスチャ「ファーマップ」(Fur Maps)を作り,それを基にジオメトリシェーダでラインを生成して毛を作り出している。
 従来の(DirectX 9ベースで行っていた)ファーは,テクスチャをレイヤー化して重ね,毛のように見せる「シェル」(Shell,外皮)技法を用いて実現していたが,DirectX 10ではジオメトリシェーダによって1本1本生成するため,より自然なファーになるというわけである。

ファーシェーダによるファー生成のイメージ。ファーマップを基に,ジオメトリシェーダで3次元方向へ“毛を生やす”処理を行っていく
ファーシェーダは服だけでなく,巨大なAK(エイクリッド,ロスト プラネットにおける敵キャラ)のうち2体「ウンディープ」と「テンケイル」にも(グラフィックスオプション設定次第で)適用される。上下いずれとも左がファーシェーダオフ,右がオンで,この2体に“毛が生える”。とくに蜘蛛のAKであるテンケイルには,いかにもな気味悪さが追加されており,必見


 今回追加された3要素は,すべてグラフィックスオプションの選択肢として新たに用意され,「DX10」という項目を選ぶと利用できるようになる。
 また,ジオメトリシェーダとは直接関係ないが,これまでDirectX 9版では最高でも「中」までしか選べなかった「影の品質」は,DirectX 9でも「高」を選べるようになるとのこと。パッチ適用前の製品版における「高」は「DX10」と呼び名が変わる。「中」が9サンプル,「(高改め)DX10」が32サンプルなのは変わらずだが,新しく用意される「高」は16サンプルとなる。
 現状の「高」はかなり負荷が高く,“重い”と評価されているが,「これは今回のアップデートでかなり改善していると思います」(石田氏)。

■新機能とドライバのアップデートで大幅に高速化
■「DirectX 10のほうがDirectX 9より速い」


アップデート後の状態で,ハードウェア構成およびグラフィックスオプションを完全に統一して比較したとき,DirectX 10版のほうがDirectX 9版より高速と謳うグラフ
 続いてパフォーマンスについてだが,今回のアップデートで新たにDirectX 10のフィーチャーであるシャドウマップの比較サンプリングや,新しいテクスチャフォーマットの利用をサポートしたことで,DirectX 10版はDirecX 9版よりも10%程度高速化されたとのこと。
 また,現状の製品版ですでに導入されており,アンチエイリアシング(以下AA)を適用しない状態でのみ利用できる「深度バッファのリゾルブ」も併用すると,DirectX 9版と同じグラフィックス設定で比較したときに,20%程度の高速化を期待できるという。

 国内外のさまざまなPCメディアが「DirectX 10はDirectX 9より遅い」というテスト結果を示しているため,意外に感じるかもしれない。だがロスト プラネットのパフォーマンスは,原稿執筆時点における最新のWindows Vista用公式グラフィックスドライバ「ForceWare 162.22」で,大幅に改善しているとのこと。
 「『DirectX 10のほうが遅い』のは,古いドライバで検証しているからでしょう」と石田氏は述べる。氏によれば,Windows Vista用のForceWareは以前,AAが適用されていると階層Zバッファの高速化が効かない,カラー圧縮がまるで有効にならないなど,大きな問題があった。ロスト プラネットは雪や爆発といったエフェクトの描画量が多く,一般的なタイトルと比べてフィルレートを大量に要求するのだが,こういったクリティカルな部分が最適化されていなかったため,パフォーマンスが上がらなかった,というわけ。Release 162では,カプコンが認識していたForceWareのバグはすべて解決したそうだ。

 「ロスト プラネットはNVIDIAにしか最適化していない」という声が上がっている件については,「コード自体は同じであり,ATI Radeonでパフォーマンスが上がらないのはドライバ(ATI Catalyst)のチューニングの差」という見解が示された。
 チューニングつながり(?)では,Windows Vista&DirectX 10において,テクスチャ管理機構が十全に機能しておらず,「グラフィックスメモリの中にテクスチャデータがすべて収まりきらないと,パフォーマンスが大きく低下する」という。このため,「GeForce 8800 GTS」のグラフィックスメモリ640MB版と320MB版では,特定の局面で後者のパフォーマンスが極端に低下するとのことだ。すでに開発者向けにはパッチが出ており,年末の「Service Pack 1」で修正される見込みだが,それまでは「テクスチャ解像度」設定を下げて対応するといいかもしれない。

カプコンからのフィードバックを受けて,NVIDIAがドライバをチューンするという関係がしばらく続いたとのこと。NVIDIAによると,とくにジオメトリ各頂点の演算の最適化とAAの最適化において,カプコンからの情報は非常に有用だったそうで,ドライバのアップデートによるパフォーマンスの大幅な向上も左のグラフのとおり示された。右はSLIによるスケーリングの効果を謳ったグラフだ


小数点以下が一桁増えたPERFORMANCE TEST。かねてより4Gamerはカプコンに「あと一桁!」と要望していたので,これは素直にありがたい。ちなみに製品版のアップデートに合わせて体験版も差し替えるのかについては,(やや消極的なニュアンスで)「検討中」だそうだ
 パフォーマンスといえば,体験版のみに用意されているベンチマークモード「PERFORMANCE TEST」が,アップデートで製品版にも導入されることになった。「ポイントは,フレームレートの小数点が一桁増えたところでしょうか(笑)」(石田氏)。
 ところで体験版のPERFORMANCE TESTでは,AKの挙動が毎回けっこう変わっていることに気づいただろうか。これはより実際のゲームに近づけるための措置で,要は「仕様」。ただ,AIの挙動はより安定するよう,アップデートに当たって改良されているという。


 ……以上,グラフィックスとパフォーマンス周りの新要素を駆け足で紹介してきた。ゲームプレイに関するアップデートは別記事を参照してほしいが,こと技術的な部分に関していうと,Windows XP版のユーザーは少々肩すかし気味に感じるかもしれない。とはいえ,DirectX 10ネイティブ対応を謳うロスト プラネットにとって,DirectX 10ならではのエフェクト実装は非常に大きな意味があるのも確かだ。
 「DirectX 10版の完成」とでもいえそうな今回のアップデート。Windows VistaでDirectX 10対応のグラフィックスカードを利用している人にとっては,待ちに待ったところといえるのではなかろうか。

 ロスト プラネットで初めてSteamに触れた人は戸惑うかもしれないが,アップデートはSteamを介して自動的に行われるので,すでにインストールされているなら,8月17日を待つだけで大丈夫。GeForceファミリーのGPUを利用しているなら,ドライバのアップデートをお忘れなく。(佐々山薫郁)


ロスト プラネット エクストリーム コンディション
■開発元:カプコン
■発売元:カプコン
■発売日:2007/07/12
■価格:7340円(税込)
→公式サイトは「こちら」

【この記事へのリンクはこちら】

http://www.4gamer.net/news/history/2007.08/20070809235901detail.html