イベント
[GDC 2018]「Far Cry 5」におけるこだわりの「水面」表現法,教えます
今回のGDC 2018では,3月29日に発売予定となっている最新作「Far Cry 5」(邦題:ファークライ5,PC / PlayStation 4 / Xbox One)における「水の描画」について,Ubisoft TorontoのBranislav Grujic氏が大いに語ったセッション,その名もズバリ「Water Rendering in Far Cry 5」(Far Cry 5における水描画)があったので,その概要をレポートしてみたい。
地形生成ツールに「水辺を簡単に作る機能」を搭載
プレイヤー諸姉諸兄には釈迦に説法だが,Far Cryシリーズは作品ごとにテーマとなるロケーションが異なり,毎回,当該ロケーションの風土や気候をリアルに再現することが,グラフィックスレベルにおける目的の1つとなっている。
Far Cry 5は,米国モンタナ州を舞台としていることから,開発チームは当然のことながら,まずモンタナ州の風土を研究,観察することに取り組んだ。
当然,開発チームはモンタナ州へ足を運びロケハンを敢行。水のレンダリング担当者達は,水辺の写真を撮りまくって持ち帰ったという。それをFar Cry 5の「水回り描画システム」上で反映させることになったそうだ。
セッションでGrujic氏が最初に紹介したのは,地形生成ツール上で川や池を作成する様子だ。
設計済みとなっている任意の地形に対して,ツール上からマウス操作で「水となるべき領域」を囲んでいくと,そこにポコっと穴を掘ることができ,線を引けば水流としての川を地形に作り出すこともできる。ツールの使い勝手を紹介する動画――残念ながら動画での撮影はNG――を見る限り,操作は非常に直観的だ。
Grujic氏は,Far Cry 5における水面描画パイプラインのフロー図を示し,フローの構成要素を1つ1つ,上流から順に解説していった。
まずは「Visibility」(可視性チェック)ブロックからだ。
オープンワールド型のゲームであるFar Cry 5では,はるか遠方の情景まで見渡せるゲームグラフィックスを提供する必要があるわけだが,当然ここには水面が登場してくる可能性がある。
その水面は前述のとおり,地形作成ツールによって作り込まれている。そしてそれらは,プレイヤー視点から近くに見えたり遠くに見えたり,あるいは山や森に隠れて見えなかったりする。
また,水面の描画はかなり負荷が高いため,よく見えない遠方の水面では処理の手を抜きたい。そのため,高品位に描画するか手を抜くかの判断もここで行うことになる。
流れている川のマップ上における遠近分布 |
実際に視点から見える水面のみ描画したところ |
パイプラインフローを一段下がったところにある次のブロックは「Position」だ。
これはディファードレンダリング(Deferred Rendering)システムにおける水面描画専用の低解像度なGバッファ(G-Buffer)レンダリングに相当するものとなる。
前段のVisibilityブロックの結果を踏まえてGバッファレンダリングを行うような格好になるため,結果として水面専用低解像度Gバッファでは,材質IDが出力された「Data」と,水面の法線が出力された「Mesh Normal」,深度情報が出力された「Depth」が得られる。
ここで水面に対して,3D的な変移を与えるフェーズ「VDM」と「FBM」が介入する。
カプコンの「ロストプラネット2」が水面の動き生成に使っていた「Wave Particle」と概念的には近い印象を受ける。
一方のFBMは「Fractal Brownian Motion」(フラクタルブラウニアンモーション,非整数ブラウン運動)の略。実のところFBMは,水面のさざ波を表現するのに使うフラクタルノイズ関数としては定番のもので,Far Cry 5でも,さざ波を与える「ネタ元」として活用している。
Far Cry 5では,Positionブロックのところで水面を近場のものと遠方のものとで切り分けたが,近場の水面に対して最大9オクターブ重ねたノイズを取り出す。この場合,テクスチャ読み出しは9回だ。それに対して遠方の水面に対しては3オクターブ重ね(=テクスチャ読み出し3回)に留めて,負荷の低減を図っているとのことだった。
遠方の波はそれっぽくウニュウニュ動いていればそれほど不自然ではないから,これでいいということなのだろう。
続いては「Occlusion」(オクルージョン,遮蔽)ブロックだ。
ここでは,画面を32×32のタイルで区切り,水面描画に該当するピクセルが「あるか/ないか」をチェックする。そして「ある」場合には,当該タイルから水面ピクセルの描画スレッドを立ち上げる準備を行う。
「Screen Space Tessellation」(スクリーンスペーステッセレーション)は,Occlusionで32×32に区切った各タイルに対して,16×16クワッド(=四辺形ポリゴン)で分割(=テッセレート)して,VDMやFBMを実際に適用するブロックである。
なおここで水面に対して適用するVDMやFBMは,当然のことながら,四辺形ポリゴンに対してということになる。
ここまではジオメトリレベル(ポリゴンレベル)の処理系だが,もちろん,最終的な描画は当然ピクセルで行う。そこで,後段となるピクセル単位のライティングやシェーディングを行うため,「描画解像度と合致する解像度で画面座標系の法線を得る処理」を行うことになる。これが「Normal」だ。
その結果を受けて,ジオメトリレベルの法線と馴染むようにスムージング処理を行うのが「Smoothness」である。これを行わない場合,水面のライティングの鏡面反射のハイライトが正しく出ないことがあったという。
「Foam & Algae」は,水面の上を流れる泡(Foam)や藻(Algae,エルジー)などを付与するフェーズだ。
水面上の泡は,フラクタルノイズから算術合成されたノイズテクスチャからなり,泡の色が変化したりするが,これもノイズを使って変動させているとのこと。泡が乗る場所についての解説はなかったが,たとえばUnchartedシリーズの水面描画だと,「水流の激しいところ」「水流が岩などに衝突したところ」「尖った波の頂点付近」などが対象箇所だった。Far Cry 5でも似たようなアルゴリズムを採用しているのではないだろうか。
水流そのものは,リアルタイムでシミュレーションしているわけではなく,事前に生成した水流マップ(Flow Map)を基にして表現している。
この水流マップは,地形生成ツールで川を生成した後で水を満たし,水を流すシミュレーションを行って生成するそうだ。
最後の「Composite」(コンポジット,合成)は,これまでのパイプライン上にある各機能ブロックで生成されたものを統合し,最終的な描画結果を得るところとなる。
具体的には,水面に対するライティングやシェーディングを行うブロックだ。
……と,一言で済ませると簡単だが,実務としては,太陽光からの直接光ライティングや,環境光からの間接光ライティング,水面に映り込む鏡像の適用,フレネル反射への配慮,水底の屈折処理などなど,かなり多様な処理を行うことになる。
波なしでフレネル反射に配慮した水面を生成したショット |
映り込みのうち,画面座標系の鏡像生成SSRだけを可視化したショット |
環境マップ。SSRで鏡像が生成できない範囲ではこの環境マップを適用する |
最終的な描画結果 |
トップレベルの水表現を実現しているFar Cry 5
気付いていると思うが,本セッションのスライドは入手できなかったため,ここまで写真ベースでの解説となっており,若干見にくい点はご容赦を。ただ,Far Cry 5における水面描画の概要は掴んでもらえたのではないかと思う。
実際の描画結果は本当に美しい。現行技術ベースの水面描画システムとしてはトップレベルの表現力になっていると断言してしまっていいだろう。興味を持った人は,ぜひ予告映像などでその品質を確認してみてほしい。
Far Cry 5日本語公式Webページ
4GamerのGDC 2018記事一覧
キーワード
(C)2017 Ubisoft Entertainment. All Rights Reserved. Far Cry, Uplay, the Uplay logo, Ubi.com, Ubisoft, and the Ubisoft logo are trademarks of Ubisoft Entertainment in the US and/or other countries.
(C)2017 Ubisoft Entertainment. All Rights Reserved. Far Cry, Uplay, the Uplay logo, Ubi.com, Ubisoft, and the Ubisoft logo are trademarks of Ubisoft Entertainment in the US and/or other countries.
(C)2017 Ubisoft Entertainment. All Rights Reserved. Far Cry, Uplay, the Uplay logo, Ubi.com, Ubisoft, and the Ubisoft logo are trademarks of Ubisoft Entertainment in the US and/or other countries.
- 【PS4】ファークライ5 【初回生産限定特典】「ドゥームズデイ・プレッパーパック」ダウンロードコード同梱
- ビデオゲーム
- 発売日:2018/03/29
- 価格:¥3,650円(Amazon) / 3760円(Yahoo)