【Watch記事検索】
最新ニュース
【11月30日】
【11月29日】
【11月28日】
【11月27日】
【11月26日】

西川善司の3Dゲームファンのための「METAL GEAR SOLID 4」グラフィックス講座
職人芸的最適化術によって生まれたPS3最高峰グラフィックスの秘密に迫る(前編)

10月24日 収録

会場:KONAMI東京本社

 2008年のプレイステーション 3のゲームシーンにおいて、最大の話題をもたらしたのは「METAL GEAR SOLID 4(MGS4)」だ。これは間違いないだろう。

 「メタルギア ソリッド(MGS)」シリーズは海外でも人気の高い作品であり、「MGS4」はこの世界の期待に応えるべく世界同時発売を果たしている。その意味では、世界のゲームシーンにおいても、2008年の話題の中心には「MGS4」があったように思う。

 そんな、いわばPS3のベンチマーク的作品である「MGS4」にまつわる様々な開発秘話を、小島プロダクションはゲーム開発者会議の「CEDEC2008」において積極的な情報開示を行なった。

 今回の本連載では、CEDEC2008の時に発表された情報をベースに、小島プロダクションに追加で取材して得た情報を織り交ぜて、「MGS4」のゲームグラフィックスで用いられた技術について紹介と解説を行なっていきたいと思う。

 前編となる今回は、「MGS4」の基本的なグラフィックススペックと「MGS4」で採用されたユニークなレンダリングパイプラインについて解説する。


■ 「MGS4」のゲームグラフィックススペック
  スネークのポリゴン数は約3倍に増加

取材対応していただいた、小島プロダクション制作部プログラムユニットテクニカルディレクター高部邦夫氏
 今回取材対応をしてくれたのは、小島プロダクションの高部邦夫氏(制作部プログラムユニット、テクニカルディレクター)と、是角有二氏(制作部プログラムユニット、マネージャー/リードプログラマ)のお二人。高部氏の方はCEDEC2008の「MGS4」系技術セッションで登壇し、講演も担当された人物だ。

 両氏によれば、シーンによっても違うものの、1シーンあたりの平均的な背景ポリゴン数は25万から35万程度だとのこと。草が多く生えているシーンでは、草だけで10万ポリゴンを超えるシーンもあったという。

 この背景に、キャラクタやその他のエフェクト用のレンダリングまでを加味すると、概算で40万から60万ポリゴンにも及ぶ。さらに影生成などの不可視な素材レンダリング用のポリゴンなどを含めるとGPU負荷的には100万ポリゴンに近いシーンもあるのではないかとのことだ。

 1キャラクタあたりのおおよそのポリゴン数は5,000から1万ポリゴン。特に雷電、キャンベル、オタコンといった主要キャラは1万ポリゴン程度だという。

 そして主人公のスネークは、PS2版「MGS」の最後期作である「MGS3」では約4,400ポリゴン、PS3版「MGS4」では1万4,000ポリゴンとなっており、約3倍のジオメトリ量になっている。なお、スネークの形状モデルはゲーム中、デモシーン、インストール時のクローズアップで共通だとのこと。

 筆者の取材によれば他のゲームスタジオでも、PS3、Xbox 360、Windows-PCといった今世代のハイデフ・ゲーミング・プラットフォーム(以下、「今世代のHDプラットフォーム」と記する)では100万ポリゴンをGPU負荷の1つの目安としているところが多いように思える。「MGS4」も大体この値に近い。キャラクタについては、3人称ゲームだと数千ポリゴン止まりにしている作品が多いのだが、「MGS4」の場合はクローズアップショットが多いので、現在のHDプラットフォームの標準値よりもやや多いという手応えだ。

PS3版「MGS4」のスネークは1万4,000ポリゴン 法線マップ無しの素ポリゴンの「MGS4」のスネーク 法線マップを適用した「MGS4」のスネーク
上が「MGS3」でのスネーク。下が「MGS4」のスネーク 「MGS4」のスネークのワイヤーフレームショット 最終的にレンダリングされた「MGS4」のスネーク

前出のスネークのボーンを可視化したショット
顔面に仕込まれたボーン(リグ)
 「MGS4」はポリゴン数(ジオメトリ量)も多いが、モデル内に仕込まれたボーンの数も多い。「MGS4」の主要キャラのボーン数は顔、指までを含んで115本になる。内訳は顔で36本、指で32本、体で47本。顔についてはクローズアップショットにおける演技にも対応するためか、「MGS3」ではなかった「舌」や「喉」にまでボーンが仕込まれている。

 体の47ボーン中、モーションデータ(アニメーションデータ)で駆動されるのは21本。意外なことに、アニメーション駆動されるボーン数はPS2の「MGS3」より少なくなっているのだという。「MGS4」では少ないボーンで高いクオリティのアニメーション表現ができるテクニックが実現されているのだ。残りの26本(47-21)は肘や膝、腕や脚のような、スキニング時に破綻しやすい部分に挿入されている補助ボーンで、モーションデータからランタイム時に算術的に駆動されるボーンになる。

 ボーン数がわかると気になるのはモーション数(アニメーション数)だ。主人公スネークで比較すると「MGS3」のスネークが1,200個、「MGS4」のスネークが1,700個となっている。ここは「MGS4」だけでなく、「MGS3」のスネークのモーション数の多さにも驚かされる。「MGS」のキャラクタはどれも演技派なので、ここは「MGS」シリーズのキャラの突出した部分ということができそうだ。

 1ステージあたりのテクスチャ容量はおよそ160MB。これは1ステージあたりのグロスマップ(光沢マップ)、法線マップ、デカールテクスチャ(画像テクスチャ)などの主テクスチャの総量で、影生成用のシャドウバッファ、水面生成用のワークバッファなどのグラフィックスエンジン側で占有するテクスチャメモリ容量は含んでいない値だ。

 グラフィックスエンジンの設計上の都合により、動的影生成用のシャドウバッファ関連はビデオメモリ側で、水面関連やその他のそれまでのレンダリング結果を次のレンダリングに活かすような動的生成テクスチャ素材などの一部はメインメモリに置いている。一部のテクスチャをメインメモリ側に置く設計は今世代のHDプラットフォームのゲームエンジンではよく見られるタイプだ。

 キャラクタ単位で見ると、メインキャラクタのテクスチャは1体当たり5MB程度、雑魚キャラで3.5MB程度になっているとのこと(DXT1,DXT5圧縮後の値)。サイズとしては顔が512×512テクセル、体が1,024×1,024テクセル程度となっている。この値は決して贅沢ではないが、それでも「MGS4」のビジュアルがリッチに見えるのは、シェーダによる多彩なリアルタイム陰影との相乗効果があるからだ。

 表示フレームのレンダリング解像度は1,024×768ドット固定。これをディスプレイ側の出力解像度に合わせ、16:9にスケーリングして表示している。1,280×720ドットでないのは、縦解像度を重視したためだろう。

 シーンによって上下する可変フレームレート設計になっているが、ゲーム中のフレームレートは基本的には平均30fpsを維持できるようにチューニングが成されているという。なお、システムの設計自体は60fpsに対応できる設計で、ゲームロジックとレンダリング部は基本的には同期設計なので、どちらかに過負荷があった場合にも非同期で動くことはない。また「MGS4」は、カットシーン(ムービーシーン)においてもリアルタイムレンダリングを採用しているが、カットシーンでは30fpsを死守するよりは、見た目のリッチさを重視したと高部氏は述べている。

「MGS4」のスネークは、指先にまでボーンが仕込まれている 補助ボーンをオフにしたショット。腕を曲げたときの肘の向きが不自然となる 補助ボーンをオンにしたショット。腕を曲げたときの肘の向きが現実的になる


■ HDRレンダリングは整数バッファによる疑似実装

HDRレンダリングを採用しないと、暗いシーン内での陰影が潰れてしまう
HDRレンダリングを採用すれば、今いる暗いシーン内の陰影がキッチリと見え、眩しすぎる屋外シーンは飛び気味にすることができる。実際の視界はこんな感じになるのでこちらの方が自然
 今世代のレンダリングメソッドとしてどうしても外すことができないのが「ハイ・ダイナミック・レンジ(HDR:High Dynamic Range)」レンダリングだ。

 「MGS」シリーズの場合は、技術的にどうこうというよりも、メインテーマとして潜入(スニーキング)アクションゲームという看板を掲げているので、どうしても暗いところを正確に表現したいし、今作「MGS4」では日中までを活動範囲として広げているため、真っ暗なシーンとまばゆい明るいシーンとの行ったり来たりが避けられない。これをリアリズムを持って表現するにはHDRレンダリングの導入が不可欠だったといえる。

 「MGS4」におけるHDRレンダリングの実装は、開発初期の様々な実験の結果として最終的な仕様が決定された。今でこそ、最新PC向けGPUでは浮動小数点バッファへの機能と性能が充実しているため、「HDRレンダリング=浮動小数点バッファ」という図式が成り立つが、PS3のGPU「RSX」は今から2世代前のNVIDIAの「GeForce 7800 GTX」ベースであるため、浮動小数点バッファへの機能性が低く、理想通りには行かなかったのだ。具体的に理由を挙げれば以下のようになる。

 1つは、RSX(≒GeForce 7800 GTX)では、16ビット浮動小数点(FP16)バッファに対してマルチサンプルアンチエリアシング(MSAA)が利用できないという制約があるため。これでは画面にジャギーが残ってしまい、最終映像の美しさを重要視する「MGS4」では採択できなかったのだろう。

 2つ目はフィルレートが不足気味になるため。αRGBがFP16のバッファは64ビットサイズとなり、これで高解像度レンダリングをやるには、RSXの128ビットバスでは少々つらいのだ。また、GeForce 6000/7000アーキテクチャはFP16バッファの半透明合成処理が遅いが、この特性はRSXにも受け継がれており、ここの部分もネックだったようだ。

 結果的にはαRGBが全て8ビット整数の、従来通りの8888の32ビット整数バッファ(int32)を用いてのレンダリングが採択された。int32バッファではHDRレンダリングができないのでHDRを格納するための工夫が必要になる。これについては各社それぞれに一家言があり、トライエースでは固定小数点の概念を導入して2倍の輝度レンジまでのHDRを圧縮してint32バッファで表現していた(3Dゲームファンのための「ヴァルキリープロファイル2」グラフィックス講座)

「MGS4」が採用した最大輝度逆数格納方式のHDRレンダリング。0.25を基準輝度にして実装しているのがミソ
 これに対し、「MGS4」では輝度の逆数をαに格納する方式を採用している。具体的には、ピクセルのRGB値の3つの輝度値のうち最大のものを選択し、この最大輝度値の逆数を256段階(8ビット)で表現することになる。そして、この最大輝度値の逆数をαに格納し、各RGBにはこの最大輝度で割った(除算した)値を格納する。もちろん演算は整数次元となるので誤差は発生する。考え方としてはHDR値を不可逆なエンコードで8ビット精度に圧縮するというものになる。

 このレンダリングパイプラインで生成されたエンコード済みバッファから値を読み出す場合は、今度は逆にデコードの処理が必要になる。これは、各RGBから取りだした値とαから取り出した値(このRGBで共有される最大輝度の逆数)を掛け合わせることで求められる。

 この考え方では、αに格納される値(RGBの最大輝度値の逆数)が1.0に近ければ近いほど表現精度が高くなる(αに格納される値が1.0以下では通常のLDRレンダリングと等価になる)。

高部氏「暗いシーンの多い『MGS4』では最大輝度が1.0以下のシーンが多く、この最大輝度逆数格納方式のそのままの実装では、輝度1.0未満の暗いシーンでのマッハバンドが強く表れて精度不足と判断したため、輝度値0.25を基準とした実装にしました」

 この仕組みだとαに格納される値が0に近づくにつれて誤差が大きくなり、1.0に近づくにつれて精度が高くなる特性がある。そこで「MGS4」のシーン特性に合わせ、αに格納される値が1.0になる値を輝度値0.25にチューニングして実装したということになる。高部氏によれば、この方式でも輝度値にして0から50.0くらい程度までは実用レベルで表現できるのではないかという。

可視化したHDRエンコードバッファ トーンマップ後のカラーバッファ

 32ビットバッファを使ったこのHDRエンコードレンダリング手法の採用で、FP16ベースでは実現できなかったMSAAが実装でき、なおかつ帯域消費を従来の32ビットバッファレンダリングと同等に押さえることができたためパフォーマンス的にも優位となった。しかし、代償もある。

 このバッファへのアクセスはエンコード(書き込み時)、デコード(読み込み時)が必要になり、この処理がいくら演算負荷が軽量とはいっても、無償ではない。多量のアクセスを伴う処理ではそれなりの負荷となる。本来はデコード/エンコードしなければならないのはバッファなのだが、バイリニアフィルタ付きでサンプリングして直接処理してしまっても、品質は低下するがそれなりに見える事がわかったため、高負荷な処理に限っては、このバッファへのアクセスへのデコード/エンコード処理を省略している。具体的には後述の被写界深度のシミュレーションなどがこのケースにあたるが、ただし誤差が大きくなった副作用でボケた部分のHDR情報が失われてしまう。ここはゲーム側のパフォーマンスを優先した判断といえる。

HDRを残しつつ被写界深度のシミュレーションを実行した場合。ゴーグルのイルミネーションが高輝度のまま絞りの形でぼけている HDRを無視しつつ被写界深度のシミュレーションを実行した場合。ゴーグルのイルミネーションの高輝度情報が失われてぼけている


■ ブレンドバッファ・レンダリングという最適化発想

ブレンドバッファへのアクセスルール
 32ビットバッファを使ったこのHDRエンコードレンダリング手法の採用でHDR表現の目処とMSAA採用の目処は付いたが、このバッファに対しての直接の半透明(完全透明含む、以下同)の描画処理ができない。やってできなくないがピクセルシェーダ負荷が高すぎる。そこで「MGS4」では、半透明のレンダリングについては別バッファで行なうユニークな最適化手法を取り入れている。

 これが「MGS4」チーム内で「ブレンドバッファレンダリング」と呼んでいたテクニックだ。まず、前述したような手法で不透明の通常内容をHDRエンコードレンダリング方式でHDRエンコードバッファにレンダリングする。続いて、半透明内容は奥から手前に向かって別バッファ(ブレンドバッファ)にレンダリングする。

 このブレンドバッファへの半透明の内容のレンダリングは輝度レンジ0.0から2.0の範囲内に固定させた疑似HDR次元(本連載「ヴァルキリープロファイル2」編参照)で行なう。前述のデコード/エンコード処理を回避したレンダリングになるので負荷低減になる。これが期待される最適化効果の1つだ。

 「MGS4」でのブレンドバッファ法で取り扱えるブレンディング手法は、αブレンドと加算ブレンドの2つの方法に限定しており、またブレンドバッファは、あらかじめR=G=B=0,α=1.0で初期化しておく前準備を必要とする。ブレンドバッファへの書き込みには、HDRエンコードレンダリング手法よりは簡単ではあるが、図で表したような計算ルールを適用している。

HDRエンコードバッファとブレンドバッファを合成する際の計算ルール
 具体的にはα値に配慮したRGB値を書き込み、α値には後段のHDRバッファと合成する際に用いるブレンド値を書き込む。RGBに対しての計算は定義通りのαブレンド演算、加算ブレンド演算なので説明は不要だろう。

 特徴的なのはα値の内容だ。αブレンドではもともとブレンドバッファのα値に格納されていた内容に「1.0-ブレンドする内容のα値」を書き込んでいる。加算ブレンドの場合は、RGBに対するブレンド処理で完結してしまう計算なのでブレンドバッファのα値は変化しない。

 最後に、先にレンダリングしておいたエンコードされたHDR次元の不透明内容と、このブレンドバッファの半透明内容を合成することになる。具体的には「HDRの不透明内容」をデコードし、「輝度レンジ0.0から2.0までの疑似HDRの透明内容」と同輝度基準にしてからシェーダーでブレンド処理を行なって合成している。

高部氏「ブレンドバッファの輝度レンジが0.0から2.0で固定されているので、これを超えるような明るい半透明があった場合にはクリップされて正しい結果で出なくなったり逆に暗いシーンでは階調不足が発生する恐れがあります。ただ、ブレンド処理で合成された段階でそういった問題は目立ちにくくなっていたので、『MGS4』ではブレンドバッファの輝度スケールを固定させたままの実装にしています」

 理想的には、輝度レンジ0.0から2.0に固定されているブレンドバッファの内容を、HDRバッファの内容の輝度レンジに一致させる必要があるのだが、「MGS4」ではこの処理を省略している。もし、まじめにやるのであれば、前フレームのHDRエンコードバッファの内容の平均輝度から輝度スケールを求めて、この輝度スケールに配慮して合成すると言うアイディアを高部氏は提案する。

 不透明内容のHDRエンコードレンダリングはMSAAを適用しながらのレンダリングになるが、半透明のブレンドバッファについてはMSAAを適用していないため、このぶんパフォーマンスが稼げる。これが期待される最適化効果の2つ目となる。

 ブレンドバッファへのMSAAがないということはこれについてのジャギーは回避できないことになるわけだが、もともとブレンドバッファの内容は(半)透過するもので向こう側が透けて見えるものなので、元来としてあまりジャギーが気にならない。逆にいうと半透明内容はMSAAの効果自体が現われにくいので問題になりにくいのだ。このあたりの手法はコストのかけ方と得られる効果のバランスがよく考えられたパフォーマンス重視の3Dゲームグラフィックスらしいクレバーな実装だといえる。

HDRエンコードバッファの内容 非HDRのブレンドバッファの内容 完成フレーム(ただし、トーンマッピング前)

 高負荷な広範囲のエフェクトについては、ブレンドバッファに対して縮小バッファの概念を導入している。これも「MGS4」の手法の特徴だ。

 「MGS4」では、ブレンドバッファとこれに対応するデプスバッファ(Zバッファ)を1/4サイズに縮小して、半透明エフェクトをこの縮小版ブレンドバッファに書き込んでいく。解像度が1/4になる代わりに負荷は1/4へ軽減されることになる。そしてHDRエンコードバッファとの合成は、この縮小版ブレンドバッファを4倍にバイリニア拡大して行なわれる。

 縮小版ブレンドバッファに書き込まれたエフェクト達は深度値を用いての前後判定も縮小版デプスバッファをベースに行なっているため、フル解像度版のHDRエンコードバッファと合成したときに前後関係をはみ出してエフェクトが合成されるような弊害が出るが、これもまた元々半透明のものなのであまり粗が目立たない。

 「MGS4」では、遠くのエフェクトについては小さく描かれることが多く、高負荷になりにくいしより精細な表現ができるとして、視点から遠い半透明エフェクトについては、前述したフル解像度版の方のブレンドバッファに書き込んでいる。縮小版ブレンドバッファには視点から近い半透明エフェクトを選択的に書き込むようにしている。いわばブレンドバッファのLOD(Level of Detail)的実装も取り入れているわけだ。

HDR不透明バッファ(トーンマッピング前) フル解像度版ブレンドバッファ
縮小版ブレンドバッファ 完成フレーム(ただし、トーンマッピング前)

 縮小バッファと言えば、本連載で取り上げた「ロストプラネット」編でも触れているが、「ロストプラネット」では解像度を下げた縮小版シーンテクスチャに対して半透明エフェクトを描いてこれをフル解像度版のシーンフレームにブレンド合成していた。この手法だと半透明越しに透けている情景の解像度が下がる弊害がある。「MGS4」の手法だと最終的にフル解像度の情景と合成されるのでこの弊害がない。ここは「MGS4」の手法の副次的なメリットだといえる。

 画面全体を吹き荒ぶ砂埃、吹雪などのフォグ表現は、レンダリング解像度の16分の1の低解像度のフォグエフェクト専用の縮小版ブレンドバッファに大量描画することで、半透明描画負荷の低減を狙っている。

 フォグエフェクトの描画が終わったときにはこの超縮小版ブレンドバッファを拡大して、シーンの深度値(デプス)とフォグエフェクト側の深度値(拡大によってさらに大ざっぱな解像度にはなっている)を比較し、濃度や輝度を調整して合成している。描画順序の兼ね合いから透過のつじつまに多少の矛盾が出るが、もともとフォグエフェクト自体が柔らかく大ざっぱなものなので目立たないのでここは無視している。

フォグエフェクトの例「砂埃」 フォグエフェクトの例「吹雪」

フォグエフェクトの例「砂埃」のムービー


■ 物理的正確さよりも映画的演出を重視した環境ライティング
  デザイナが手作業で半球ライティングを設定

アンビエントキューブを採用した初期作と言えば、VALVEの「Half-Life2」が有名
 今世代の3Dゲームグラフィックスで、あまり大きく取り沙汰されはしないが、近年、こだわりを持って実装されつつあるのが特別な環境光の実装だ。PS1、PS2の時代くらいまでは、環境光と言えばシーンごとに設定した適当な一色で賄われており、いわば動的ライティングに対する底上げ的なパラメータでしかなかった。表現力が上がった今世代ではシーン内にキャラクタを溶け込ませる手法として、あるいはキャラクタを際だたせる手法として環境光の取り扱いを気にし出すようになっている。「MGS4」もその好例だといえる。

 環境光とは、光源からの直接光でなく、相互反射などによって生まれた二次光源(間接光)の総体で、本来ならばレイトレーシングなどを行なって正確に求めなければならないものを簡易的に表した「その空間に立ちこめる光」のこと。「MGS4」では、この環境光に、低負荷ながらも高い効果が得られる「半球ライティング」(Hemisphere Lighting)を実装している。

 今世代の3Dゲームグラフィックスで人気の高い環境光は「アンビエントキューブ」(Ambient Cube)、あるいは「放射輝度ボリューム」(Irradiance Volume)と呼ばれる手法だ。これは、事前にレイトレーシングなどを行なって適当な間隔で方向を持った環境光を設定して、実際のライティング時にこれを吟味するという技法になる。

高部氏「我々も開発初期段階ではアンビエントキューブを実装していたんです。しかし、デザイナー陣が結果に満足しなかったんですよ。物理的には正しいライティングとなっていたはずなのですが、キャラクタがシーンに溶け込みすぎていて、もうちょっとキャラクタを存在感を持って目立たせたいという要望が出されまして。そうなるとアンビエントキューブを手作業で調整する必要が出てくるわけですが、さすがにそれは手間が掛かりすぎるので、半球ライティングの方を採用しました」



半球ライティングのイメージ図
 こうした判断は映画制作におけるライティングでも良くある話だ。役者をかっこよく見せるために、そのシーンの窓からの射し込む光だけでは鼻の陰影が強く出すぎるのを嫌って、顔面正面に相対する方向から淡い光を当てたりすることがある。「MGS4」では、物理的に正確な表現もある程度はできつつ、それでいてデザイナによる“演出的”環境光設定が行ないやすい半球ライティングの採用に至ったというわけだ。

 半球ライティングは、本連載「ヴァルキリープロファイル2」編でも紹介しているので詳細はそちらを参照して欲しいが、ここでも簡単に解説すると、環境光を2方向から与える仕組みのこと。地面からの環境光と空からの天球光に環境光を一般簡略化したモデルのことだが、「MGS4」では任意の2方向に考え方を拡張している。

 アンビエントキューブ法では、シーンを一定間隔に区切ってオートマチックに環境光を組み入れてしまうが、「MGS4」では、デザイナがシーンごとに任意の方向、任意の影響範囲(バウンディング指定)の設定ができるようになっている。つまり、2方向から照らせる仮想的な照明器具をシーン内に影響範囲の指定を含めてデザイナが配置設計しているということだ。なお、影響範囲は階層指定ができる設計になっているとのことで、例えば設定した半球ライトへ近づくにつれて(または遠ざかるにつれて)影響させる半球ライトを切り換えられるような構造になっているわけだ。

開発で用いられた半球ライトの設定ツールの画面


■ 擬似的なラジオシティ表現も可能な分離プリライティングとは?

分離プリライティングの概念図
 印象的なキャラクタ表現をするための半球ライティングだが、この半球ライト環境光の置き方を工夫することで、動的キャラクタへの擬似的なラジオシティ表現(相互反射表現、間接光表現)を行なうことは可能だと高部氏は言う。そして「MGS4」では、これとは別に、背景に対しての複雑な環境光表現手法を実装している。それが開発チーム内で「分離プリライティング」と呼称されていたテクニックだ。

 具体的には、シーンにデザイナーが設定したその分離プリライティング専用の光源からのライティング結果を、事前に背景のポリゴンモデルの各頂点の付随属性に焼き込むテクニックになる。簡単に言えば、いわゆる頂点単位のライトマップに相当する。ライティング結果の焼き込みは、互いに直交する3方向の基準ベクトルに対して行なうのがこの方法の特徴だ。

 背景を構成するポリゴンの各頂点にはこの3方向のライティング結果が焼き込まれていることになり、この背景ポリゴンに適用する法線マップなどの陰影処理にもその3方向のライティング結果を利用する。

 こうすることで、薄暗い中では陰影に乏しい法線マップによるディテール陰影が非常に豊かになる。これがこのテクニックの実装の最大の恩恵となる。そしてデザイナーが、シーン設計時に設置することになる、その分離プリライティング用の光源の数に制限はなく、その光源の置き方や強さを工夫することでラジオシティライクな表現を背景に対して実現できる。

分離プリライティングのみ
同一シーンの完成フレーム

開発で用いられた分離プリライティングの設定ツールの画面
 また、光の分布解像度自体が頂点単位となる関係上、ライトマップよりも大ざっぱにはなるが、その分テクスチャメモリの消費が圧倒的に少なくて済むのもメリットだ。なお、背景ポリゴンの各頂点にライティングを焼き込む工程は開発段階ではなく、ゲーム起動後のPS3実機上のランタイムで行なっている。この実装のおかげで動的なシーンの変化にも対応できるメリットもあるのだ。

 例えば街灯に灯がともったとして、その街灯の光の影響が出そうなところに新たに分離プリライティング用の光源を新設して、再計算して分離プリライティング情報を更新してやればいい。そうすれば、街灯が灯った後の、動的に相互反射が実現できているような効果が得られる。さらに、この街灯を破壊したときには、逆に分離プリライティング用の光源を削除して分離プリライティング用情報を更新すれば、街灯が消えた後の相互反射を表現できる。

 焼き込むライティング結果が頂点単位なので表現精度が粗めだったり、頂点データに付随情報が多いとパフォーマンスが低下するクセがあるPS3のRSXではパフォーマンスインパクトが大きいと言った課題も抱えるが、現時点でなし得る現実的な擬似的相互反射表現としてはリーズナブルな実装だと思う。

分離プリライティングは動的シーンにも対応する。電気スタンドを撃ち消したときに、ちゃんと周囲の環境光が消失する。これは消失後の分離プリライティング用の光源を削除することで実現している


(C)2008 Konami Digital Entertainment

□KONAMIのホームページ
http://www.konami.co.jp/
□「小島プロダクション」のページ
http://www.konami.jp/kojima_pro/
□「METAL GEAR SOLID 4 GUNS OF THE PATRIOTS」のページ
http://www.konami.jp/mgs4/
□関連情報
【9月12日】「METAL GEAR SOLID 4」関連セッションレポート その2
次世代機という“理想”と、PS3という“現実”の狭間でもがくエンジニア達
http://game.watch.impress.co.jp/docs/20080912/cedec_mgs.htm
【9月10日】「METAL GEAR SOLID 4」関連セッションレポート その1
戸島サウンドディレクターが明かす“戦場ストリーム”とは何か!?
http://game.watch.impress.co.jp/docs/20080910/cedec_mgs4.htm
3Dゲームファンのためのグラフィックス講座のバックナンバー
http://game.watch.impress.co.jp/docs/backno/rensai/3dg.htm

(2008年12月3日)

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



Q&A、ゲームの攻略などに関する質問はお受けしておりません
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします

ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp

Copyright (c)2008 Impress Watch Corporation, an Impress Group company. All rights reserved.