「ロスト プラネット エクストリーム コンディション」(以下ロスト プラネット)にある豊富なグラフィックスオプションは,どのような意図で用意され,実際にどういった効果があるのか。それをカプコンの開発者から直接説明してもらう記事の後編をお届けしよう。
ロスト プラネットのグラフィックスオプションを変更できるのは,「PC Settings」以下の「Video/Audio Settings」にある「ビデオコンフィグ」。前編では「モーションブラーの品質」まで解説したので,後編では「エフェクトの解像度」から始めていきたい。
爆発の爆炎やエネルギー兵器の光線弾,雪煙といった特殊エフェクトなど,いわゆるパーティクル描画の品質の設定がこの「エフェクト解像度」の設定になる。
ロスト プラネットでは,このパーティクル描画量が半端ではない。なにしろ屋外シーンでは雪煙がものすごい量だ。しかもこれが半透明なので,重ね描きの負荷は尋常ならざるものになる。
こうした強烈な量のパーティクル描画は,最新世代の3Dゲームグラフィックスにおいて,GPU負荷の大きな部分を占めるようになっている。
しかし,このパーティクルエフェクトは,3Dゲームグラフィックスの「リッチさ」を左右するので,クオリティを落とさずに,なんとかこの“フィルレート喰い”を低減させたい。
そこで考案されたのが「縮小バッファ法」と呼ばれるテクニックだ。ちなみに,これはぶんか社製のXbox用タイトル「DOUBLE-S.T.E.A.L.」にて採用され,その後のパーティクルエフェクト実装におけるデファクトスタンダードになった日本発の技術である。
縮小バッファ技法の概念図
さてこの縮小バッファ技法では,高負荷な半透明パーティクルのエフェクトを低解像度次元で行ってフィルレートを稼ぐのがポイントだ。もともとエフェクト用のパーティクルはもやもやとした実態の掴みにくいものが多いうえ,解像度が多少低くてもあまり目立たない。そこで,シーンの表示解像度(レンダリング解像度)の半分や1/4といった低解像度で,その高負荷なパーティクルエフェクトのみを描き出すのだ。この低解像度で作成したエフェクトフレームを,そのシーンの出力解像度に合うように拡大してα合成する。
Xbox 360版では,Xbox 360-GPUのアンチエイリアシング処理機能ブロックを裏技的に活用して高精度なα合成を行っていた。しかし,PC向けGPUではこの技が使えないので,縮小バッファ技法の“粗”は,よく見ると目立ってしまう。
ではどうするか。ロスト プラネットPC版では,「低」設定のときこそ縮小バッファ技法を活用するが,「高」設定では活用しない。「高」設定時は,パーティクル描画を手抜きなしのリアル解像度で行うのだ。非常に高負荷となるものの,パーティクルの描画クオリティはXbox 360版よりも各段に上となる。これも“ハイエンドGPUいじめ”にはちょうどいいフィーチャーといえるだろう。
|
|
「低」(左)だと,エフェクトの解像度が下がり,オブジェクトとの境界にブロックが見えるが,「高」(右)ではそれらが解消する |
|
これは「ソフトパーティクル処理の無効/有効」に相当する設定だ。「低」でオフ,「高」でオンになる。
|
|
「低」ではソフトパーティクル処理が行われないため,(サムネイルでも分かるほど)地面と吹雪パーティクルの境界線が強く出てしまっているが,「高」だと実に自然だ |
|
パーティクルが,爆発や雪煙などといった特殊エフェクトの描画に用いられるものであるというのは前述したとおり。「特殊エフェクト描写を描いたテクスチャ」を板ポリゴンに描いて動かしたりアニメーションさせたりするイメージになる。
ここで表現したいのは煙のようなもの。だが,3Dグラフィックス的にはその1枚板(=板ポリゴン)を視線に相対するように描いているだけなので,このパーティクルと第三者(=3Dオブジェクト)が重なり合うと,パーティクルが切り取られたような鋭い境界線,エッジが出てしまう。
ソフトパーティクル処理とは,この「パーティクルの切り取られエッジ」を消し去る処理を行うものだ。さまざまな手法が考案されているが,ロスト プラネットでは,地味ながらもピクセルシェーダ負荷の高い技法が採用されている。
ソフトパーティクル処理の概念図
具体的には,パーティクル自体に仮想的な厚み情報を持たせておき,パーティクルを描画するときに,その厚み情報をシーンのZバッファの内容と比較することで,ほかのオブジェクトとの交差状況を確認。切り取られ線が発生しそうな交差線近隣ではパーティクル側の透明度を強くして(=α値を下げて)描く。そうすることで,パーティクルと第三者との交差線に向かってパーティクル色が薄まっていくため,結果的に交差線を見えなくさせられるというわけだ(パーティクルを描いたら,次回以降の描画での整合性を取るため,そのパーティクル側の厚み情報をシーンのZバッファに反映してやる必要がある)。
前述のとおり,実際には平板な板ポリゴンであるパーティクルだが,モコモコとした適当な厚みを持たされることで,交差線付近での色の薄まり方に抑揚がつき,副次的に立体的な陰影がつくメリットもある。
「エフェクトのボリューム」はそのシーンにおけるパーティクルの描画数を設定するもの。「高」設定がフルスペックの状態で,「低」設定はその半分の数になる。
「低」設定だと,屋外の雪煙や爆炎や閃光といったエフェクトパーティクルが半数になってしまうので,画面的には寂しくなる。しかし,パーティクルの挙動管理はメモリを消費するうえ,移動制御の計算には物理シミュレーションなどを使用するものもあったりする。つまり,「低」設定時にはGPU負荷だけでなく,CPU負荷も低減されるため,ミドルレンジ以下のGPUやCPUを搭載した環境では,積極的に「低」を選択するとパフォーマンスの改善を期待できるだろう。
|
|
ここでは「低」(左)と「高」(右)を比較してみよう。「低」では雪のパーティクル数が半分に減っている,光源の数も少ない |
|
光源には,そのシーンに決め打ちで設定されるものだけでなく,光源自体が動き回ったり,新たに出現/消滅したりするような動的なものもある。このオプションは後者,つまり動的光源のシーン内の最大登場数を設定して負荷を調整するものだ。
例えば爆炎などに新しい動的光源を設定すると,その光源からも背景やそのほかの3Dオブジェクトがライティングされ,シーンやパーティクルのリアリティが向上する。
なお,標準となる「高」設定時は,Xbox 360版と同じ最大8光源を利用可能。「中」だと4,「低」だと2になる。設定数を上回って,動的光源を設定できない場合,例えば爆炎が新たに発生しても,炎のエフェクトが描画されるだけで,爆炎そのものの“光源化”は行われない。
「通常のゲームシーンでは設定による差に気がつかない人も意外に多いと思いますが,陰影の豊かさが違ってくるので,イベントシーンなどでは見た目が変わってくるかもしれません」とは石田氏の弁だ。
|
|
「低」(左)と「高」(右)の違い |
|
「ディスプレイの解像度」と「ディスプレイの周波数」はそれぞれ,表示解像度と表示レート(=リフレッシュレート)に関する設定項目だ。前者に関していうと,基本的にXbox 360版の移植作である以上,基本的には1280×720ドットで表示できれば情報量として十分。後者は,Xbox 360版だと基本30Hzの可変レートだったが,PC版ではそれ以上も選択できるようになっている。
「体験版で,一部の表示解像度を選択できなかった問題について「製品版ではちゃんと選べます。16:9や4:3以外のアスペクト比のモード,例えばアスペクト比5:4の1280×1024ドットもちゃんと選べるようになっています。体験版のSXGA未サポートはだいぶ叩かれちゃいましたけど(笑),製品版では大丈夫です!」(石田氏)とのことである。
「垂直同期」は,表示フレームレートの上限を設定するか否かの設定になる。
「ディスプレイの周波数」で設定したリフレッシュレートを上限としたいならば「オン」,システムに余力があった場合にリフレッシュレートを超えたフレームレートになることを許容する場合には「オフ」とする。
ゲームをプレイするときはどちらでもいいが,ベンチマーク用途でロスト プラネットを動かしたいときには「オフ」にして,フレームレートを頭打ちにさせない設定とするのがミソだ。
映像表示のアスペクト比補正を行うもの。
一般的なPCディスプレイ機器では,画素数の縦横比と表示アスペクト比が一致するので,通常は「オフ」にしておけばいい。
ところが,プラズマテレビの一部の機種などでは画素数の縦横比と表示アスペクト比が一致しない場合がある。例えば,松下のプラズマVIERAの現行機「TH-42PX70」だと,画面解像度が1024×768ドット(4:3)だが,画面の表示アスペクト比は16:9。このような仕様のテレビで何もせずそのまま表示してしまうと,横に伸びたような映像になってしまうため,レンダリング時にアスペクト補正する必要がある。この項目は,そういった局面においても正しいアスペクト比でプレイするためのものというわけだ。
|
|
左はアスペクト補正「なし」の,いわゆる正方画素系パネル向け。いうまでもなく通常はこちらを選択する。右が,一部プラズマテレビなどで採用される長方画素系パネル向けのアスペクト補正「あり」設定 |
|