ニュース

「Far Cry 4」の美しさは影や光のみにあらず!

“アダブティブ バーチャルテクスチャ”で表現する美しいランドスケープ

3月2日~6日開催



会場:San Francisco Moscone Convention Center

登壇したUbisoftモントリオールスタジオのTechnique ArchitectのKa Chen氏

 「Far Cry 4」は、前作「Far Cry 3」と同じDunia Engine 2エンジンを採用し、Ubisoft Montreal Studiosが開発したFPSだ。本シリーズのビジュアルは伝統的にオープンなランドスケープが特徴的で、ダークな密室型のFPSと明確に差別化されている。GDCのセッション「Adaptive Virtual Texture Rendering」に登壇したのは、同スタジオに所属するTechnique ArchitectのKa Chen氏。

 3Dゲームにおいてテクスチャリングは、ライティングやシャドウイングと比較して、そもそも当たり前すぎて、あまり注目されることのない分野だが、数年前から大きな変化が起きている。それが「バーチャルテクスチャ」だ。バーチャルテクスチャが「Far Cry 4」の美しいビジュアルにいかに貢献しているかを、Chen氏のスピーチから感じ取ることができた。

 FPSでは、処理落ちのない快適なゲームプレイが必要不可欠だ。自分の腕が理由で死んだのならともかく、表示遅延によるラグで死ぬと、それは大きなストレスとなる。それを避けるために、制作者側は常に快適なパフォーマンスが保てるようにゲームを設計する必要がある。具体的には快適なフレームレートを維持するために、同一フレームで同時に描画できるポリゴン数には制約が設けられている。もし仮にポリゴンを無制限に描画できるなら、ありとあらゆる物体の質感を表現することもできるだろうし、特にメカものが多い、SFやミリタリーテイストのゲームの場合、適切なライティングと物質のマテリアル設定で、空間中のかなりの量の物体を精細にモデリングされたポリゴンモデルと置き換えられるだろう。

 もちろん、現実にはそうではない。実際には前述の通り一定のフレームレートを維持するため、同時に描画するポリゴン数に限りがある。そこで、物体のおおまかな形状はポリゴンモデルで維持しながら、詳細な部分についてはテクスチャを貼ってディティールを表現するのだ。非常に乱暴にいうと、テクスチャリングとは、三次元的な物体に絵を貼り付けて、あたかも実際にディティールがあるように見せかける手法だ。高速GPUであっても、まだまだフォトリアルに描ききれない現代のポリゴン表現では、テクスチャリングは非常に重要だ。

本講演のテーマはバーチャルテクスチャ。テクスチャを大量かつ多種多様に使えるようにする技術だ

 そのテクスチャリングも、時代を経て進化を続けている。そのひとつが本作で採用されている「バーチャルテクスチャ」と呼ばれるテクニックだ。バーチャルテクスチャとは、実際に必要なだけのテクスチャを物理的にVRAMに配置し、そのテクスチャを階層構造で管理することで、あたかも潤沢なテクスチャが無限のVRAMに載っているように取り扱う技法をいう。

 たとえばメインメモリとVRAMとが共有で、自由に切り分け可能なアーキテクチャのハードであったり、ビデオカードに潤沢なVRAMを搭載したPCであったりしても、結局のところ物理的なVRAMは有限だ。バーチャルテクスチャは、決して本作だけのオリジナルテクニックではなく、Chen氏が冒頭で紹介した通り、id Softwareのid Tech 5エンジンを採用する「Rage」のメガテクスチャに端を発し、DICEのFrostbiteエンジンを採用する「Battlefield 3」に至ってはバーチャルテクスチャをプロシージャルに生成し、さらに多様性をもたせている。

 バーチャルテクスチャによって大量のテクスチャを取り扱えると、ゲームプレイにどのようなメリットがあるのだろうか。それはズバリ、ゲームのグラフィック品質が向上するということだ。先に触れた通り、ポリゴンだけで現実世界そっくりに見える空間を作り出すことはできない。多種多様、しかも大量のテクスチャが使えるとなると、ゲーム空間のディティール表現力は格段に向上する。

これまでのゲームでの実装の概略

バーチャルテクスチャ実装で多様化したゲーム画面

 本題である「Far Cry 4」のバーチャルテクスチャは、どのように活用されているのだろうか。特に有効活用されているのは、ランドスケープを形成する地表に対してのものだ。「Far Cry 4」はクロスプラットフォームタイトルで、VRAMに余力のある特定のハードの性能に絞って開発することはできない。10キロ四方に及ぶ広大なフィールドを持ち、プレーヤーから300メートルの遠景に至るまで3Dの地形が続く。1センチあたり10テクセルのテクスチャ密度を目標にしており、草や花のような遠くの地面には描かれず、プレーヤーに近づいてくると描かれる、いわゆる「デカール」で表現されるものにもバーチャルテクスチャが活用されている。

 このデカールに対して、工夫なくテクスチャを用意した場合、必要になるメモリの量に対して得られるビジュアル効果が釣り合わず、割に合わない。そこでゲーム実行中にプロシージャルにバーチャルテクスチャに対して焼き付けて最適化している。「Far Cry 4」の地表に対するバーチャルテクスチャは512,000ピクセル四方とかなりのものだが、その実体はわずか(といっても決して少なくはないが)9,000ピクセル四方のサイズだ。ところが、512,000ピクセル四方という大きなテクスチャを使っても、空間が10キロ四方だと、その密度は1センチあたり0.5テクセルの解像度になってしまう。逆に目標である1センチあたり10テクセルを正にして考えると1000万ピクセル四方のテクスチャが必要になってしまう。それほど「Far Cry 4」のフィールド空間は広大なのだ。

本セッションのテーマ「Adaptive Virtual Texture」の概要

 そこで登場するのが、本講演のテーマ「アダブティブ バーチャルテクスチャ」(以下、「AVT」)だ。AVTは、プロシージャルなバーチャルテクスチャを基礎としており、10キロ四方の地表を64メートル四方の区画に分割して管理する。プレーヤーの視点のニア側の区画では大きなテクスチャイメージを使い、バーチャルテクスチャの密度を上げる。バーチャルテクスチャは64,000ピクセル四方と総テクスチャのうち8分の1が割り当てられる計算だ。これは、目標の1センチあたり10テクセルの密度に相当する。

 一方で、遠景となるファー側については、最遠の部分では1,000ピクセル四方と、かなり小さなものとなっている。これらをプレーヤーからの距離が近づいたたり、離れたりするのに応じて、実メモリに読み込んだり、実メモリから解放したりする。この手法は実に合理的だ。というのも、プレーヤーの視点から近い部分のテクスチャ解像度は高いほうがいいに決まっているが、プレーヤーカメラからやや離れた部分に高密度のテクスチャは必要無い。遠景においてはなおさらで、仮に高解像度のテクスチャを貼り付けたとしても、画面上のレンダリング結果はほんの数ピクセル四方ということもある。遠景におちては、テクスチャ解像度が高くても美しさにほとんど影響しない。影響しないなら低解像度のテクスチャを利用して、メモリの節約をするほうが好都合だ。距離によってテクスチャの切り替えを行うことそのものは、ミップマップと呼ばれる技法なのだが、AVTの合理的なところは、ミップ用のテクスチャがバーチャルテクスチャの仕組み上、必然的にメモリに用意される点にある。ある区画にプレーヤーが近づいたり離れたりしても、一段階近いミップマップ、一段階遠いミップマップと、テクスチャが順番にシフトするように切り替えて再利用するというところも優れている。近づく際には最も高い解像度の64,000ピクセル四方のテクスチャ、離れる際には最も低い解像度の1,000ピクセル四方のテクスチャのみ新たに用意すれば良いということになる。

各テクスチャページはプレーヤーの移動とともにロード、アンロードが繰り返される

よく見るとゲーム画面からディティールが変化しているのがわかる

 いいことずくめのように感じるAVTだが、問題点もある。大量のバーチャルテクスチャをキャッシュするとき、非常に処理が遅くなってしまう可能性があるのだ。カメラが高速に動く、つまりプレーヤーキャラクターが車で移動したり、空を飛んだりすると、それに応じて背景も高速で移り変わることになる。そうするとパーチャルテクスチャの入れ替え頻度が高まり処理がかさむというわけだ。また1フレームあたりのレンダリング時間も問題になることがある。解決策は、レンダリングの分散で、ミップレベルによって低解像度から高解像度へソートする必要出てくるが、複数フレームに対して分散レンダリングを行うことで良好な結果を生んでいる。

テクスチャのアップスケール。区画がプレーヤーに接近すると起こる

対してプレーヤーから離れるとダウンスケールが発生する

 「Far Cry 4」では、傾いたポリゴンに貼られたテクスチャのジャギーが目立たないようにするテクスチャフィルタリング技法のうち、8x異方性フィルタリングをサポートしている。ただ、バーチャルテクスチャを採用しているため、テクスチャの近接したページは必ずしもゲーム空間に合っているとは限らない。適用すると、結果として色が滲んでしまうこともある。

 そこで「Far Cry 4」場合、テクスチャに4ピクセルの縁を設けて264×264としている。また、より良好な結果が出る自前のソフトウェアトリリニアフィルタリングを積極的に活用している。バイリニアだとミップレベルの切り替わりの境界線が目立ってしまうのだが、トリリニアの結果は良好だ。ハードウェアアクセラレーションを活用していないのは意外に思うかもしれないが、「Far Cry 4」の場合、AVTとの兼ね合いで、ハードウェアを使うとむしろ25%も多くのメモリを使ってしまうのが敬遠の原因のようだ。Chen氏は、ソフトウェアでのフィルタリング速度は良好で、ハードウェアと比較して遜色がないとしていた。

プロシージャルに生成される草花といったデカール

フィルタリング手法の違いによる差異の比較。左からバイリニア、異方性、トリリニア

 今回のセッションを通じて、Chen氏のアーキテクトとしての設計ポリシーは、技術的野心を追求することではなく、既存の技術を改良して、よりよい状態で実装し、ゲームアプリケーションが目標に置く項目を、果たしてその通りに実現させることにあると感じた。技術そのものに派手さはないが、技術系の開発分野でも精力的な活動があるからこそ、世界中のUbisoftスタジオで数多くのコンテンツが生み出されるのだろう。彼らのような人材とともに、一度は一緒に働いてみたいものだ。

AVT有効状態のランドスケープを俯瞰で

(谷川ハジメ)