パッケージ
グランツーリスモ7公式サイトへ
読者の評価
16
投稿数:4
レビューを投稿する
準備中
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2023/03/23 16:43

ニュース

[GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

画像集 No.002のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密
 GDC 2023初日の米国時間2023年3月20日,3Dゲームグラフィックス関連のセッションを1日とおして行う「Advanced Graphics Summit」が行われた。このイベントは,「God of War」の開発元であるSanta Monica Studiosや,「グランツーリスモ7」(PS5 / PS4,以下,GT7)のポリフォニーデジタル,PS5版「Marvel's Spider-Man' Remastered」のPC版移植を担当したNixxes Software(関連記事),そしてGPU&CPUメーカーであるAMDといった具合に,ゲームグラフィックスの世界では知られた企業からの講演者が講演を行うというものだ。

 本稿ではその中から,ポリフォニーデジタルによる「Realistic Real-Time Sky Dome Rendering in 'Gran Turismo 7'」を取り上げたい。講演を担当したのは,同社の鈴木健太郎氏と,安冨健一郎氏とである。

画像集 No.004のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密
鈴木健太郎氏(グラフィックスチーム リードエンジニア,ポリフォニー・デジタル)
画像集 No.003のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密
安冨健一郎氏(福岡アトリエ グラフィックスチーム テクニカルアーティスト,ポリフォニー・デジタル)

 講演のおおまかな内容は,GT7で実装した「空の情景」(天球)を生成するシステムについての技術解説である。興味深い話題が満載であったものの,今回は講演の中から,比較的理解しやすいテーマである「リアルタイム雲生成」のパートのみを取り上げたい。


リアルタイムに3DモデリングしているGT7の雲


 GT7の空には,時間経過とともに形を変える,立体的でリアルな雲が描かれている。しかも,太陽光が密度の低い雲を透過する様子や,重なった雲がほかの雲に影を落とす様子も描かれているので,リアリティは相当に高い。
 GT7における雲生成は,ゲーム実行中にリアルタイムで生成しているそうだ。

 現実の雲には様々な形をしているが,GT7では,とくに「積雲」(Cumulus)に限定して生成したという。雲のモデリングは,いわゆるプロシージャル生成的なアプローチを採用しており,「タネ」ともいえる3種類のテクスチャをもとに生成している。

積雲を生成するための3種類のタネ・テクスチャ。実際には,さらにもう2つのタネがある
画像集 No.005のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 まず,2Dテクスチャの「Cumulus Map」は,いうなれば「水蒸気の密度」を表したもので,積雲の初期形状のようなものだ。Cumulus Mapは,わずか256×256テクセルの2Dテクスチャだが,240×240kmの地上をカバーする積雲分布図に相当する。
 GT7には天候システムがあり,晴れやくもり,雨といった天気の変化もある。Cumulus Mapは,天気ごとに初期状態が違うようだ。また,GT7の天気システムには風の概念があるので,Cumulus Mapは,風によって変移(移流)しながら形を変えていく。

Cumulus Map(積雲マップ)
画像集 No.006のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 次の低周波ノイズテクスチャは,128×128テクセル×128レイヤーの3Dテクスチャで,1辺あたり5kmスケールの正方形である。ノイズ自体は「Perlin-Inverted Worley noise」(逆Perlin-Worleyノイズ)をもとに,雲らしい雲ができるように手動でチューニングしているとのこと。GT7で大きな雲の周りにできる小さなちぎれ雲は,低周波ノイズのチューニングによるものらしい。

低周波ノイズテクスチャ
画像集 No.007のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 一方の高周波ノイズテクスチャは,32×32テクセル×32レイヤーの3Dテクスチャで,1辺あたりは300mの縮尺となっている。ノイズ自体はWorleyノイズをベースとしているそうで,生成した積雲の輪郭付近に見えるごちゃごちゃした高周波なディテール生成に,大きく貢献するテクスチャだ。

高周波ノイズテクスチャ
画像集 No.008のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 そのほかにも中周波ノイズテクスチャを用いているそうだが,これは,低周波ノイズを4分の1に縮小して再利用しているそうだ。

中周波ノイズテクスチャ
画像集 No.009のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 最後のCoverage Textureは,2Dテクスチャだが,関数的な役割を果たすテクスチャである。解像度は256×128テクセルで,各テクセルには,事前に計算した値が仕込まれているという。
 Cumulus Mapは,水蒸気密度に相当する2Dテクスチャだが,Cumulus Mapから取りだした値をCoverage Textureの横軸座標値としたうえで,生成する積雲の高度値(Altitude)を,Coverage Textureの縦軸座標値として与えて,内容値を作り出す。この値は,「積雲の各高度における水蒸気密度」に相当するので,256×256テクセルの2DテクスチャであるCumulus Mapに高度軸が加わる。これにより,各テクセル値に水蒸気密度の情報が加わるので,3次元的な水蒸気密度を持った立体の積雲(群)を構成するボリュメトリックデータに変身するわけだ。
 解像度についてはとくに言及はなかったが,この時点で積雲群(の分布)は,256×256×128ボクセルのボリュメトリックデータになっていると思われる。

Coverage Texture
画像集 No.010のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 そのうえで,積雲の各高度に対して,ディテールを付与する意味で,3Dテクスチャである低周波/中周波/高周波の各ノイズテクスチャをかけ合わせる。この時点での積雲は,まだ「立体的な水蒸気の密度分布データ」にすぎず,まだ描画はしていない。
 仮定として,Cumulus Map×Coverage Textureだけで作った積雲と,低周波/中周波/高周波の各ノイズテクスチャまでかけ合わせた積雲を描画した場合の画像を次に示そう。リアリティが全然違うことが分かるだろう。

Cumulus Map×Coverage Textureのみで生成した雲を描いた場合
画像集 No.011のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

5つのタネを全部使って生成した積雲を描くとこうなる
画像集 No.012のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密


GT7における雲のライティング手法


 ここまでで,雲の形状は決定した。続いてはライティングだ。
 鈴木氏によれば,「既存の手法と同じく,レイマーチングを用いている」とのことであった。
 ここでいうレイマーチングとは,積雲の水蒸気密度分布データに向けてレイを投げて,積雲を突き抜けるまでにどのくらいの水蒸気と衝突したかを積分して雲の濃淡を決定したり,レイと水蒸気の衝突点から太陽(=光源)に向かってレイを投げて,雲にどれくらいの陽光が届いているかなどを算出したりすることで,雲のライティングを行うことに相当する。ちなみに,一般的にはレイトレーシング用ハードウェアは使わずに,Compute Shaderを駆使して処理することが多い。

ライティングにはレイマーチング手法を用いる
画像集 No.013のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 GT7のみならず,一般的なゲームでは,空や雲は無限遠に存在すると仮定しているので,レイマーチングによる雲のライティング結果は,ドーム型の半球とみなしたバッファに出力する。
 ただ鈴木氏によると,レイマーチングの処理負荷が高いことから,複数フレーム時間にまたがって処理を進める実装を採用したとのこと。雲のライティングにおける途中演算経過を記録するバッファとして「Cloud G-buffer」の概念を導入したそうだ。

Cloud G-bufferは,概念としては半球状の形状扱いだが,実体としては正方形のテクスチャになっている
画像集 No.014のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 GT7のCloud G-bufferは,「無限遠にある半球状の空に浮かぶ雲」という想定である。ただ,実装の都合上,Cloud G-bufferを複数の正方形テクスチャに割り当てたうえで,ライティングの途中結果を要素ごとに分解して収納する実装としたそうだ。

正方形と半球(ドーム)形状への対応コード
画像集 No.015のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 なお,Cloud G-bufferの解像度は,PlayStation 4版が768×768テクセル,PlayStation 5版では1024×1024テクセルとなっている。

Cloud G-bufferは,4要素16bit浮動小数点フォーマットとなっている。また,Compute Shaderで効率よく並列演算を行うため,Cloud G-bufferは8×8タイルで分割されており,各タイルをそのままデータスレッドとして,GPUに処理を発注するそうだ
画像集 No.016のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 GT7の場合,空模様はメインのレース画面だけでなく,バックミラーや静的な映り込み用環境マップ,環境光ライティングなど,さまざまな用途(≒多様な視点やアングル)で活用する。要素ごとに分解したCloud G-bufferのほうが,用途に応じた雲情景を個別に生成しやすいという事情もあるようだ。

GT7で雲の描画結果を利用している部分
画像集 No.017のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 Cloud G-bufferは,4種類の要素からなる。

Cloud G-bufferを構成する4要素
画像集 No.018のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 「Opacity to the background(sky)」は,空(天球)に対する透過率を表したもので,具体的には雲の後ろに空がどのくらい透けて見えるかのパラメータになる。レイマーチングでこれを計算したうえで,Cloud G-bufferに出力するわけだ。
 次の「Distance to clouds」は,原点となる世界の中心座標から最も近い雲までの距離である。
 「Lighting by the Sun(In-Scatter)」は,太陽によるライティング結果に相当するものだ。
 4つめの「Ambient Lighting」は,雲のさらに奥にある天球(空)全体で雲を照らす「環境光」に相当するものになる。鈴木氏によると,かなり作為的なものになっているそうで,「もう少しチューニングしていくべきだと考えている」と述べていた。

 1回のレイマーチングによって得られたライティング結果は,光が水蒸気に衝突して1回だけ散乱したライティング演算を行ったに過ぎない。つまり,リアルな雲の陰影を求めたいのであれば,レイマーチングによるライティング計算を何度も行うべきだ。とはいっても,1回のレイマーチングでも重い処理系なので,これを1度にたくさん行うなどできるわけがない。
 そこで,4種類のCloud G-bufferは,ゲームのフレームレートとは非同期に,ゆったりとしたペースで複数フレーム分の時間を消費して更新する実装としている。いうなれば,遅延をともなうライティング処理系である。

複数フレームにまたがって雲のライティング計算を行うことで,レイマーチング手法の負荷の分散を狙う
画像集 No.019のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

左が散乱回数が1回分の,右は散乱回数が数回の雲を描画した様子
画像集 No.020のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 ちなみに,各ピクセルの単一サンプルを計算するために使用するフレーム数は,PS4で64フレーム,PS5では32フレームとなっている。また,1ピクセルあたりの平均サンプル数は,PS4が5サンプル,PS5では10サンプルとなっているそうだ。

PS5版だけでなく,PS4版でも複数フレームでのレイマーチングによる雲のライティング演算を行っている
画像集 No.021のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

PS5版とPS4版のどちらにも,リアルタイム雲生成処理は組み込まれている。雲生成ありとなしにおける演算負荷の違いは,1msもない。分散化の恩恵は大きいようだ
画像集 No.022のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 GT7の雲生成システムでは,雲がほかの雲に落とす影も表現している。
 鈴木氏によると,先述したボリュメトリックデータ化した積雲群のコピーとも言える,同等の構造を持った別のボリュメトリックデータにある各ボクセルから,太陽の位置までのレイマーチングを行って求めた「太陽光の透過率」パラメータから生成しているそうだ。

雲が雲に影を落とす表現のために,Cloud G-bufferに対するレイマーチング処理のなかで,太陽光の透過率パラメータを求める
画像集 No.023のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

左が雲対雲の影生成なし,右がありの描画結果。太陽が雲に対して低い位置にある夕暮れ時には,雲が雲に落とすの影がリアリティの表現に大きく貢献するらしい
画像集 No.024のサムネイル画像 / [GDC 2023]「グランツーリスモ7」でリアルな雲を表現したリアルタイム雲生成の秘密

 最終的には,半球形状の2D画像となるGT7の雲描画は,かなり簡略化しているとはいえ,パイプライン的には水蒸気の密度情報からボリュメトリックレンダリング風の処理系で生成しているので,ここまでリアルに見えるのだ。
 GT7でリプレイを鑑賞をするときには,ぜひとも雲の表現にも注目してほしい。雲ひとつひとつに,こんな技術を活用しているのかと,感心したくなるはずだ。

グランツーリスモ7 公式Webページ

ポリフォニーデジタル公式Webサイト


4Gamerの「GDC 2023」記事一覧

  • 関連タイトル:

    グランツーリスモ7

  • 関連タイトル:

    グランツーリスモ7

  • この記事のURL:
AD(最終更新日:2024/07/08)
【PS5】グランツーリスモ7【早期購入同梱物】10,000,000Cr(ゲーム内クレジット)・カーパック(3車種)(封入)※プロダクトコード有効期限:2022/8/4
ビデオゲーム
発売日:2022/03/04
価格:¥5,710円(Amazon) / 5730円(Yahoo)
amazonで買う
Yahoo!で買う
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:07月12日〜07月13日