連載
PLAYSTATION 3(以下,PS3),Xbox 360といったいわゆる「新世代機」に搭載されているグラフィックスプロセッサは,いずれもDirectX 9世代のシェーダモデル3.0(Shader Model 3.0,以下SM3.0)に対応しており,そのため,従来では考えられなかったようなペースで大作ソフトがPCに移植されるようになった。グラフィックス設計という視点から見た場合,PS3,Xbox 360とPC版とではあまり変わらないのだが,「ハードウェアの仕様がユーザーごとに異なるPCゲーム」ということから,チューニング要素としてグラフィックスオプションを開放しているタイトルが多い。
今回ここで取りあげる,「Call of Duty 4: Modern Warfare」(邦題 コールオブデューティ4 モダン・ウォーフェア。以下,CoD4)もそんなタイトルのうちの一つだ。
ゲームそのものの評価が非常に高いCoD4だが,そのグラフィックスオプションは,2007年末時点の最新3Dグラフィックス技術における新世代機とPCの最大公約数的な存在であり,こちらの方面からも興味深い。
この連載では,2006年12月に「Call of Duty 2」(以下,CoD2)のグラフィックスオプションの解説を行っている。今回はCoD4について同様の解説を行ってみよう。余談ながら,CoD4の開発はCoD2のデベロッパでもあるInfinity Wardが行っており,パブリッシャであるActivision Publishingの発表によれば,2007年末の世界累積販売本数は700万本を超えているとのこと。大ヒット作なのである。
CoD4はWindows Vistaでもプレイ可能だが,ターゲットとなるプラットフォームをPS3およびXbox 360としていたこともあり,グラフィックスの基本設計はDirectX 9世代のシェーダモデルであるSM3.0ベースになっている。つまり,DirectX 10世代のプログラマブルシェーダ4.0への積極対応は行われておらず,Windows XPでもWindows Vistaでも最高のビジュアルクオリティは変わらないということだ。
ちなみに,ゲームを起動して「Options」を選び,次いで「Optimal System Settings」を選択すれば,ゲーム側でそのPCに最適なチューニングを設定してくれるので,それぞれの設定項目の内容がよく分からない場合は,これを利用すればよいだろう。中級者以上は,ここで解説する各オプションを理解することで,自分好みのグラフィックスに仕上げられるはずだ。
各オプションの解説では,それがどういったグラフィックス効果を司っているのか,なるべくスクリーンショットを使って示しておく。また,ほかのタイトルのオブション画面に同種の設定項目があったときは,同じビジュアル表現に相当すると考えられることも覚えておくといいだろう。
なお,CoD4のOptionsには,「Graphics」「Texture Settings」「Sound」「Voice Chat」「Game Options」「Cheats」といった項目があるが,本項で解説するのは前二者,つまり「Graphics」と「Texture Settings」のみとする。そのほかの項目は,とりたてて難解というわけではないからだ。
それでは「Graphics」から順番に見ていくことにしよう。
●Video Mode(画面解像度)
技術的に正確を期すと「レンダリング表示フレームの解像度」を設定するものだが,実質的に「ディスプレイ装置の解像度の設定」と理解してかまわない。とはいえ,CoD2のときもそうだったのだが,CoD4では正方形ピクセルではないディスプレイにも対応している関係上,後述する「Aspect Ratio」の設定とも関連性が高い。
一般的には,ディスプレイの解像度と同じ設定にしたほうが表示映像は美しくなるが,GPU性能が低い場合などにはあえて低い解像度を選ぶケースもある。
CoD4は,「1024×768」「1600×1200」のようなアスペクト比4:3の解像度だけでなく,「1280×768」(アスペクト比15:9)や「1280×720」「1920×1080」(同16:9)にも対応している。
この項目を設定する際には,自分の利用しているテレビやディスプレイパネルの解像度をあらかじめ調べておく必要がある。
1280×960ドットの4:3画面 | 1280×720ドットの16:9画面。16:9では画角が広がるのでより広範囲が描画されるようになる |
●Screen Refresh Rate(リフレッシュレート)
ゲームの映像を毎秒何コマ(フレーム)でレンダリングするかを設定する。デフォルトは「60Hz」で,これは「毎秒60コマ(60fps)表示とする」ということだ。勘違いしやすいのだが,これはビデオカードから出力される画像のリフレッシュレートとは異なるもので,ゲームエンジン側が毎秒何フレームをレンダリングするかについての設定だ。
そのため,値を上げれば上げるほどゲームの動きはスムースになる。とはいえ,高フレームレート入力に対応している液晶ディスプレイ機種でも,実際の表示は「最大60fps」としているものがほとんどで,あまり高い数字にしても意味はない。60fpsを超えた設定には,60fpsを超えて表示できるCRT(つまりブラウン管ディスプレイ)などが必要になる。
いうまでもないことだが,そうしたハイフレームレート表示のためには,レンダリングをちゃんとこなせるハイスペックなPCが必要になってくる。
●Aspect Ratio(アスペクト比)
CoD4はマニアックなことに,Video Modeで設定するレンダリング解像度とは別にアスペクト比が設定できる。
一般的なPC用のディスプレイや液晶テレビに接続しているプレイヤーは,デフォルトの「AUTO」を設定すればよいのだが,PC入力対応のプラズマテレビなどでプレイする際にはこの設定が威力を発揮する。
一般的な液晶ディスプレイでは,例えばパネル解像度が1024×768ドットだとすれば,それは横1024ドット,縦768ドットであり,このパネルの表示アスペクト比も1024:768,つまり4:3となっているのが普通だ。これはそれぞれの画素が基本的に正方形であるため,縦横のドット比と表示されるアスペクト比が一致しているからだ。
しかし,プラズマテレビのエントリーモデルではパネル解像度が例えば1024×768ドットで横と縦の画素数の比率が4:3でも,アスペクト比が普通のワイドテレビに準拠した16:9になる機種がかなり存在する。これは一つの画素が正方形でなく長方形であるためで,最新モデルで具体例を挙げれば,パナソニックの「TH-42PX80」「TH-37PX80」などがこのタイプに該当する。
例えば,TH-42PX80の解像度は1024×768ドットなのだが,表示画面のアスペクト比は16:9なので一つのドットは横長の長方画素系になる。CoD4では「Video Mode」で「1024×768」設定としたうえで,この「Aspect Ratio」を「Auto」ではなく,明示的に「16:9」と設定してやらなければ,画面が横に間延びしたものになってしまう。
なんだかややこしい話なので,液晶テレビにしろプラズマテレビにしろ,もしこれから新しいものを買おうという人がいるなら,解像度アスペクトと表示アスペクトが一致する正方画素系のパネルであることを確認し,解像度が1280×720ドット,1366×768ドット,1920×1080ドットといったモデルをお勧めしておきたい。
PC専用ディスプレイの場合,解像度アスペクト比が15:9となる1280×768ドットや,同じく16:10となる1920×1200ドットの製品があるが,こうしたディスプレイは表示アスペクト比と解像度アスペクト比が一致する正方画素系なので問題はない。その場合は,Auto設定にしておけば大丈夫だ。
●Anti-aliasing(アンチエイリアシング)
格子画素の組み合わせで表示されるCGで露呈しやすい,輪郭の付近で発生するギザギザ感(ジャギー)を低減して滑らかに見せる処理がアンチエイリアシングだ。いろいろな手法が考えられているが,いずれも(とくに古めの)グラフィックスカードに与える負荷はそれなりに高い。
CoD4では「OFF」「2X」「4X」の3段階の設定が行える。OFFはアンチエイリアシング処理を行わないため最も低負荷だが,当然ながらジャギーが目立つ。4Xではジャギーがかなり低減されるが,負荷はその分高くなる。
OFF設定。角度の浅い斜め部分に強いジャギーが発生している | 2X設定。ジャギーはだいぶ低減されているが,部分部分で毛羽立ちが見られる | 4X設定。ジャギーはかなり低減される |
アンチエイリアシング関連の話題で必ず挙がるのが,半透明要素を含んだテクスチャに対するアンチエイリアシング処理「Transparency Anti-Aliasing」(以下,TAA)の品質だ。
CoD4はアプリケーションレベルでのTAAに未対応のようで,原稿執筆時点の最新版だったVersion 1.4パッチを適用した状態で,金網や草の葉などで実験してみたのだが,品質はまったく変わらなかった。
左がAnti-AliasingOFF設定,右が4X設定。手持ちの銃器のジャギーは4Xで確かに低減されているが,草の葉のジャギーは残ったまま。アプリケーションレベルではTAAに未対応のようだ |
今回の評価に用いたGPUは,AMDの「ATI Radeon HD 3870」とNVIDIAの「GeForce 8800 GTX」の二つ。いずれもユーティリティソフトで強制的にTAA設定を有効にできるため,どうしてもTAAにこだわりたい人はこの機能を用いるといいだろう。
ATI Radeon HD 3870の場合は,「ATI Catalyst Control Center」を起動し,まず「3D」-「Anti-Aliasing」で「Use application settings」のチェックを外し,アンチエイリアシング処理をドライバが強制的に制御する設定に変更。それから「Level」を1〜8の範囲で設定する。次に「3D」-「Adaptive Anti-Aliasing」で「Enable Adaptive Anti-Aliasing」のチェックを「オン」にすればいい。
GeForce 8800 GTXの場合は「ForceWare」を起動し,「3D設定の管理」-「アンチエイリアシング・トランスペアレンシー」の設定を「オフ」から「スーパーサンプリング」に変更する。
ATI Radeon HD 3870の例。左がTAAをオフ,右がTAAを強制オンにした画面だ。ドライバレベルでTAAを強制適用すれば,草の葉にもアンチエイリアシング処理が適用されるようになる |
なお,半透明要素付きテクスチャのもう一つの定番である金網に対してドライバレベルのTAAを試したところ,ATI Radeon HD 3870ではTAA強制オン――Super SamplingとMulti Samplingの両方で試した――にしても金網のジャギーは取れなかった。一方のGeForce 88では,Multi SamplingとSuper SamplingいずれにおいてもTAAが草と金網の両方に効くのを確認できている。
AATI Radeon HD 3870の例。左がアンチエイリアシング処理OFF,右が4X設定時の画面だ。いずれもTAA強制オン状態だが,建物の輪郭や草木の葉ではジャギーが低減されるものの,金網のジャギーはまったく変わらず |
こちらはGeForce 8800 GTXの例である。左がTAA強制オフ状態,右がTAA強制オン状態。TAAが草と金網の両方に効果を発揮している |
●Brightness(輝度)
画面輝度の設定。ここは基本的に,描画負荷とは関係のない調整要素なので,好みで調整すればいい。
Graphicsオプションを表示しているときには画面が暗くなるが,この状態で,画面左に透けて見えているInfinity Wardのロゴが分かる程度に輝度を上げるのが,筆者個人の経験的目安だ。よかったら参考にしてほしい。
タイトル画面左にはInfinity Wardの“iw”ロゴマークがあるが…… | ちょっと暗くなるGraphicsオプション画面で,このロゴが確認できる程度に輝度調整をしよう |
●Sync Every Frame(垂直同期待ち)
設定の意味自体は,垂直同期を待つか否かということである。
[Yes]はディスプレイ側の垂直同期を待って表示する固定フレームレート表示。[No]では垂直同期を待たず,可変フレームレート表示を行うことになる。
ディスプレイ側のリフレッシュレート(=グラフィックスカードの出力のリフレッシュレート)と,前出のScreen Refresh Rateで設定する秒間レンダリングフレーム値を合わせ,このSync Every Frameオプションを[YES]とするのが最も安定した表示になる。
CoD4では,Video Modeで解像度を切り換えると,画面リフレッシュレートがWindowsのデフォルト値で自動選択されてしまうので,その時点でのディスプレイ機器側のリフレッシュレートは,ディスプレイのステータス表示などで確認する必要がある。液晶ディスプレイの場合は60Hzで固定という認識でかまわない。
結論としては,「十分にパフォーマンスの高いPCを液晶ディスプレイと接続しているなら,以下の設定がベスト」ということになる。
- -Screen Refresh Rate:60Hz
- -Sync Every Frame:Yes
PC側の3Dパフォーマンス不足で,描画がカクカクとしてしまう場合は[No]に。ただしその場合,画面が大きく動いたときなどにブレて見えやすくなる。
●Dual Video Cards(デュアルグラフィックスカード)
複数のGPU(≒グラフィックスカード)を同時に利用して,レンダリング性能を向上させる,NVIDIA SLI(以下,SLI)やCrossFire環境に向けた最適化を行うための設定項目だ。SLIやCrossFire構成にしてある環境なら[Yes],それ以外なら[No]にしておくのが推奨される。
具体的には,複数のGPUを搭載した環境においてレンダリング速度を最も高速化できるAFR(Alternative Frame Rendering)モード向けに,CoD4のレンダリングエンジンを最適化して動作させる。例えば,動的生成されるテクスチャに関する最適化などを行うものと推察される。
CrossFire環境だと,実行するゲームに最適な動作プロファイルが自動的に選択されるが,SLI環境の場合は,ForceWareからCoD4のプロファイルを明示的に選択してゲームを起動する必要があるのでご注意を。
●Shadows(影生成)
[Yes]で影ありとした例。木の枝一本一本にもセルフシャドウが出ているところに注目 |
こちらは影なしの[No]。画面が一気に寂しくなるだけでなく,どこが木陰なのか分かりにくくなる。家の屋根にうっすらと影が残っているものの,これはシーン構築時にあらかじめ焼き込んでしまうことで生成した影なので,負荷は低め。なお,事前生成の影はテクスチャに焼き込んでおく場合と,頂点情報に焼き込んでおく場合とがある |
採用されているリアルタイム影生成技法は,光源位置からシーンの深度情報をZバッファレンダリングし,これを遮蔽構造として利用して影か否かを判定していくデプスシャドウ技法をベースとしているようだ。影のジャギーを取るためのソフトシャドウフィルタも適用していると思われる。キャラクター自身の影が自分自身に投射するセルフシャドウ表現や,キャラクターの影が別のキャラクタの上に投射される相互投射影も実現されており,総じて影生成はかなりハイレベルなものになっている。
「Shadows」の設定項目そのものは単純で,[Yes]が影あり,[No]が影なし。影なしの設定では,木陰もなくなってしまうため,隠密行動を取るようなシーンではゲームプレイ感に少なからず影響が出てしまいそうだ。ただし,1フレームあたりのレンダリングパスをかなり減らすことができるため,高速化につながる。オンライン対戦などで「とにかくフレームレートを重視したプレイをしたい」ときには[No]もありといったところだ。しかし,ビジュアルを楽しむシングルプレイでは,できれば[Yes]を選びたい。
●Specular Map(スペキュラマップ)
スペキュラマップとは,光沢表現に関わるテクスチャマップのことを指し,CoD4では[Yes](=スペキュラマップあり)と[No](=スペキュラマップなし)から選択できる。
現在の3Dゲームグラフィックスの材質表現は,視線と光源,そして面(ピクセル)の向き(つまり法線)の相互関係にあまり依存しない「拡散反射」と,強く依存する「鏡面反射」という二つの反射モデルがあり,この二つをアーティストの感性で調整して,それっぽく見せるテクニックが主流になっている。人の肌など,より複雑な反射モデルに対しては特別なシェーダマップを起こすこともあるが,一般的な材質表現では,この二つの反射モデルを組み合わせてデザインされることが多いのだ。
スペキュラマップは,二つの反射モデルのうち,主に鏡面反射の結果として生じる光沢(ハイライト)の明暗をテクスチャマップで与えるものである。
[No]設定ではスペキュラマップに関連したテクスチャの読み出しをごっそり省略できるので,負荷の低減にはなるが,強い光沢が画面から消えてしまうため,画面はとても寂しいものになってしまう。とくに,濡れたものや金属などが,まるで乾いた素焼きの表面みたいな質感になってしまうのが問題だろう。
スペキュラあり。左のタンクと右のコンテナの光沢に着目してほしい。雨のシーンなので,ここのスペキュラは主に湿っている質感を表現することに貢献している | スペキュラなし。光沢がまったくなくなって寂しいビジュアルになっている,左と比べると,雨が降っているのに濡れているように見えないのが不自然だ |
スペキュラあり。夕日に照らされて輝く地面。土の湿気,あるいは岩盤の堅さ,雑草の存在を感じさせる | スペキュラなし。地面にまったくハイライトが出ていないため乾いた感じに見える |
●Depth of Field(被写界深度)
最近の3Dシューティングタイプのゲームではよく採用されるのが「被写界深度」表現だ。分かりやすくいえば「意図的なピンボケ」といったところだろうか。CoD4に限らず,FPSではとくに銃で狙いをつけるような場面でよく用いられる。
ピンボケ表現には,焦点が合っている点から手前側のぼけを「前ぼけ」,向こう側のぼけを「後ぼけ」と呼び分けたりするが,CoD4では前ぼけ表現だけが実装されている。
さて,ここでは[Yes](ボケあり)と[No](ボケなし)が選択可能。そもそも限定された局面でしか利用されない表現なので,[No]を選択したところでパフォーマンスにはあまり影響がない。基本は[Yes]でいいだろう。
被写界深度あり設定。左の歩兵や中央の銃器がボケている | 被写界深度なし設定。ボケがなくなり,一様にピントが合っている |
●Glow(HDRエフェクト)
本連載でも何度か取り扱ってきたハイダイナミックレンジ(High Dynamic Range)レンダリングにまつわる設定。HDRレンダリングとは,一言でいえば高輝度の光までをちゃんとレンダリングしようという考え方だ。
現実世界は,漆黒から非常に高輝度なものまで多彩な光に満ちあふれており,我々の目もカメラも,瞳孔やレンズの絞りによって光量を調節することで,まともな映像として見ている。
リアリティを追求する3Dゲームグラフィックスであるなら,現実世界のように広いレンジの光をあらかじめレンダリングし,そのあとにさまざまなカメラや光学的なシミュレーション――これをポストプロセス(=後処理)と呼ぶ――を行って表示したほうがリアルなののではないか,という考えがHDRレンダリングのコンセプトだ。実際に最近のゲームでは,HDRレンダリングしたフレームに対してさまざまなポストプロセスを行うのがトレンドになっている。
CoD4のHDRレンダリングでは,描画する部分が高輝度だった場合,そこからブルーム(光のあふれ出し)効果を発生させるという,ごく基本的なHDRエフェクトが実装されており,本オプションはこの有効/無効を選択するもの,というわけだ。
もちろん選択肢は[Yes]と[No]。[Yes]では例えば,直射日光を浴びた場所はディテール感を失い,白飛び気味の色合いになる。[No]だとそういった効果は省略され,ごくありふれたフレームとして表示される。
HDRエフェクトありの設定。高輝度部分が白く飛び,ディテールが失われて見える | HDRエフェクトなしの設定。直射日光を浴びた壁が,はっきりとしたディテールを伴って見える |
●Number of Dynamic Lights(動的光源処理の数)
ゲームには,シーンの中にあらかじめ設定され,ゲーム中に常時存在する静的光源と,進行に応じてダイナミックに発生したり,あるいは消滅したりする動的光源が存在する。爆発や銃撃の閃光,あるいは乗り物のヘッドライト,揺れる天井照明などが,CoD4における動的光源の主な例だ。
そうした動的光源が出現したからには,その光の影響を受けるオブジェクトに対して光源計算(照明計算)を行わなければならない。「計算≒GPUにとっての負荷」なので,動的光源の数が多いほどそのシーンのレンダリングの負荷が高い。
このオプションは,その動的光源の数を調整するもので,実質的にはGPUの負荷コントロールに相当する。提供されている選択肢は[OFF][Low][Normal]の3タイプで,注意すべきは,“High”がなく,[Normal]設定が標準になっているところだ。
[Off]ではいっさいの動的光源が発生せず,[Low]では動的光源に優先順位が付けられ,(順位の高い)限られた光源の処理のみが行われるようになる。筆者が試したところ,[Low]設定ではプレイヤーから近い位置の動的光源については発生を許すが,遠くの目立たない光源に対しては省略するといった処理になっているようだ。
[Normal]設定。銃撃の閃光が,テーブルやその上のオレンジを照らしている | [Off]設定。銃撃の閃光が周囲を照らす計算を省略しているため,テーブルやその上のオレンジは暗いまま |
●Soften Smoke Edges(煙の輪郭のソフト化)
3Dゲームグラフィックスでは炎や煙など,「決まった形のないもの」の表現手段としてパーティクルシステムを用いることが一般的になっている。
パーティクルシステムとは,要するに「3D空間で動かすスプライト」のようなもの。例えば煙であれば,「煙を描いたテクスチャを貼り付けたポリゴン板」をパーティクルの一単位として扱い,これを無数に重ねて表現するわけだ。
本来なら煙は細かい粒子が流体物理法則に従って動いた成果物であるわけだが,この煙の絵を描いたポリゴン板を,大ざっぱな流体物理法則で動かすだけでも“それっぽく”見える。多くの場合,炎や煙はあまりゲームの根幹に関わる存在でもないため「それでよし」とされているのだ。
しかし,パーティクルの実体はポリゴンの板なので,パーティクルとシーン内のほかのオブジェクトが重なると,重なった境界(=輪郭)が強い交差線として見えてしまう。つまりパーティクルがシーンのそのほかの3Dオブジェクトに切り取られたようなビジュアルになってしまうのだ。
これを低減するテクニックとしてここ最近台頭してきているのが「ソフトパーティクル」と呼ばれる処理である。さまざまな技法が考案されているが,CoD4に採用されていると思われるのが,シーンの深度値を吟味して,パーティクルの交差線に向かって色を薄める(実際には,透明度を上げる)という,最も基本的だが効果も大きいやり方。
設定は[No](=ソフトパーティクル処理なし)と[Yes](=ソフトパーティクル処理あり)。ソフトパーティクル処理は意外にもシェーダ負荷とフィルレートの消費が激しいので,パフォーマンスを求める場合は[No]にするといくらか負荷が軽減する。
ソフトパーティクル処理なし。煙パーティクルと床と壁の交差線部分に強いエッジが見えている。本当の煙なら,こんなことにはならないはず | ソフトパーティクル処理あり。この交差線に向かってパーティクルの透明度を上げることにより,エッジが見えにくくなっている |
●Ragdoll(ラグドール物理)
Ragdollとは「ぬいぐるみ」のこと。3Dゲームにおける物理エンジンでいう「ラグドール物理」とは,まるでぬいぐるみを放り投げたように,人体がさまざまなオブジェクトと衝突しながら転がっていくアニメーションのことを指す。
CoD4では,このラグドールのシミュレーションを[Yes](=ラグドール物理あり)と[No](=ラグドール物理なし)から設定可能だ。なお,これは主にグラフィックス負荷というよりはCPUの負荷に関連した設定項目になる。
ゲームでは,敵兵が爆発で吹っ飛んだときにラグドール物理が利用されており,銃撃でその場に転倒して倒れるようなリアクションは,この設定とは関係なくアニメーションで処理される。[No]設定時は爆発でも敵兵が吹き飛ばず,その場で倒れ込むアニメーションが使われるようになる。
[Yes]設定だと,爆発の衝撃で敵兵が吹き飛ぶのはもちろんのこと,シーン内に存在している死体にもラグドール物理は適用され続ける。つまり,ラグドール物理を有効にすると,爆発衝撃はそのシーンに存在するすべての死体にラグドール物理に従った挙動を発生させるわけだ。
CoD4では物理シミュレーションはCPUで実装されているが,あまりパフォーマンスに大きな影響を及ぼしてはいない印象なので,よほど性能の低いCPUを使っていたりしない限り,[Yes]を選択しておいて問題はないと思われる。
●Bullet Impacts(弾痕)
迫力ある銃撃戦が特徴のゲームだけあり,1回の戦闘では大量の銃弾が飛び交う。その激しい雰囲気を盛り上げるため,着弾と同時に火花のようなパーティクルが発生する処理が盛り込まれており,さらに,着弾地点に弾痕が刻まれるエフェクトも実装されている。
Bullet Impactsオプションはこの動的な弾痕生成を行うか否かを設定するものだ。設定は[Yes](=弾痕生成あり)と[No](=弾痕生成なし)の二択になっている。
弾痕は動的に生成される法線マップとして処理されており,着弾した材質に適した凹みの法線マップとテクスチャが選ばれる。着弾の仕方による形状のバリエーションも多く,かなり凝ったエフェクトになっている。基本的に法線マップの陰影処理はピクセルシェーダに負荷のかかるものだが,動的に生成されるため,メモリにもそれなりに負担がかかる。
弾痕生成なしでもプレイそのものに影響はないが,ビジュアル的に寂しくなるので,やはりここは[Yes]に設定としてプレイしたいところ。
●Model Detail(3Dモデルの詳細レベル)
ゲームに登場する3Dオブジェクトの品質を設定するオプション。[Low]と[Normal]が選択可能で,[Low]設定ではポリゴン数の少ない低負荷モデルが利用され,シーンに登場するキャラクタやモデルの総ポリゴン数が減ることから,描画パフォーマンスが向上する。
遠方のオブジェクトの表示に低いポリゴン数のモデルを使う「Level of detail」(LOD)処理が実装されているゲームも多いが,[Low]設定では遠方だけでなく近場でもこの低ポリゴンモデルを採用されることになる。
ただ,CoD4では,[Low]の場合でもプレイヤーに非常に近い位置に存在するオブジェクトに高ポリゴンモデルが採用されるため,パッと見た感じでは描画クオリティが落ちたようには感じられなかったりもするのだが。
[Low]設定。奥に見える戦車と,手前で銃を撃つ兵士に注目していただきたい | [Normal]設定。戦車のポリゴン数が増えているだけでなく,装備類のディテールも細かく描かれている。手前の歩兵は変化なし。[Low]でも近くのキャラクターについては高ポリゴンモデルを使用しているようだ |
[Normal]設定。ここでは歩兵に注目していただきたい | 歩兵も低ポリゴン化の対象であることは,[Low]にするとよく分かる。リュックなど装備類の表現が簡略化されている |
なお,このオプションは3Dモデルの詳細さだけでなく,遠方描画境界にも影響を及ぼすようで,[Low]では遠方の植物の描画が省略されるようだ。市街戦ではクオリティの低下は目立たないが,見通しのいい屋外シーンではやや画面が寂しくなる。
[Normal]設定。遠方まで植物が描かれている | [Low]設定。遠方の植物の描画が行われなくなる |
●Water Detail(水面の表現)
水面に関してあまり印象的なシーンが出てこないCoD4だが,設定項目は一応あるにはある。その表現の品質を調整するのがこのオプションだ。設定の選択肢は[Low](=低品質)と[Normal](=標準品質)の二つ。
水面の品質にはいろいろな調整が考えられるのだが,いろいろ実験した結果,CoD4においては動的なさざ波表現の「ある/なし」を決定していると思われる。
いくつかのステージで水たまりや池,流れる川が出てくる場面があるのだが,[Low]では,水面のさざ波がまったく動かなくなる。さざ波そのものはあるにはあるのだが,まったく動かないので微妙に不自然な表現となる。
そもそもCoD4にはあまり川や池などが出てこないので,[Normal]設定でもパフォーマンスに問題はないはずだ。
[Normal]設定。画面では分からないが,水面のさざ波が動いている | [Low]設定。やはり画面では分からないので申し訳ないのだが,水面のさざ波がまったく動かない。時間が止まったようで不気味 |
[Normal]設定。こちらも画面では分からないが,ウニョウニョと細かいさざ波が水面を動いている | [Low]設定。水面にさざ波があるにはあるが,やはりまったく動かない |
●Number of Corpses(死体の数)
SFをテーマにしたFPSなら,倒した敵が蒸発したりしてシーンから消えても納得できるが,現代のリアルな戦争を描くCoD4では,倒した敵兵は基本的にその場に残り続けなければ話がおかしい。
だが,動かなくなった死体とはいえ,シーンに残り続ければ,それを毎フレーム描画しなければならないため,これは描画負荷になる。さらに前述のラグドール物理を有効にした場合,死体になっても物理エンジンがそれらの挙動の面倒を見続けなければならなかったりして,死体が増えれば増えるほどシステムに対する負荷は高くなる。
このオプションは,そんな,シーンに残る死体の数を設定するものだ。設定レベルは[Tiny][Small][Medium][Large][Insane]の5段階。[Tiny]が最も少ない設定で,システム負荷はもちろん一番低くなるが,その分画面は寂しくなる。逆に[Insane]は「狂った」という語義からも想像がつくように,最も多くの死体を許容する設定だ。システム負荷は一番高いが,戦場の凄まじさを実感したいなら,[Insane]がおすすめ。
[Small]設定。あまりTinyと変わらない。許容範囲を超えると古い死体から順に消えていく | [Medium]設定。遠くの死体もちらほら残る |
[Large]設定。死体が目立ち出す | [Insane]設定。ほとんどの死体が残り続ける。おすすめはやはりこれだ |
CoD4では,Graphicsオプションとは別に,テクスチャ専用の調整項目として「Texture Settings」オプションが設けられている。こちらもグラフィックス描画に密接に関わってくる設定項目なので,一つずつ見ていくことにしたい。
●Texture Filtering(テクスチャフィルタリング)
●Anisotropic Filtering(異方性フィルタリング)
「テクスチャマッピングとは,テクスチャをポリゴンに貼り付けること」というのは,多くの読者が知っているだろう。
リアルタイム3Dグラフィックスの場合,テクスチャの解像度とポリゴンの解像度が一致することはマレなので,表示するポリゴンに適合するようにテクスチャを拡大したり縮小したりする処理が不可欠になる。テクスチャフィルタリングとは,このテクスチャをポリゴンに貼り付ける際の特別な加工演算処理という捉え方でいい。アンチエイリアシング処理と混同されることもあるが,処理系としてはまったく別物だ。
一般的なGPUには,テクスチャフィルタリングとしてバイリニア,トライリニア,異方性(アニソトロピック)という3タイプのテクスチャフィルタが用意されており,負荷はバイリニア<トライリニア<異方性という順番で高い。テクスチャフィルタリングの技術的詳細について興味がある人は,本連載のバックナンバー「NVIDIAがATIに噛み付いた『テクスチャの異方性フィルタリング』ってなに?」を参照してほしい。
CoD4では「Texture Filtering」オプションとして[Automatic](自動),[Bilinear](バイリニア),[Trilinear](トライリニア)という三つの選択肢から選べ,さらに異方性フィルタリングについては,スライダーで異方性のレベルをコントロールする「Anisotropic Filtering」が用意されている。
「Texture Filtering」は,テクスチャフィルタリングの基本方針を設定するもの。[Automatic]設定は,ゲームエンジン側(≒開発側)が最適と判断して設定したテクスチャフィルタリング処理を自動的に採用するモードになる。そして[Bilinear]と[Trilinear]の設定は,テクスチャフィルタリング処理をどちらかの処理に固定するものだ。
異方性フィルタリングの詳細設定を「Texture Filtering」から選べないのは,CoD4だと,設定によらず,常に異方性テクスチャフィルタリングが有効となっているためである。
なお,「こちら」でも解説したことがあるが,異方性フィルタリングには「バイリニア型異方性フィルタリング」と「トライリニア型異方性フィルタリング」の2タイプがあり,「Texture Filtering」設定で選んだ[Bilinear][Trilinear]という設定は,この異方性フィルタリングにも関わってくる。
「Anisotropic Filtering」設定は異方性レベルをスライダーで調整できるが,左端が最低(異方性レベル=0)。先ほど「CoD4では常に異方性フィルタリングが有効になる」と述べたが,スライダーを左端に寄せれば事実上キャンセルされる。
ところで異方性レベルは「縮小テクスチャ(=MIPMAP)1枚あたりからいくつのテクセルを読み出すか」を意味し,異方性レベルが高いほどテクセル読み出し個数が多くなる。そのため,テクスチャフィルタリング処理の品質は高くなるが,同時に描画負荷も高くなるという理屈だ。異方性レベルの意味の詳細については「こちら」を参照してほしい。
設定の目安だが,Texture Filteringは基本的に[Automatic]でOKだ。「Anisotropic Filtering」の異方性レベルはパフォーマンスに結構関わってくるので,調整には慎重を要する。
●Texture Quality(テクスチャ品質)
テクスチャの品質を設定するオプション。[Automatic](自動)と[Manual](手動)が選択でき,後者を選択すると以下に挙げる三つの追加設定オプションが出現する。
●Texture Resolution(テクスチャ解像度)
主に画像テクスチャ(デカールテクスチャ)の品質を決定するオプションで,[Low][Normal][High][Extra]4段階の設定が可能だ。[Low]が最も大ざっぱで粗く,[Extra]が最も精細で高品位となる。高位設定にしたときの負荷レベルはそれなりに高い。なお,見比べると確かに違いはあるものの,[High]と[Extra]の相違はわずかだ。
[Low]。上の看板の文字や壁の落書きが粗く,コンクリの壁の微細凹凸もぼけている | [Normal]。[Low]で埋もれていたディテールがちゃんと見るようになる |
[High]。[Normal]で見られた落書きのジャギーがなくなる | [Extra]。微細凹凸の表現がより細かく見える |
●Normal Map Resolution(法線マップ解像度)
法線マップ(Normal Map)を活用したバンプマッピングは,1ポリゴンに満たない微細凹凸を表現するために用いられる。最近ではこのバンプマッピングを,「法線マッピング」と呼ぶこともある。
法線マップとは,実際にゲームで使うモデリングデータよりも精細なモデリングデータに含まれる微細凹凸面の法線ベクトル情報をあらかじめテクスチャ化しておく手法だ。実際のレンダリングのピクセル描画時には,法線マップからその描画したいピクセルに対応する法線ベクトルを取り出し,視線と光源と法線を考慮したピクセル単位の照明計算を行う(パー・ピクセルライティング)。これにより,あたかもそこに凹凸があるかのような動的な陰影を作り出せる。これが法線マッピングの基本的な仕組みだ。
法線マッピングの品質を決めるのはやはり法線マップのクオリティというわけで,このオプションはこの法線マップの解像度を設定するものになる。設定は[Low][Normal][High][Extra]の4段階で,「Texture Resolution」と同じく,[Low]が最も大ざっぱで粗く,[Extra]が最も精細で高品位になる。もちろん高位設定であるほど,負荷レベルは高くなっていく。
微細凹凸表現がちゃんと視覚的に情報量を伴ってくるのは[High]設定からになるので,できればここは[High]以上にしておきたい。
レンガの壁の凹凸,死体の装備するモールドの表現,顔のシワやヒゲに注目。[Low]では,そうした微細凹凸は省略されているか,ぼやけている | [Normal]。凹凸が若干見えてくる |
[High]から,死体の肌の微細凹凸が見えてくる | [Extra]は,[High]のディテール感をさらに細かくしたような感じ |
●Specular Map Resolution(スペキュラマップ解像度)
スペキュラマップの意味については前述したとおりだが,そのスペキュラマップ風のテクスチャ解像度を設定するのがこのオプションである。
設定は[Low][Normal][High][Extra]の4段階。やはりここも[Low]が最も大ざっぱで粗く,[Extra]が最も精細で高品位になるのだが,スペキュラマップはもともと大ざっぱ(=低解像度)なものが使われることが多いためか,([Low]設定だといくらなんでも粗すぎる感が残るものの)[Normal]設定でもそれほど不満のない光沢感が現れる。トータルなビジュアル品質をそれほど変えずに多少なりともパフォーマンスを稼ぎたいなら,[Normal]がおすすめだ。
クルマのボディの光沢,ガラス窓のテカリなどがスペキュラマップによるもの。[Low]設定だと,光沢がある/なしの二値に近い大ざっぱな光沢になる | [Normal]。光沢のディテールがそれなりに現れる。デカールテクスチャや法線マップの品質を高くしておけばこれでも違和感なし |
[High]。光沢のテカリ具合に模様のようなものが現れる | [Extra]。光沢模様がより鮮明に見える |
左が[Low]設定で,右が[Extra]設定。見比べると確かに違うのだが,パッと見の感じではほとんど違いが分からない。スペキュラマップはもともと大ざっぱなので,表現対象によってはこのように微妙な違いしか出ないものが多かったりする |
CoD4は,その時代における標準的テクノロジーを使用してゲームを完成させており,「クライシス」のようなテクノロジーショーケース的な側面はない。しかし,CoD2と比較すると,CoD4では設定オプションも増え,エンジンの世代が進んだという実感がある。
とくに進歩したと感じられたのが,リアルタイム影生成の部分だ。シーンに登場するほとんどすべてのオブジェクトがセルフシャドウ付きの影生成を行っており,シーンのリアリティは格段に向上した。敵から身を隠しつつ進むスニーキングミッションでは,このリアルタイムに生成された木々の影の間を進むのだが,そのリアリティは抜群である。本連載のCoD2編の結びで「CoD2の影のイマイチ感」を指摘していたので,これがちゃんと続編で改善されたことに拍手を贈りたい。
とはいえ実のところ,それ以外のグラフィックス要素においてCoD2からの大きな進歩はあまり感じられない。水面表現などについては,クライシスのようなテクノロジーリーダーに比較して,まだまだ前世代的といった印象だ。
だが,CoD4の場合,グラフィックスよりもゲーム自体の完成度の高さのほうがはるかに印象的で,プレイの最中に(グラフィックス面での)不満を感じることがない。ドラマチックな進行と,敵味方のAIの優秀さのコンビネーションが数ある競合タイトルの中でも突出しており,PCゲームとしての満足度が高いのである。マルチプレイも熱い盛り上がりを見せているので,今,FPSジャンルでグラフィックスもそこそこ良くて,気軽に遊べて夢中になれるタイトルといったらこのCoD4しかないといってもいい。本当におすすめだ。
- 関連タイトル:
コール オブ デューティ4 モダン・ウォーフェア
- この記事のURL:
キーワード
(C)2007 Activision Publishing, Inc. Activision and Call of Duty are registered trademarks and Modern Warfare is a trademark of Activision Publishing, Inc. All rights reserved.