|

後編 3/3
Text by トライゼット 西川 善司
Projected Shadows〜投射シャドウの設定
影生成に関する設定セクション。TR6では,いくつかある影生成の手法のうち,互換性の高い手法である投射テクスチャマッピングを使った「投射シャドウ手法」(Projected
Shdows)を採用している。
この手法では,光源を視点にして影を落としたいモデルのシルエットをテクスチャにレンダリングして,これを投射テクスチャマッピング(OHPや液晶プロジェクタで映像を投影するような感じ)することで影表現を行う。キャラクタ形状の影が出るが,自分の影が自分自身に落ちるセルフシャドウ表現には対応しない(やってできないことはないが,やりたい場合は普通は別の方法を選択する)。
TR6の影生成は自キャラや敵キャラなどの動き回るアクティヴキャラクターに対してのみリアルタイム生成され,背景物,小道具,大道具オブジェクトなどの静的キャラクターに対しての影はライトマップによる静的な影表現に留まっている。
光源直下の椅子に影がないなど,そのライトマップ配置が不徹底だったり,またそのライトマップ自身の品質がイマイチだったりと,最近のゲームの影表現と比べると若干見劣りする。それでも,歴代のトゥームレイダーシリーズと比べれば各段に良くなっているのだが。
Enable
影生成を行うかどうかの設定。チェック・オンで影生成を行う設定になる。
User Clip Planes〜任意のクリップ平面
描画境界の設定。チェック・オンにしたほうが精度の高い影の生成が行われる……といいたいところだが,影描画反射と屈折の効果のときとは異なり,この設定の有無による影の品質の変化はとくに見受けられず。
nVidia Shadows〜NVIDIA製GPU専用の影生成アクセラレーションの設定
NVIDIA製GeForce3以降から搭載されている影生成アクセラレーション(ハードウェアシャドウマッピング機能)を使用するかどうかの設定。チェック・オンで「使用する」設定になる。
この機能は,一般的にはセルフシャドウ生成にも対応する「シャドウバッファ技法」と呼ばれる影生成手法で活用すると「おいしい」機能(遮蔽関係を吟味しながらの影生成をフィルタリング処理付きで生成してくれる優れもの)で,「SplinterCell」(Ubi
Soft)が積極的に活用したことで話題になった。
TR6の影生成は,投射テクスチャマッピング技法であり,光源からの光とオブジェクトの遮蔽関係にはいっさい関与しない方針を取っている。このため,この機能は影テクスチャを生成するときにバイリニア(Bilinear)フィルタリング処理をかませるためだけに活用されているようだ。つまり,TR6では,nVidia
Shadowsを有効にしても影生成アルゴリズムが切り換わるわけではなく,セルフシャドウ生成にも対応しない。
とはいえ,RADEON系で生成した影よりもエッジが柔らかくなるので,nVidia Shdaowsを活用したほうが総じて影の見栄えは良くなる(下図参照)。
なお,残念なことだが,2003年12月現在の最新GeForceシリーズ向けドライバ(Ver.52.16)では,GeForceFXシリーズでこの機能が正常に動作しない。グチャグチャなノイズが出たり,まったく影が出なくなってしまったりするので,GeForceFXシリーズユーザーはこの設定項目をオフにすること。ちなみに,GeForce3/4Ti系では正しく動作することを筆者は確認している。GeForceFXシリーズにもこの機能自体は搭載されており,ドライバ側のバグと考えて間違いないだろう。
 |
 |
| RADEON系で生成した影。エッジがトゲトゲした感じになってしまっている |
GeForce3/4Ti系にてnVidia Shadowsを有効にして生成した影。エッジのトゲトゲ感が(完全に消えているわけではないが)軽減されているのが分かる |
1〜12(リストボックス)〜影を描画するキャラクタ数の上限の設定
シーン内に描画する影の数の設定。1から12が設定でき,12が最上位となる。
1を設定したときにはララの影しか描画されなくなり,敵キャラクターの影描画が省略されてしまう(下図参照)。
本作は,あまり敵がわらわらと大勢出てくるタイプのゲームではないので,あまり値を大きくしても見た目にほとんど反映されない。ハイエンドクラスのGPUのユーザーは,気持ちの問題(?)で12を設定しておきたいところ。
 |
設定値1の場合。壁に投射されているのはララの影だけ。犬の影がない |
 |
設定値12に設定した場合。犬の影もちゃんと生成されている |
Format/Depth〜影テクスチャの形式とZバッファ精度の設定
項目「Format」は,影テクスチャの形式を設定するところ。そして項目「Depth」は,影生成に使用するZバッファ精度を設定するところだ。
項目「Format」は,
32bit A8R8G8B8
32bit X8R8G8B8
が設定可能。項目「Depth」は,
| [最良] |
32bit Depth D24S8 |
| |
32bit Depth D24X8 |
| [推奨] |
16bit Depth D16 |
が設定できる。
TR6の影生成技法はシャドウバッファ技法(シャドウマッピング技法)ではないので,αチャンネルに深度情報を仕込ませたりもしていない。よって「Format」については,αチャンネル無しの32bit
X8R8G8B8を設定しても影の出来映えに差異は生じない。
投射テクスチャマッピングを用いる投射シャドウ手法では,そのシーンの深度情報(Zバッファ情報,奥行き情報)を基にして,影テクスチャをどこに投射するかを処理していく。その深度情報の精度を決めるのが項目「Depth」ということになる。なおZバッファ精度が高いほど,精度の高い影が得られる。
しかしTR6では,影が極端に長く伸びたり,遠方に影が投射されたりしないように,シーン内の光源の配置や向き,キャラクターが移動できる範囲がうまく調整されており,16bit精度でも影の品質にほとんど差異がない。ビデオメモリ節約のためにもここも16bit精度でいいだろう。
Pixel Shader 2.0 Shadows〜プログラマブルピクセルシェーダ2.0による影生成
影生成をプログラマブルピクセルシェーダ2.0を使って行うかどうかの設定。チェック・オンでプログラマブルピクセルシェーダ2.0を活用して影生成が行われるようになる。
このフィーチャーを実際に機能させるためには,浮動小数点実数テクスチャに対してのレンダリングに対応していなければならない。2003年12月現在,これに対応しているGPUはATI
RADEON9500以上のみ。プログラマブルピクセルシェーダ2.0命令セットは持つが,浮動小数点実数テクスチャ形式をDirectX環境下で活用できないGeForceFXシリーズでは,このフィーチャーは使えない。GeForceFXシリーズ環境下でここをチェック・オンすると,ゲームの起動に失敗する。
ちなみに,NVIDIAは「GeForceFXシリーズはハードウェア的には対応しているが,ドライバの問題が解決できないために利用不可にしている」と言い続けて,1年が過ぎている。いい加減にそろそろ対応をしてほしいものだ。
Shadow Rooms〜背景物の影生成
背景物,小道具,大道具オブジェクトなどの静的キャラクタに対しての影生成を有効にさせる設定。……といいたいところだが,2003年12月現在,すべての主要GPU環境下において不活性化されており,実際には有効にできない。将来のバージョンアップで対応される可能性がある。
 |
ララには影が出ているのに,椅子やPCには影がない。椅子もPCも動かないのでライトマップによる静的な影でもいいと思うのだが……。実はTR6には,こうした不自然なシーンも多い |
Format/Depth〜影テクスチャの形式とZバッファ精度の設定
プログラマブルピクセルシェーダ2.0による影生成時に用いる影テクスチャの形式(Format)と,Zバッファ精度(Depth)を設定するところ。
項目「Format」には,
| [最良] |
32bit G32F |
| [推奨] |
16bit G16F |
が選択でき,項目「Depth」には,
| [最良] |
32bit Depth D24S8 |
| |
32bit Depth D24X8 |
| [推奨] |
16bit Depth D16 |
が設定できる。
G32FやG16Fとは,緑色(G)だけを32ビットや16ビットの浮動小数点実数で表現する特殊なテクスチャ形式だ。画像ではなくプログラマブルピクセルシェーダで使うさまざまな数値データを格納しておく用途で使う。
項目「Depth」については,前出と同様で,投射テクスチャマッピングの処理系で活用するもの。TR6では,16ビット精度でも画質には差がないのも同様だ。
ところで,「プログラマブルピクセルシェーダ2.0による影生成」と聞いて,なにやら凄いことを想像してしまった人も多かったと思う。しかしTR6においては,やはり基本方針は投射テクスチャマッピングによる投射シャドウなので,標準形式の影生成と比較してもそれほど出来映えに違いがない。セルフシャドウもないし,ましてや影エッジのトゲトゲも変わらない。(TR6においては)浮動小数点実数テクスチャを活用する意味はほとんどないといっていいかもしれない。
なのになぜこの機能が付いているかといえば,これもやはりベンチマークテスト的にTR6を活用する目的のためだろう。
結論をいえば,RADEON9500/9600系ユーザーは,無理してゲームプレイ時にこのフィーチャーを活用することはない。無意味に描画パフォーマンスが下がるだけだ。
前出の「Shadow Rooms」が効くようになれば,この機能を活用する意味が出てくるのかもしれないが……。
TR6のダウト:不思議な反射,不思議な影
これで,ひと通りの解説が終わった。
さて,TR6はさまざまな設定をプレイヤーに開放しているが,開放されていない設定もある。例えば下図(1)のような,テカテカの床に情景が反転して映り込んでいるシーン。
このシーンは,反射シミュレーションやキューブ環境マップを無効に設定しても映り込みが消えない。実はこの床下の情景は,テクスチャでも環境マップでもないからだ。
これは床を半透明扱いにして,床下にも床上と同じ背景物や大道具を配置しているのだ。そのため,ララの影が床下の情景にだけ投射されてしまうというおかしな映像が見て取れる(図2)。
図3は,TR6の投射シャドウの表現的限界が見て取れるシーン。下方からの光源に照らされたララの影が,壁に浮いて投射されている。本来ならば,この足場の影も出ていなければおかしいのだが,TR6では動くキャラクターにしか影生成を行っていないために,こうしたことになってしまっているのだ。
ゲームの本質には関係ないことなので,言ってしまえばどうでもいいことなのだが,映画にも間違い探し遊びあったりするし,3Dゲームでもそんなことを気にしながらプレイすると面白いかもしれないってことで……。
 |
 |
 |
| 1.この映り込みは環境マップによるものではない。シーンをテクスチャにレンダリングして床に貼った前出の反射シミュレーションでもない。床下に実際にこういうジオメトリが広がっているのだ。初代「Unreal」(EPIC
GAMES)が,こういう手法を使っていた。シーン内にそれほどオブジェクトが存在しない場合は,こうした映り込み表現もありということか |
2.床が鏡面反射しているならば,ララのモモから上の影が床境界面を境にして下向きにも出ていなければおかしい。そこまで要求するのは酷? |
3.足場の左斜め後方下からの光源によって照らし出されたララの影が,右の柱に投射されている。足場の影が生成されないのでララの影だけ宙づり状態。一瞬何がどうおかしいか考えさせられるビジュアル |
最後に
PC 3Dゲームは,その動作させる環境ごとにビジュアルが変わってしまうというのが欠点ではあるが,新しいハードウェアにするとその効果が体感できる利点(?)も併せ持っている。また,最適な設定を行えば,最新のPC環境でなくても,その範囲内での最良のビジュアルとパフォーマンスでゲームが楽しめるというのも,PC
3Dゲームならではフィーチャーだ。
TR6は,良くも悪くも,そんなPC 3Dゲームの最たる例になっていたと思う。
今後,その他のPC 3Dゲームのセッティングをするとき,その設定にどんな意味があってどんな効果があるのか分からない場合に,今回の記事が参考になれば,と思う。
(C) Core Design Limited, 2002-2003. Lara Croft, Tomb Raider and Core are
resistered trademarks of Core Design, Ltd.

|