Unity を検索

HDRP と Unity 2021.2 で本物のボリューメトリッククラウドを体験しよう

2021年11月5日 カテゴリ: テクノロジー | 10 分 で読めます
Image of few clouds with sunlight peering through above a mountainous terrain
Image of few clouds with sunlight peering through above a mountainous terrain
取り上げているトピック
シェア

これまで何十年もの間、空や雲のレンダリングに使われる手法は、平面に描かれたスカイボックスや HDRI が主流でした。HDRP に新しく追加されたボリューメトリッククラウドを使えば、ダイナミックな雲であなたの世界を彩ることができます。このシステムの最初のイテレーションでは、パフォーマンスと使いやすさに重点を置き、GPU コストを抑えつつ、数回のクリックで美しいビジュアルを作成できるようにしました。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

雲のレンダリングの歴史を振り返る

前世代のコンソール機までは、ボリューメトリッククラウドは、ビデオゲームでは非常に珍しいものでした。ボリュームを持っているように見える雲、つまりゲーム世界の中の物理的な空間を占める雲を作り出す試みは、フライトシミュレーターや両手の指で数えられる程度のオープンワールドゲームでのみ行われていました。

このような雲の表現が使われなかった主な理由は、雲を介した光の散乱の計算が、レイトレーシング(レイマーチング)に依存している場合には高価な操作となり、雲のレンダリングにコストがかかるためです。2 つ目の理由は、大半の 3D ゲームにおいて、ゲーム内の主なイベントは地表や海面などで起きるので、カメラが雲の上を飛ぶような大規模な動的スカイシステムを必要としないからです。

その結果、多くの 3D アプリケーションにおいて、雲の表現についてはキューブマップやインポスター、シンプルな透明マテリアルなどの静的なテクスチャに頼っていました。通常、これらはカメラから無限に離れた場所でレンダリングされるため、雲の下に広がる世界と完全につながっているようには感じられませんが、非常に低コストで静的なシナリオに十分な品質を提供することができます。

image of cloudy overcast above snowy mountain range

リアルタイム 3D レンダリングの進歩とハードウェア性能の向上により、ボリューメトリッククラウドを使ってダイナミックな空を描く時代が到来しました。これにより、Unity の HD レンダーパイプライン(HDRP)を利用して、磨きのかかった新たなビジュアル体験や幅広いゲームプレイシナリオを実現することができるようになりました。 

Unity のボリューメトリッククラウドは、ボリュームフレームワークによりゲーム世界全体で計算された風の影響を受けつつ、風景にリアルな影を落とすようになっています。ボリューメトリックフォグ物理ベースで描かれた空との相性も良く、印象的で空気感のあるサンシャフトや息を呑むような夕焼けを作り出すことができます。

最終的には、スカイリフレクションとアンビエントプローブ、そして局所的なリフレクションプローブと平面反射によって、これらの雲をレンダリングすることができます。このプロセスにより、他のほとんどのHDRPシステムとシームレスに相互作用する統一されたクラウドシステムが、PlayStation 4(非Pro)で2ms、最近のハイエンドGPUで0.5ms以下という非常に緩やかなコストで実現されています。

設定は簡単

ボリューメトリッククラウドの作成は、クリックを数回行うだけで完了します。まず、アクティブな HDRP アセットと HDRP グローバル設定で Volumetric Clouds が有効になっていることを確認してください。

Graphics settings in HDRP

これで、Volume Framework を使ってボリューメトリッククラウドを制御するだけで事足りる環境が整いました。他の HDRP エフェクトと同様に、既存の(グローバルな)ボリュームを選択するか、新規にボリュームを作成し、そのプロファイルに Volumetric Clouds コンポーネントを割り当てるだけです。雲の種類、風、ライティング、シャドウ、そして雲の描画の全体的な品質とコストを制御するために、多数のパラメーターが用意されています。

image of overcast clouds above snowy mountainous terrain

Simple モードに組み込まれた、SparseCloudyOvercast そして Stormy の 4 つのプリセットを使って、あっという間にさまざまな種類の雲景を作成することができます。プリセットにある 4 種類の天候は、高度 10,000 m(33,000 フィート)までの範囲で、雲の下、雲の内側、雲のわずか上のそれぞれの部分について、そのディテールを最大限に表現できるように調整されています。

設定に関する重要な決定事項の 1 つは、雲の Local モードに関連するものです。これは、雲の中や上空の中に入って行けるかどうかだけでなく、間接的にパフォーマンスのレベルにも影響するからです。

  • Local モードを無効にしている時は、HDRI Sky と同様に、雲がカメラから無限に離れているようにレンダリングされます。これにより、カメラのファークリッププレーンを適度な距離に置いておくことができます。もちろん、このモードでは雲の中に入ることはできません。
  • Local モードを有効にしている時は、カメラは雲の下、雲の中、雲の上空を移動することができます。しかし、地平線までの視野距離を十分に確保するためには、フォグの濃さにもよりますが、カメラのファークリッププレーンを 10 万m 以上離す必要があります。

このため、カメラを雲の中や上空に飛ばす必要のないプロジェクトでは、Local モードを無効にしておいてください。ライティングとシャドウの品質を同等に保ちながら、カメラのファークリッププレーンまでの距離を短くすることができます。 

また、雲の中や上空を飛行する必要がある場合は、もちろん Local モードを有効にするべきでしょう。物理ベースで描画された空については、地球の曲率をシミュレートした Volumetric Cloud システムにより、雲のドームが地球を包み込み、地平線のかなたで陸地や海とのつながりを実感できるようになっています。雲のドームをさらに湾曲させれば、雲と地球との交点を強制的に近づけることができるので、カメラのファークリッププレーンまでの距離を大幅に短くすることができます。

特に風については、現実世界で普通に見られる浮力を再現するために、細心の注意を払っています。風を制御するパラメーターは 4 つあります。たとえば、Erosion Wind によって、静的な雲を作成しつつ、雲に動きを与えることができますし、Shape Wind によって、雲景全体を自在に動かすこともできます。この 4 つを組み合わせると、魅惑的な景色を作り出すことができます。

Simple モードで使用できる 4 つのプリセットに加えて、Custom プリセットを使用することができます。このプリセットでは、いくつかの曲線とスライダーを使って、ほとんどの雲のプロパティを制御できます。このモードは、何層もの雲を重ねた多種多様な雲景を数秒で作り出すことができる、非常に強力なものです。可能性は無限大です。

サンシャフトを作成するには、Volumetric Fog プロパティを切り替え、Maximum HeightVolumetric Fog Distance を数千メートルに設定するだけです。こうすることで、ディレクショナルライトが大気に影響を与え、雲の下に美しい太陽の光の帯を作り出すことができるのです。

image of cloudy overcast on mountainous terrain with a lake on the bottom left

最後の Manual モードは上級ユーザー向けで、ルックアップテーブル(LUT)で定義された雲の各バーティカルスライスの位置に対して強力な制御をかけられるように、雲を覆うテクスチャと LUT を作成することができます。各テクスチャが雲のレンダリングに与える影響については、ドキュメンテーションを参照してください。

レンダリング技術

雲のボリュームは 2D 被覆マップによって駆動され、密度、浸食、アンビエントオクルージョンなどのプロパティを指定する LUT によって設定された異なる高度プロファイルを持っています。次に、2 つの 3D ノイズテクスチャを用いて雲のボリュームに浸食された部分を入れ、はっきり雲と分かる形状を生成します。

  • 形状ノイズ:大きな雲の形を作り出す低周波ノイズ。
  • 浸食ノイズ:雲の表面の微細なディテールを出すための高周波ノイズ。

HDRP の Volumetric Cloud システムでは、カメラから物体や光源に向かって段階的に光線を投射するレイマーチングという手法を用いてレンダリングを行っています。ここでは、雲の表面をサンプリングするために、雲のボリュームに向かって一次光線を照射します。その後、二次光線が太陽に向かって照射され、雲の表面のピクセルにシェーディングを施します。

画質の劣化を最小限に抑えつつ、さらにコストを削減するために、このプロセスは 1/4 の解像度で、時間的な再投影と蓄積を伴って行われます。これは、雲のシステムが前のフレームのサンプルを使って最終的な結果を構築することを意味します。このため、カメラの動きが高速で、履歴のない雲の部分をレンダリングしなければならない場合には、ゴーストや再構成のためのアーティファクトが発生することがあります。しかし、私たちは、非常に速いカメラの動きや風速にも対応できる、非常に効果的なアンチゴーストソリューションを提供しています。下のアニメーションでは、雲が音速の 3 倍の速さで動いているのに、ゴーストが発生していません。

また、木の葉のような薄い形状のものは、隣接する雲のピクセルを解決することが難しいため、目に付くアーティファクトが発生しないように特に注意しました。

また、日の出や日没の表現がそれらしく見えるようにするためにも時間をかけました。この時間帯の表現は、風景と空の露出差が大きいこと、地球の曲率とそれによるシャドウ、太陽が低い位置にある状況で起きる光の散乱の複雑さ、光線の移動距離の大きさなどから、特に困難を伴います。

Image of a lake surrounded by mountains with a sunset and clouds in the horizon

現在の限界と今後の改善点

他のシステムと同様に、ボリューメトリッククラウドは一定の制限がある環境において最高のパフォーマンスを発揮します。現時点では、カメラが雲の下、中、わずかに上空にある状況に高度に最適化されています。このため、12km(40,000 フィート)以上の宇宙空間や超高空では、下の画像のように浸食されたタイリングが見えてしまうことがあり、現在のシステムにはあまり適していません。

view of fluffy clouds hover over the earth's atmosphere from space with sun in the background

また、現在サポートしているのは 1 つの雲のボリュームのみです。これは、先に述べたボリュームに存在するすべての雲の形状が、同じノイズ、風、ライティングの特性を共有することを意味します。将来的には、複数の雲のボリュームをサポートすることで、作成およびアニメーション化したい雲のレイヤーをそれぞれ、より詳細に制御できるようにしたいと考えています。また、宇宙空間を描く場合は、地球の中心の位置を統一的な方法で制御する方法を提案します。

最終的には、パンクチュアルライトや、雲に影を落とす物体のサポートも追加される予定です。この機能は、特にスペースシミュレーターやフライトシミュレーターで、船やストロボの光が周囲の雲に影響を与える場合に有効に使えます。一方で、Local Volumetric Fog は、特定の静的なシナリオで使用することができます。

画質面では、2 段階より多いノイズをサポートすることを検討し、最上位プラットフォーム、インタラクティブなフレームレート、およびオフラインアプリケーションでの品質を向上させていきます。また、雲のプリセット間の移行が容易になり、一日のサイクルの中のさまざまな時間帯の表現を効率的に作り出せるようになりました。

まとめ

Unity 2021.2 を使った HDRP プロジェクトで、この新しい雲のシステムを使っていただくのが待ち遠しいです。この数か月間、ボリューメトリッククラウドの見た目の美しさだけでなく、非常に低い GPU コストでパフォーマンスを発揮できるようにするため、懸命に作業を進めてきました。ハイエンド GPU でランダムなノイズジェネレーターを使い、非常に高品質なレイマーチングによって描画された雲を扱うのもそれはそれで難しいことですが、メインストリームのハードウェアで高フレームレートのアプリケーション用にリアルな雲の形状を作成することは、それよりもはるかに複雑な仕事となります。

Image of scattering clouds over a flat snowy terrain with hills

このボリューメトリッククラウドが、プロジェクトの画質や空のダイナミズムを向上させるだけでなく、天候の変化を利用した新種のゲームプレイ体験の扉を開いてくれることを期待しています。インタラクティブなアプリケーションにおけるライティングや天候は静的な要素として捉えられることが多いのですが、この考え方だと、同じ環境を再利用しつつ、ユーザーに様々なシナリオを見せる機会を逃してしまうことになります。

ボリューメトリッククラウドや、レンズフレアやライトアンカーなどの Unity 2021.2 のレンダリング技術については、この夏の SIGGRAPH セッションをご覧いただくとよいでしょう。このセッションの後に、雲のシステムには多くの改良が加えられていることに注意は必要ですが、それでも機能の概要を掴むには十分でしょう。

Image of blue sky with clouds over a snowy mountain and terrain

また、HDRP フォーラムでのフィードバックの投稿や、バグの報告をどんどん行っていただければ幸いです。今後のボリューメトリッククラウドシステムのアップデートにご期待ください。

著者について

Pierre Yves Donzallaz (テクニカルアートマネージャー)は、リアルタイムレンダリングの分野で AAA クラスの制作に 10 年以上携わってきた、経験豊富なテクニカルアーティストです。ライティング、ステージの美化、ツール設計、UX の改善を得意としています。フリブール大学でコンピューターサイエンスの理学士号を取得しています。

彼は、『 Crysis 』シリーズ、『 Ryse: Son of Rome』、『Grand Theft Auto V』、『Red Dead Redemption 2』など、受賞歴のあるゲームや大規模な AAA 作品に携わってきました。 

現在、彼は同僚のテクニカルアーティストのマネージャーを務めています。彼のチームのミッションは、アーティストの作業効率を向上させ、世界中のユーザーを教育し、エンジニアやデザイナーと共に新機能を開発することです。

 

Anis Benyoub(シニアグラフィックスプログラマー)は、現在、ゲームやリアルタイムアプリケーションのためのレンダリングパイプラインの拡張に取り組んでいます。Anis は、モンテカルロ積分、物理ベースのレンダリング、リアルタイムパフォーマンスに情熱を注いでいます(コミュニティに自身の知識を共有するのも大好きです)。 

Unity にジョインする以前には、Pretty Simple Games でグラフィックエンジニア、Autodesk3DS Max の 3D R&D エンジニアとして働いており、Stingray ゲームエンジンのコアソフトウェアエンジニアとしての経験もあります。モントリオール理工科大学でコンピューターグラフィックスを主に修め、コンピューターサイエンス専攻の理学修士号を取得、また フランス国立応用科学院リヨン校でコンピューターサイエンス専攻の工学修士号を取得しています。

2021年11月5日 カテゴリ: テクノロジー | 10 分 で読めます
取り上げているトピック
関連する投稿