Volumetric Cloud コンポーネントは、マテリアル駆動アプローチを採用した物理ベースのクラウド レンダリング システムであり、プロジェクトに必要なあらゆる種類の雲をアーティストやデザイナーが自由に作成できます。クラウド システムは Sky Atmosphere や Sky Light で補完される動的な時間帯設定を、リアルタイム キャプチャ モードを使用して処理します。このシステムを利用すると、アーティストがスケーラブルな雲を定義でき、地上ビュー、飛行、地上から宇宙空間までの遷移をともなうプロジェクトにも適用できます。

雲のレンダリング方式
これまで、雲をリアルタイムでレンダリングするゲームやシネマティックスでは、主に天空メッシュや同様のアプローチに、スタティック マテリアルを適用することで実現してきました。現在はボリュメトリック クラウド システムによって、レイ マーチングした 3 次元ボリューム テクスチャを使用して雲のレイヤーをリアルタイムで表現します。マテリアル駆動のアプローチはアーティストとデザイナーに最も柔軟な方法を提供し、あらゆる種類の空を横切る雲を作成して、1 日のさまざまな時間帯を処理できます。
以下のセクションでは、雲のリアルタイム レンダリングに寄与するクラウド システムの要素について詳しく説明し、分類しています。
クラウド ボリュームのレイ マーチング
雲を構成する関与媒質には複雑なライティング シミュレーションが必須ですが、一般向けのハードウェアではリアルタイム シミュレーションが不可能であったり、負荷が高すぎたりします。ボリュメトリック クラウド システムは、レイマーチングと近似を使用して雲のレンダリングをシミュレートし、多くの対応プラットフォームとデバイスでスケーラブルなリアルタイム パフォーマンスを実現します。これによりリアルタイムの時間帯シミュレーションを実現し、複数のライティングに対する光散乱効果、雲から雲へのシャドウイング、雲の最下層への地面からの光の効果などに対応します。
多重光散乱
ボリュームを通過する光線には、目やカメラのセンサーに到達する前に、ボリューム内のパーティクルで散乱する性質があります。光が持つこの効果は多重散乱と呼ばれ、これが雲の特徴的な外観を定義します。雲の内部にある雲を構成する液滴は、通常 1 の値に近い反射率を持ちます。つまり、光はボリュームにほとんど吸収されません。吸収されない光はボリュームを通過し、この過程で非常に複雑な散乱効果が生じます。関与媒質の多重散乱効果は、クラウド ボリュームを通過する光に影響を及ぼし、それによって非常に厚い雲でも明るく見えます。
リアルタイムレンダリングの多重散乱における複雑さを解決するために、ボリューム マテリアルの光透過率に対して複数のオクターブ (またはステップ) をトレースして、リアルな散乱の近似を使用します。Volumetric Advanced Material Output 式を使用すると、使用するオクターブの数と、多重散乱効果、オクルージョン、離心率の発生量を設定できます。
オクターブ不使用 (単一散乱)、1 オクターブ、多重散乱近似の 2 オクターブについて、それらの違いを以下のサンプルで示します。オクターブ数を上げるとクラウド マテリアルに散乱近似をさらに適用しますが、この処理はシェーダーの計算負荷をさらに上げます。
ゲーム プロジェクトの場合は、パフォーマンスを考慮して光多重散乱を 1 オクターブのみ使用することを推奨します。ただし、クラウド マテリアルの Volumetric Advanced Material 式で高い寄与と低いオクルージョンの値を使用すると、パフォーマンスに影響を与えずに同様の効果を実現できます。以下の「ボリュメトリック マテリアル」セクションを参照してください。
地上ビュー:



スライダをドラッグすると、使用される多重散乱近似のオクターブ数が 0 ~ 2 の範囲で変化します。
高高度ビュー:



スライダをドラッグすると、使用される多重散乱近似のオクターブ数が 0 ~ 2 の範囲で変化します。
クラウド オクルージョンとシャドウイング
雲の重要な特徴は、光がどのようにオクルードされるか、およびシャドウがサーフェスにどのようにキャストされるかによって決まります。雲のオクルージョンとシャドウイングは、大気のライトと雲の表現に使用するボリューム マテリアルが主に処理します。こうしたコンポーネントを使用することで、太陽光シャフトや雲の自己シャドウイングなど、雲の外観を定義するさまざまな特徴を制御できます。
ボリューム レイ マーチングとシャドウ マップ
雲のシャドウイングには 2 つのモードがあり、使用するクラウド マテリアルによって切り替えることができます。デフォルトでは [Ray Marched (レイマーチング)] と [Beer Shadow Maps] (BSM) があります。


- ボリューム シャドウのレイ マーチング では、二次光線マーチングを使用して色が付いたシャープなシャドウが実現されますが、使用できるサンプル数が限られるため、シャドウをトレースできる距離が制限されます。レイ マーチによるシャドウは計算負荷が高いですが、地表から空や宇宙に移動する表現に適しています。
- Beer Shadow Maps では、カスケード シャドウ マップを使用した雲の遠方シャドウおよび地面へのシャドウのキャストがサポートされています。ただし、レンダリングは高速ですが精度は低く、ボリュメトリック セルフ シャドウの色に対応しません。通常、Beer Shadow Maps は地表から見える雲に適しています。
Xbox One や PlayStation 4 などのコンソール プラットフォームや、同様の仕様を採用するその他のシステムの場合は、雲のシャドウイングに Beer Shadow Maps を推奨します。
マテリアル グラフに Volumetric Advanced Material Output 式を追加し、これらのモードをクラウド ボリューム マテリアルで切り替えます。このノードを選択した状態で [Details (詳細)] パネルの Ray March Volume Shadow チェックボックスから 2 種類のシャドウイングを切り替えます。

ディレクショナル ライトの相互作用とシャドウイング
太陽や月などの大気ライトによって、雲や大気のシャドウイングを制御できます。この例をいくつか挙げると、シャドウの強度制御、現在のカメラ位置から雲のシャドウを生じる位置までの距離 (キロメートル単位)、雲が自分にシャドウをキャストするかどうか、大気にシャドウをキャストするかどうか、などです。

大気ライトで [Cast Cloud Shadows (雲のシャドウをキャスト)] を有効にすると、クラウド ボリュームがシーン要素にシャドウをキャストし、大気中に太陽光シャフト (ゴッド レイとも呼ばれる) をキャストできるようになります。これにより、太陽光シャフトが Sky Atmosphere コンポーネントによって定義されます。


Cloud Shadow Map Resolution Scale は太陽光シャフトの解像度とパフォーマンス負荷を操作します。Cloud Shadow Extent プロパティでカメラ周囲の Cloud Shadow Map 半径を縮小すると、シャドウ マップ解像度に焦点を合わせて、鮮明なより良い結果を得られます。
不透明型オブジェクトから大気や雲にシャドウをキャストする場合は、Cast Shadows on Atmosphere や Cast Shadows on Clouds を有効化します。大きなオブジェクトのシャドウイングを実現する際は、十分な大きさの Dynamic Shadow Distance、またはディレクショナル ライトの Far Shadow Distance を使用して、詳細パネルで Far Shadow フラグを有効にしたオブジェクトにシャドウをキャストします。

オクターブ近似を使用して関与媒質の光多重散乱をシミュレートすると、エネルギーが失われる可能性があります。大気ライトのプロパティ Cloud Scattering Luminance Scale は素晴らしい平衡をもたらし、これによりカラー ピッカーで光の寄与をスケーリングして、計算負荷を増やすことなく、自然でより興味深い光の散乱を実現できます。
さまざまな雲散乱輝度スケールを使用した例をいくつか示します。
画像をクリックすると、拡大表示されます。
スカイ ライトのリアルタイム キャプチャ
スカイ ライト コンポーネントはリアルタイム キャプチャ モードを提供し、タグ「Is Sky」を付与した非ライティング マテリアルを使用して、大気、雲、高さフォグ、不透明型メッシュの相互作用を処理します。このモードは、時間帯の自然かつ動的なシミュレーションを、パフォーマンスを犠牲にせずに作成できます。
リアルタイム キャプチャ モードとその他の最適化に関する詳細は、スカイ ライトのページをご覧ください。
スカイ ライトによる雲のアンビエント オクルージョン
ソフト アンビエント シャドウイングは、自然な雲の外観を定義する大切な要素です。Sky Light コンポーネントは Cloud Ambient Occlusion プロパティを使用して、スカイ ライトや大気ライトの寄与に由来する光を、雲が遮る量を制御します。これらのプロパティは、スカイ ライトの詳細パネル内の Atmosphere and Cloud セクションにあります。
強度を高めてアンビエント オクルージョンを有効にした比較例を以下に示します。この例では、発生する光の多重散乱の量を徐々に減らすことで、スカイ ライトと大気ライトが寄与する量を制御しています。


スカイライト アンビエント オクルージョンの大気と雲への寄与は次のようになります。
- シャドウ トレーシングのコスト:
- サンプルごとのセカンダリ マーチングの使用時のコストは、Volumetric Cloud コンポーネントに設定されている Shadow View Sample Count Scale の値によって決まります。
- 雲でディレクショナル ライトの Beer Shadow Map (メッシュへのシャドウのキャストにも使用される) をサンプリングする場合は、レイ マーチング位置ごとにシャドウ マップの評価が 1 回行われます。Beer Shadow Map の生成は、Directional Light コンポーネントに設定されている Cloud Shadow Ray Sample Count Scale の値によって決まります。
ボリュメトリック クラウドの設定と使用
ボリュメトリック クラウド システムは、空と惑星の大気を構成するために利用できる大気コンポーネントの重要な要素です。以下のセクションでは、こうしたコンポーネントをクラウド システムと一緒に設定して使用する方法の概要を解説します。
初期レベル設定
以下のコンポーネントを含むレベルを新規作成するか、既存のものを利用します。
- 太陽や月を表現するために Atmosphere Sun Light を有効にした ディレクショナル ライト。
- 惑星の大気を表現する Sky Atmosphere コンポーネント。
- 時間帯を動的にシミュレートする場合は Real Time Capture をオプションで有効にした スカイ ライト。
- 空の雲を表現するためにボリューム マテリアルを割り当てた Volumetric Cloud コンポーネント。
環境ライト ミキサーを使用して、レベルに配置する大気コンポーネントの作成と編集を単純化します。これは 1 つのパネルにある各コンポーネントの関連設定を提供します。
詳細については 「環境ライト ミキサー」 を参照してください。
スカイ ライトの雲による反射品質
Sky Light コンポーネントはボリューム クラウドのシーン反射を提供します。Volumetric Cloud コンポーネントを使用すると、詳細パネルの Cloud Tracing セクションから、シーンに存在する反射サーフェスのレイ マーチングに使用するサンプル数を制御できます。雲の反射と、雲の影付き反射に使用するサンプル数をスケーリングできます。







スライダをドラッグして、雲の反射光線のサンプル数をトレースする際に使用するサンプル数を、0.25、0.5、0.75、1 (デフォルト)、2、4、8 と段階的に増やして結果を確認します。
Reflection Sample Count Scale と Shadow Reflection Sample Count Scale のプロパティはクランプされます。次のコマンドを使用してスケールとサンプル数を増やすことができます。
r.VolumetricCloud.ReflectionRaySampleMaxCount
r.VolumetricCloud.Shadow.ReflectionRaySampleMaxCount
r.VolumetricCloud.ViewRaySampleMaxCount
r.VolumetricCloud.SampleMinCount
r.VolumetricCloud.DistanceToSampleMaxCount
リアルタイム キャプチャ モードと反射品質プロパティの詳細については、「スカイ ライト」を参照してください。
レイ マーチング品質モード
クラウド システムはスケーラブルな品質モードを提供し、標準的なものから、地上から宇宙まで移動するテンポの速いゲームプレイまで、多くのゲームプレイ タイプに適しています。さらに、リアルタイム実行があまり問題にならないプロジェクトに対して、シネマティック品質もサポートします。
品質モードを定義するコマンドは r.VolumetricRenderTarget です。
- 受動モードは、不透明型サーフェスと雲の交差をサポートしますが、より低い解像度でトレースを完了します。
* r.VolumetricRenderTarget.Mode 0 は品質に関する推奨オプションです。これは地上から宇宙までの移動や、雲の中の飛行など、テンポの速いゲームプレイをサポートします。雲のトレースは高速ですが、解像度は低く見える場合があります。トレースは 1/4 の解像度、再構築は半分の解像度、画面上のアップサンプリングは完全な解像度で実現します。
- r.VolumetricRenderTarget.Mode 1 は、品質とパフォーマンスのバランスを取り、地上ビューで進行するさまざまな種類のゲームプレイに適しています。このモードは計算負荷が高いですが、より高品質に見えます。トレースは半分の解像度、再構築と画面上のアップサンプリングは完全な解像度で実現します。
- 受動性の低いモードですが、完全な解像度に見えます。
- r.VolumetricRenderTarget.Mode 2 はより高い品質に焦点を当て、同時にリアルタイム ゲームプレイに対応した地上ビューをサポートします。このモードのトレースは高速で高解像度に見えますが、不透明型メッシュと雲の交差をサポートしません。
- シネマティック モードを実現するには、r.VolumetricRenderTarget 0 から始め、次に「シネマティック品質の達成」のワークフロー (下記を参照) での推奨事項に従います。
r.SkyAtmosphere. と r.VolumetricClouds. の後にコンソール コマンドを使用して、デプロイ対象のプラットフォームの品質を向上または低下させることができます。また、ユーザー向けプロパティは、ボリューム マテリアル、Volumetric Cloud コンポーネント、Directional Light コンポーネントにあります。
シネマティック品質の達成
これは高度なワークフローであり、雲と空のリアルタイム レンダリングを行う際にエンジンが使用する最適化をバイパスするため、パフォーマンスに大きく影響する可能性があります。
Sky Atmosphere コンポーネントと Volumetric Clouds コンポーネントでシネマティック (またはピクセル単位の) 品質を達成するには、いくつかのコマンド、クラウド マテリアルの属性設定に加え、大気とクラウドのボリュームをトレースする際のサンプル数を増やすことで対処します。


以下の手順は、プロジェクトで最高品質の雲と大気を実現するための主要な出発点です。
- r.VolumetricRenderTarget を 0 に設定して、ここからシネマティック品質の結果を有効化します。
- r.VolumetricCloud.HighQualityAerialPerspective を 1 に設定して雲のシネマティック空気遠近法を有効化し、解像度が低い LUT の代わりに高品質のレイ トレーシングを使用します。
- Volumetric Cloud コンポーネントで次のように設定します。
- Cloud Tracing セクションにある View、Reflections、、Shadows のサンプル数スケールを大きくします。こうしたスケールごとにサンプル数を増やす際は、ツールヒントに記載されたコマンドを使用します。
- ディレクショナル ライトのグローバル透過率を使用するのではなく、Use per Sample Atmospheric Light Transmittance プロパティを有効にして、サンプルごとに大気透過率を適用します。
- Volumetric Advanced Material Output 式を使用してボリューム クラウド マテリアルで次のように設定します。
- 雲の最下層に地面のライティングを適用して、シーンに存在する雲により多くのシェイプと色を与えます。
- 詳細パネルから Ground Contribution を有効化します。Volumetric Cloud コンポーネントで Ground Albedo を使用して、日光と大気を基準にして雲を下から照らすために使用する地面の色を指定します。
- クラウド ボリュームを通過する光多重散乱のシミュレートに使用する近似数を設定します。
- 使用する Multi Scattering Approximation Octaves の数を最大で 2 の値まで増加することで、クラウド ボリュームを通過する際の光多重散乱エフェクトをより適切にシミュレートできます。
- オクターブをさらに適用すると、クラウド ボリュームを通過した光はより多く散乱します。そのため、Volumetric Advanced Output 式で Multi Scattering Contribution と Multi Scattering Occlusion の値を調整して補正します。
- 雲の最下層に地面のライティングを適用して、シーンに存在する雲により多くのシェイプと色を与えます。
- 大気ライトで次のシャドウイング プロパティを有効にします。
- Cast Cloud Shadow を設定して、シーン要素と大気中に雲からシャドウをキャストします。
-
Cast Shadows on Clouds を設定して、不透明型オブジェクトから雲のレイヤーにシャドウをキャストします。
雲の上に大きなオブジェクトを効果的にシャドウイングする場合は、ディレクショナル ライトに十分な大きさの Shadow Dynamic Distance を設定します。
- プロジェクトでのニーズに合わせて、Sky Atmosphere の品質改善について以下の範囲から選択します。
- 大気レンダリングについて全体の品質を向上させます。
- r.SkyAtmosphere.FastSkyLUT を 0 に設定します。この最適化を無効にするとレンダリングが遅くなりますが、高周波数のディテールを伴うビジュアル アーティファクトが減少します。これは地球のシャドウや散乱の極大部などで発生する可能性があります。
-
大気と大気中の太陽光シャフトについてトレース品質を向上させます。
r.SkyAtmosphere.FastSkyLUT
の有効化が必須です。- r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque を 0 に設定します。
- Sky Atmosphere コンポーネントで Trace Sample Count Scale の品質スライダを使用して、使用するサンプル数を調整します。範囲の最大値でも十分ではない場合は、コマンド
r.SkyAtmosphere.SampleCountMax
で上限を選択し、プロパティ フィールドに手動で値を入力します。 - コマンド r.SkyAtmosphereFastSkyLUT.Width と r.SkyAtmosphere.FastSkyLUT.Height を使用して LUT サイズ設定を大きくすることで、太陽光シャフトの品質を向上させます。
- r.SkyAtmosphere.AerialPerspectiveLUT.Width のサイズを増加することで、不透明型と透明型のサーフェスでフォグの品質を向上させます。
これは 3D ボリューム テクスチャであり、メモリの消費量が増大するため、この値を増加させる際はご注意ください。
- 大気レンダリングについて全体の品質を向上させます。
ボリュメトリック マテリアル
ボリューム マテリアル ドメインを使用するマテリアルは、ボリューム テクスチャを使用して雲の外観を操作します。ボリューム テクスチャは 3D テクスチャなので、グリッドに沿って一連の 2D テクスチャにスライスされます。マテリアルが含むこうした種類のテクスチャは、ボリュームを通過する光などに適しているため、煙や雲など、さまざまなボリュメトリック エフェクトに使用します。
以下のボリューム テクスチャは、グリッドに存在する一連の 2 次元画像 (左) を表し、これを積み重ねると 3 次元ボリューム表現 (右) になります。

テクスチャ エディタでボリューム テクスチャを開いて表示し、2 次元画像ビュー (左) または 3 次元ボリューム ビュー (右) を表示します。
Volumetric Cloud コンポーネントとマテリアルで制御できる属性に加え、ボリューム テクスチャは雲の最初の外観を提供する基礎であり、可能な項目を定義できます。ボリューム テクスチャの可能性はクラウド マテリアルによって広がり、さまざまな種類のクラウドとエフェクトを作成できます。
以下の例は、さまざまな種類の雲を示します。これらはインスタンス化によって調整できるパラメーターを備え、1 つのボリューム マテリアルを使用して作成できます。この例では Volumetrics プラグイン コンテンツ (下記を参照) で利用できる M_volumetricCloud_02_Profiles_Soft
を使用しています。

ボリューム マテリアルにはマテリアル式の入力ノードと出力ノードがあり、クラウド マテリアルの基礎となる編集可能な属性を提供します。これらの設定の一部は、シェーダーの負荷が増加または減少するといったパフォーマンスへの影響を及ぼします。
これらの式を使用する際は、式の値を マテリアル インスタンス ですばやく簡単に調整できるように、式の値をパラメータ化することをお勧めします。
Volumetrics プラグイン コンテンツ
このプラグインのコンテンツはデモ用であり、プロジェクトでの使用に対して完全に最適化されていない場合があります。さらに、今後のリリースで変更されたり削除されたりする可能性があります。従って、エディタで独自のコンテンツを作成する初歩としてお使いください。
Volumetrics プラグインには、Epic 社内のテクニカル アーティストが作成したサンプルと実験的コンテンツが入っており、そのいくつかは雲のレンダリングや、ボリューム レンダリングを使用する他の種類のツール (流体シミュレーションなど) 向けに特別に設計されていない可能性があります。
以下の手順に従って開始します。
-
このプラグインを有効にするには、メインメニューで [Window (ウィンドウ)] > [Plugin (プラグイン)] を選択します。Volumetrics プラグインを検索して有効化します。
画像をクリックすると、拡大表示されます。
-
コンテンツ ドロワー または コンテンツ ブラウザ で、[Settings (設定)] をクリックして、[Show Engine Content (エンジンのコンテンツを表示)] と [Show Plugin Content (プラグインのコンテンツを表示)] を有効にします。
画像をクリックすると、拡大表示されます。
-
コンテンツ ドロワーまたはコンテンツ ブラウザを使用して、プラグインのコンテンツが置かれている「Volumetrics」フォルダを見つけます。
クラウド マテリアルのサンプル
さまざまな種類のクラウド マテリアルを、このプラグインから選択できます。これらを使用してシーンにさまざまな種類の雲を作成できます。
これらのクラウド マテリアルは、「/Content/Sky/Materials
」フォルダに置かれていて、プレフィックス M_Volumetric_Cloud_* が付いています。例:Content/Sky/Materials/M_Volumetric_Cloud_02_Profiles_Soft。
これらを効果的に利用するには、クラウド マテリアルの マテリアル インスタンス を作成し、それを Volumetric Cloud コンポーネントの Material スロットに適用します。そのマテリアル インスタンスを開くと、パラメータを変更して雲をレンダリングし、望ましい外観、密度、スケールなどを実現できます。
このドキュメントに掲載するスクリーンショットでキャプチャした大部分の雲は、こうしたサンプル クラウド マテリアルから作成したもので、マテリアル インスタンスのパラメータを変更しています。
ブループリントで配置した雲
このプラグイン フォルダにあるサンプルを使用して、クラウド ブループリント アクタを個別にシーンに配置します。シーンに個別に配置したブループリントは、X 軸と Y 軸に沿ってスケール、回転、移動が可能です。Volumetric Cloud コンポーネントは、使用する割り当て済みのクラウド マテリアルとともに、シーンに存在する必要があります。ブループリント クラウド アクタによって、シーンにあるクラウドに対して追加のカスタマイズと配置が可能になります。
設定の例は、Composite_Cloud_Object レベルの「/Tools/CloudCompositing/Maps
」フォルダにあります。BP_CloudMask_Object と BP_CloudMask_Generator を見て、このシーンがどのように設定されているか、およびこのアクタで調整に使用できるプロパティをご確認ください。
ブループリントでペイントした雲
希薄または濃密な雲をシーンに追加するように設定されたサンプルを使用して、空に雲をペイントし始めます。この例では、マウス カーソルでブラシやその強度などを調節して雲をペイントできるシンプルなユーザー インターフェースを備える Play-in-Editor ゲーム モードを使用します。
設定の例は、Paint_Clouds レベルの「/Tools/CloudCompositing/Maps
」フォルダにあります。BP_PaintClouds アクタを選択して、雲のペイント方法を変更するプロパティをいくつか試すことができます。
雲のペイントを開始する際は、メイン ツールバーの [Play (プレイ)] を押して Play-in-Editor を開始します。以下を使用してシーンにある雲にペイントを開始します。
- マウスの左ボタン で、クラウド ボリュームをペイントする
- マウスのホイール で、ペイント ブラシのサイズをスケーリングする
- Shift キー + マウス ホイール で、ペイントするブラシ ストロークの強度を変更する
- Shift キー で、ペイント中にペイント済みの領域を消去する
- マウスの右ボタン + マウス ホイール で、BP_PaintCloud プロパティの [Paint Mode (ペイントモード)] ドロップダウンで [Velocity (速度)] が選択されている場合に、雲にペイントする速度をスケーリングする
パフォーマンスとスケーラビリティ
プロジェクトの開発時は、複数のプラットフォームにわたるパフォーマンスとスケーラビリティの管理が重要です。以下のセクションでは、雲の品質のスケーリング、プロジェクトに存在する雲のキャプチャとライティングに関連するその他の機能についてご確認ください。
対応プラットフォーム
Volumetric Cloud と Sky Atmosphere のコンポーネントは、次のプラットフォームでスケーラブルな大気システムの提供をサポートします。
機能 | モバイル | XB1 / PS4 | XBX / PS5 | ローエンド/ハイエンドの PC |
---|---|---|---|---|
Sky Atmosphere | はい* | はい | はい | はい |
Volumetric Cloud | いいえ | はい** | はい | はい |
* Is Sky が有効になっているマテリアルがある天空メッシュが必要。 ** これらのプラットフォームで許容できるパフォーマンスを実現するには、「ボリューム レイ マーチングとシャドウ マップセクションで説明したセカンダリ トレースではなく、シャドウ マップ アプローチを使用したクラウド セルフ シャドウイングを検討することをお勧めします。
クラウド トレース品質を制御する
クラウド システムは、ボリューム マテリアルを使用したいくつかのトレースを実行します。トレース結果の品質は使用したサンプル数に依存します。使用するサンプルが多いほど、より高い品質を得られます。逆もまた真であり、使用するサンプルが少ないほど品質が低下します。


プラットフォームの種類ごとにパフォーマンスと品質のバランスを調整することが重要です。Cloud Tracing プロパティによって、雲の反射、雲と雲の反射に対するシャドウイング サンプル、雲のシャドウイングを停止するカメラからの距離など、雲の主要属性についてトレース品質をスケーリングできます。

こうしたプロパティにはそれぞれ独自のコンソール コマンドがあり、デバイス プロファイル構成ファイル (*.ini) を使用してプラットフォームごとに個別に設定できます。これにより、さまざまなプラットフォーム間で目標のスケーラビリティを設定する際に、幅広いレベルで柔軟性を提供します。
ボリューム クラウド マテリアルの最適化
雲をレンダリングする最初の基本は、ボリューム マテリアルと、マテリアル グラフで使用する Volumetric Advanced Output と Volumetric Advanced Input の式です。クラウド マテリアルの多くの特徴をパラメータ化して、マテリアルをインスタンス化することでその属性の一部を制御できますが、いくつかはベース マテリアルからこのノードでのみ設定できます。
以下の提案を Volumetric Advanced Output 式に設定して、プロジェクトでクラウド マテリアルの最適化方法を決定する際に、互いに独立して使用できます。
- Gray Scale Material を使用して、評価時にマテリアルの入力パラメータの R (赤) チャンネルのみを考慮します。そのシーンでは雲のマテリアル応答がグレースケールになりますが、マテリアルのライティングは引き続き色付けされます。
- フレームの計算余力がある場合は Ground Contribution を有効にします。地面から雲の最下層への、シャドウ ライティングの寄与をサンプリングするトレースのために、計算負荷がいくらか増加します。
- シェーダーのパフォーマンスを節約するために使用する Multi Scattering Approximation Octave Counts の数を制限します。デフォルトでは単一の散乱 (0) を使用しますが、近似オクターブを最大で 2 つ使用して、クラウド ボリュームで光多重散乱エフェクトをシミュレートできます。
- Ray March Volume Shadow チェックボックスを使用して、クラウド ボリュームのセカンダリ レイ マーチングと、カスケード シャドウ マップの使用を切り替えます。カスケード シャドウ マップを有効化 (チェックボックスを選択解除) すると、パフォーマンスが向上し、シャドウイングの長さが無限になりますが、色の精度が低下してグレースケールになります。
- Conservative Density 属性は、計算負荷が高いマテリアル評価を早い段階でスキップして、レイ マーチングを加速するために使用されます。Float ベクター (Vector3) の X コンポーネントは、構成する媒質の保存性密度を表します。値が 0 より大きい場合はマテリアルを評価し、それ以外の場合は次のサンプルを直接評価します。詳細についてはボリュメトリック クラウドのドキュメントをご参照ください。
スカイ ライトのリアルタイム キャプチャ モードにかかる計算負荷
スカイ ライトの リアルタイム キャプチャ モード では、9 フレームのタイム スライスを有効にして、単一フレームのキャプチャを複数フレームに分散します。タイム スライスには最も計算負荷が高いフレームと同じくらい負荷がかかるため、この最適化によって時間帯シミュレーションを実現する際のパフォーマンスが向上し、計算負荷が大幅に削減されます。負荷を高めることなく、フレーム計算余力の他の領域で品質を向上させるチャンスになります。
たとえばキャプチャしたシーン要素とそのフレーム計算負荷を分析し、スペキュラ畳み込みに必要な時間がフレームあたり 0.8 ミリ秒 (ms) にもかかわらず、空と雲については 0.6 ms だけだと判明した場合、このフレーム計算余力には追加負荷をかけずに空と雲の品質をわずかに向上させる余地があります。
保存性密度の評価
Conservative Density はレイ マーチング処理を最適化する手段として導入されました。大気中にあるレイマーチする各サンプルのクラウド マテリアル グラフ全体を評価すると、即座に計算負荷が許容範囲を超えます。負荷効率を高めるために、ユーザーを指定した保存性密度は負荷が低く、評価に適しています。たとえばマテリアルの評価は、雲の密度を表すトップダウンの 2 次元テクスチャである可能性があり、そのため Volumetric Advanced Input 式で評価する場合、大気中に雲が存在するならば、保存性密度を 0 より大きくすることが唯一のルールです。
大気をレイ マーチングする際に、保存性密度入力が使用される場合は、次の 2 つの手順でクラウド マテリアル サンプルが取得されます。
- Volumetric Advanced Output ノードで、保存性密度入力 (Vector3) グラフが評価されます。
- X (Vector3 の成分) の保存性密度が 0 より大きい場合:
- Main Material ノード (評価対象: Albedo、Emissive Color、Extinction) に接続した、より計算負荷が高いマテリアル グラフを評価する決定を使用します。
- この値には Volumetric Advanced Input ノードを使用してアクセスでき、そうすることで、手順 1 で評価済みの保存性密度値の計算が回避されます。
- そうでない場合は、X の保存性密度が 0 以下であれば、計算負荷がより高いマテリアル評価がスキップされ、次のサンプルに進みます。
Unreal Engine ではマテリアル グラフでの動的分岐はサポートされていません。動的分岐で ConservativeDensity 入力を利用すると、発生する可能性のある計算負荷がより高いマテリアル評価をスキップできます。Unreal Engine がマテリアルで動的分岐をネイティブにサポートすれば、こうした入力は廃止され、テクニカル アーティストが動的にスキップする対象を決定できるようになります。
レイ トレーシングとボリュメトリック クラウド
クラウド システムでは、レイ トレーシング 機能はサポートされておらず、雲が考慮されるのはスカイ ライトにレンダリングされるときだけです。反射のためにボリュメトリック クラウドをトレースすると、パフォーマンスが大幅に低下します。
空のオブジェクトに反射が必要な場合は、Sky Light アクタをオブジェクトの近く (空) に配置すると便利です。