いよいよ,PC版「ロスト プラネット エクストリーム コンディション」(以下ロスト プラネット)が日本でも発売される。Xbox 360版のミリオンヒットタイトルがPCでも遊べるようになるのだ。
体験版が公開されたのは2007年5月16日。そのグラフィックスクオリティはもちろん,「もともとPC版だったのでは?」と思えてしまうほど,豊富なグラフィックスオプションが用意されていたことは,かなり衝撃的だった。
今回は,そんなロスト プラネットのグラフィックスオプション設定について,同タイトルで採用されているカプコンの最新世代ゲームエンジン「MT Framework」開発チームの主要人物達から直接解説してもらえたので,その内容をお届けしたい。
取材時に用いられたのは開発途上版なので,ひょっとすると製品版では微妙に内容が変わるかもしれない。また,今後のバージョンアップで変更される可能性もあるので,あくまで本記事の内容は「製品の開発途上版をベースとしたもの」と理解してほしいが,おそらく製品版でも詳細なオプション解説はないと思われるので,すべてのプレイヤーにとって参考になるはずだ。
というわけで,さっそく用意されているオプション項目を順に見ていこう。ロスト プラネットのグラフィックスオプションは「PC Settings」以下の「Video/Audio Settings」にある。
|
|
これがPC SettingsのVideo/Audio Settingsにある設定項目。スクロールできる「ビデオコンフィグ」の項目を今回は取り上げる |
|
フレームレートをリアルタイムで表示させるかどうかを指定する。
自分のPCでロスト プラネットを動作させたとき,だいたいどれくらいのフレームレートで動作しているのかをチェックするために活用できる。PCをアップグレードしたときなどは,この値を確認して,自己満足に浸るのも悪くない。
ジャギーを低減するアンチエイリアシング処理の設定。
選択肢のうち,2x/4x/8xは通常のマルチサンプルアンチエイリアシング(MSAA)処理になり,C8X/C8XQ/C16X/C16XQは,GeForce 8シリーズで新搭載された拡張型MSAAであるCoverage Sampled Anti-Aliasing(CSAA)になる。CSAAについての基本的な解説は本連載バックナンバー「『GeForce 8800』のポイントをブロックダイアグラムから探る」,アンチエイリアシングの基礎概念については同「『CrossFire』の秘密に迫る」を参考にしてほしい。
さて,MSAAへの理解はあるという前提でCSAAについて簡単に説明すると,サブピクセルの深度値(=Z値)と色値を圧縮格納しつつMSAAを実行する,いうなれば「圧縮処理付きMSAA」のことだ。GPUの処理全体におけるメモリアクセスは遅いため,CSAAを適用することで多少の計算処理が介入するとしても,メモリ消費量やメモリバス消費量を低減できればパフォーマンス向上が期待できるというわけ。もちろん,圧縮されるとはいえサブピクセルサンプル数は事実上増えたことになるから,ジャギーの低減はちゃんと結果として現れるという理屈である。効果のほどは
レビュー記事に掲載されているので,興味のある人はぜひ参考にしてほしい。
ちなみに「C16X」は4xサブピクセルサンプルで16x MSAA相当のアンチエイリアシングを実現するという16x CSAAのこと。“Q”はクオリティ=品質重視の意味になり,「C16XQ」だと,8xサブピクセルサンプルで16x MSAA相当とされる16xQ CSAAになる。
同様に,「C8X」は4xピクセルサンプルで8x MSAA相当とされる8x CSAA。順当にいけば「C8XQ」は“8xピクセルサンプルで8x MSAA相当”の“8xQ CSAA”になるが,一見して分かるように,これは8x MSAAと負荷&効果が同じ。設定する意味はない。
|
|
アンチエイリアシング処理なし(左)とC16XQ設定時(右)における見栄えの違い。画面の一部をアップにしてみた |
|
石田智史氏(カプコン 第二制作部 ソフトウェア制作室 プログラマー)
AMDのATI Radeon HD 2000シリーズでサポートされるCustom Filter Anti-Aliasing(CFAA)には対応していないのだろうか。
カプコンの第二制作部 ソフトウェア制作室に所属するプログラマーで,ロスト プラネットでも採用されているカプコン独自のゲームエンジン「MT Framework」を開発した主要人物の一人である石田智史氏は,この点について,「コーディングの観点からすると,サンプル数とクオリティの設定の組み合わせでCSAAになったりCFAAになったりするだけです。ATI Radeon HD 2000側のドライバでちゃんと動作確認ができれば対応は簡単です」と述べる。2007年6月の取材時点では未対応だったが,アップデート等で対応していけるということのようだ。
ところでアンチエイリアシング処理といえば,最近のリアルタイム3Dグラフィックスにおいてよく話題にのぼる「Alpha Coverage Anti-Aliasing」(ACAA)はロスト プラネットで活用されているのだろうか。ACAAは,例えば金網のような,半透明と,そうでない不透明なピクセルが混合したテクスチャを適用したポリゴンに対し,その金網の筋をちゃんとエッジと見なしてアンチエイリアシング処理を適用する機能のことだ。
「活用しています。ただ,定番の金網では使用してないんです。なぜかというと,ロスト プラネットだと金網は半透明で処理しちゃっているからで,ACAAは草などで使っています。あとDirectX 10では仕様としてα-testがなくなってしまっているので,その代用テクニックとしてACAAを活用していますね」(石田氏)
ハイダイナミックレンジレンダリング(High Dynamic Range Rendering,以下HDRレンダリング)の設定だ。
HDRレンダリングについても,連載バックナンバー「Half-Life 2: Lost CoastでHDRレンダリングの実体をチェックする」で詳しく説明してあるので,ぜひチェックしてほしい。定義は「表示に用いるディスプレイ機器の輝度/色域の限界にとらわれず,幅広い輝度&色域でレンダリングを行うこと」といったところになる。
上から「HDR」設定を「低」「中」「高」にしたところ。「低」では画面右端にマッハバンド(色の段階)が見られるが,「中」にはそれがない。さらに「高」だと,グレア(光のギラギラした感じ)がはっきりと見て取れるようになる
ロスト プラネットでは,このHDRレンダリングのレンダーターゲットとして,「高」設定時にはFP16-64bitバッファを活用している。そして「中」だと,α2bitにRGB各10bit整数の32bitバッファを使用することになる(ちなみにXbox 360版では,同ハードウェア特有となる,α2bitにRGB各10bit浮動小数点のFP10(指数3bit仮数7bitの“7e3”)バッファを採用していた)。
一方「低」では,各αRGBを8bit整数とした通常の32bitバッファ――HDRバッファと区別するために最近ではLDRバッファと呼ばれる――を活用した,疑似HDRレンダリングが採択される。
HDRレンダリングを行うときの負荷やグラフィックスメモリ消費は「低」と「中」がほぼ同等。ただし,ダイナミックレンジは「中」のほうがかなり広くなるため,“コストパフォーマンス的なお得感”では「中」に軍配が上がる。
「高」設定時のリアルHDRレンダリングについては,先述の
バックナンバーを参照してもらうとして,ここでは,「低」の疑似HDRレンダリングについて簡単にその仕組みを解説しておこう。
ロスト プラネットでの疑似HDRレンダリングでは,一般的なLDRバッファ(=通常の32bitバッファ)だとRGBそれぞれ0〜255で表現される階調を0〜127までに割り当てる。そして,128〜255を高輝度階調とみなしてHDRレンダリングを行うのである。ダイナミックレンジ的にはたかだか2倍になる程度だが,HDRレンダリングに似た効果がそれなりに得られる。
このとき,512段階分の表現幅を256段階,つまり半分の階調に詰め込むため,分解能は半分になってしまう。「そのため,トーンマッピングを経て1677万色体系に戻されたときには,マッハバンド(疑似輪郭)が出やすくなっていますね」(石田氏)。RGBの各階調が半分に圧縮されるから,トーンマッピング後の色数は,1677万色の8分の1(8=2×2×2),約210万色になるわけだ。
ちなみに,この2倍輝度までを通常の整数32bitバッファで疑似HDRレンダリングする手法は最近のゲームだとよく見られる。有名なところでは,PlayStation 2用タイトル「ヴァルキリープロファイル2」がこの方式を採用していた。
マッハバンドが目立ちやすいのはグラデーション表現で,画像テクスチャを適用してしまった場合には目立ちにくくなる。なにより,バッファや帯域の消費量がFP16-64bitバッファの半分だから,パフォーマンスを稼ぐのには適している。だからこそ「低」設定ではこの技法が採用されているのだ。
|
|
左のスライドでは左(1x)が通常,中央(2x)が2倍,右(4x)が4倍の輝度を圧縮した場合の分解能が示されている。4倍だとマッハバンドがきつい。2倍はマッハバンドがなくはないがなんとか我慢できるレベル? 右のスライドは同条件で大理石模様の画像テクスチャを適用した場合。4倍だとさすがにマッハバンドが目立つが,中央の2倍階調圧縮ではほとんど目立たない。整数バッファを活用した疑似HDRレンダリングで2倍階調圧縮が利用されるのはそうした理由からだ
(出典:GDC 2005 Practical Implementation of SH Lighting and HDR Rendering on PlayStation 2/Yoshiharu Gotanda/Tatsuya Shoji/Research and Development Dept. tri-Ace Inc.) |
|
「テクスチャフィルタ」は,ポリゴンにテクスチャを適用するときに,拡大縮小処理の技法として何を利用するか指定するもの。テクスチャフィルタリング処理の仕組みや原理についても,筆者の連載バックナンバー「『テクスチャの異方性フィルタリング』ってなに?が詳しいが,「バイリニア」が最も低負荷で高速となり,画面奥に行くほどボケが強くなる。
さて,テクスチャフィルタリングとは,いってみればテクスチャにぼかしをかけてジャギーを目立たなくする技術である。また,ここでは同時にMIP-MAPという,遠くのテクスチャ画像は小さくしてデータの負荷を軽くする技術も併用されているわけだが,何段階かに分けて行われるMIP-MAPの“変わり目”がバイリニアフィルタでは鮮明に見えてしまっている。
これを距離に応じて適切にブレンドしてやろうというのが「トライリニア」だ。さらにポリゴンの傾きによる歪みを補正してマッピングの精度を上げようというのが異方性フィルタリングと呼ばれる技術である。異方性フィルタリングでは,ロスト プラネットにおけるサンプル数は4x/8x/16x(「4倍/8倍/16倍」)の3段階。サンプル数が多くなるほど描画品質が上がる。
「テクスチャ解像度」はテクスチャの品質を決定する項目だ。「高」が標準かつ基準で,「中」は「高」の半分の解像度になり,「低」は「中」の半分になる。例えば1024×1024ドットのテクスチャがあったとすると,「高」ではそのまま,「中」では512×512テクセル,「低」だと256×256テクセルとなる。
|
|
瓦礫の“模様”に注目してほしい。「低」(左)と「高」(右)ではここまで違う |
|
基本的なテクスチャのアートワークはXbox 360版のものをそのままPCに持ってきているが,表示品質自体はPC版のほうがXbox 360版を上回ることになるという。
「Xbox 360版では,法線マップ,HDRテクスチャといった特殊テクスチャに対して,容量よりも品質を重視した高品位版,そして品質よりも容量を重視した低品位版の二つの圧縮技法を実装していましたが,PC版では,すべて高品位版の圧縮技法を採用しています。よってテクスチャ解像度を『高』に設定すると,映像はXbox 360よりも映像は美しくなりますね。Xbox 360だと,低品位版の高圧縮技法を採用したテクスチャの部分でマッハバンドなどが出ていましたが,PC版ではそれがありません」(石田氏)
微細凹凸を表現するバンプマッピングでは,その微細凹凸の法線ベクトルの分布をテクスチャに格納した法線マップを使用する。
|
|
法線マップを使ったバンプマッピング(=法線マッピング)なしとあり。いうまでもないが,右が“あり”だ |
|
ところで,テクスチャの圧縮には業界標準のDXTC(DirectX Texture Compression)という技術がある。DXTCは本来,画像テクスチャを圧縮するためのもので,法線マップの圧縮には適さないのだが,ほぼすべてのGPUで互換性が保証されることもあって,工夫のうえ活用されるケースが多い。
DXTCには圧縮するテクスチャのタイプや圧縮品位に応じてDXT1〜DXT5の種類があり,元のテクスチャサイズに対してDXT1では圧縮率8分の1,DXT5だと同4分の1で,DXT5とDXT1では相対的に2倍ものクオリティの違いがある。Xbox 360版ロスト プラネットでは,この法線マップの圧縮に当たって,より目に付きやすい重要なテクスチャにはDXT5を,そうでないところにはDXT1を割り当てることで,家庭用ゲーム特有の厳しいリソース容量制限に対応していた。
本来画像テクスチャを圧縮するメソッドであるDXTCを用いて法線マップを圧縮するため,Xbox 360版ロスト プラネットでは独自の工夫が盛り込まれているのだが,本稿はPC版にフォーカスしているので,詳しくは述べない。興味のある読者は下のスライドを見てほしい。
ポイントは,異なる圧縮方法,異なる圧縮率で圧縮した法線マップを同一シェーダで展開できる点と,値の最小値と最大値に着目して非可逆圧縮を行うDXTCにおいて,なるべく品質が下がらないよう,法線ベクトルの要素のx,yをうまくαRGBに割り当てている点だ。
|
|
法線マップのDXT圧縮テクニックを示したスライド |
|
先ほど述べたように,Xbox 360版だとDXT1とDXT5が使い分けられていたのに対し,PC版では高品位版のDXT5メソッドのみが採用されている。
HDRテクスチャのDXT1圧縮ではHDR情報が失われてしまうという妥協があったり,高階調テクスチャのDXT1圧縮ではHDR情報は維持できるものの階調が大ざっぱになりマッハバンドが強く出てしまっていたりした。その点,PC版では高品位のDXT5圧縮のみを使用するため,すべてのテクスチャが同一の高い品質で描き出されるというわけだ。
|
|
HDRテクスチャのDXT圧縮テクニックを示したスライド |
|
|
|
高階調テクスチャのDXT圧縮テクニックを示したスライド |
|