ボリュメトリック クラウド

Volumetric Clouds コンポーネントとボリューム マテリアルを使用したリアルタイム クラウド レンダリングの概要。

Choose your operating system:

Windows

macOS

Linux

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

VT_CloudExamples.png

雲のレンダリング方法

これまで、雲をリアルタイムにレンダリングするゲームやシネマティックスでは、主にスカイ ドーム メッシュや同様のアプローチに、スタティック マテリアルを適用することで実現してきました。現在は、ボリュメトリック クラウド システムによって、レイ マーチングした 3 次元ボリューム テクスチャを使用して雲のレイヤーをリアルタイムで表現します。マテリアル主導型アプローチが提供する最も柔軟な方法を利用して、アーティストとデザイナーはあらゆる種類の空を横切る雲を作成し、1 日のさまざまな時間帯を処理できます。

次のセクションでは、リアルタイム レンダリングの描画に利用するクラウド システムの要素について詳しく説明します。

クラウド ボリュームのレイ マーチング

雲を構成する関与媒質には複雑なライティング シミュレーションが必須ですが、一般向けのハードウェアではリアルタイム シミュレーションが不可能であるか、もしくは計算負荷が高すぎます。ボリュメトリック クラウド システムは、レイマーチングと近似を使用して雲のレンダリングをシミュレートし、多くの対応プラットフォームとデバイスにおいてスケーラブルなリアルタイム パフォーマンスを実現します。これによりリアルタイムの時間帯シミュレーションを実現し、複数のライティングに対する光散乱効果、雲から雲へのシャドウイング、雲の最下層への地面からの光の効果などに対応します。

多重光散乱

ボリュームを通過する光線には、目やカメラのセンサーに到達する前に、ボリューム内のパーティクルで散乱する性質があります。光が持つこの効果は多重散乱と呼ばれ、これが雲の特徴的な外観を定義します。雲の内部にある雲を構成する液滴には、通常 1 の値に近い反射率があります。つまり、光はボリュームにほとんど吸収されることはありません。吸収されない光はボリュームを通過し、この過程で非常に複雑な散乱効果が生じます。関与媒質の多重散乱効果は、雲のボリュームを通過する光に影響を与え、これによって非常に厚い雲でも明るく見えます。

リアルタイムレンダリングの多重散乱における複雑さを解決するために、ボリューム マテリアルの光透過率に対して複数のオクターブ (またはステップ) をトレースして、リアルな散乱の近似を使用します。 Volumetric Advanced Material Output 式を使用すると、使用するオクターブの数と、多重散乱効果、オクルージョン、離心率の発生量を設定できます。

オクターブ不使用 (単一散乱)、1 オクターブ、多重散乱近似の 2 オクターブについて、それらの違いを以下のサンプルで示します。オクターブ数を上げるとクラウド マテリアルに散乱近似をさらに適用しますが、この処理はシェーダーの計算負荷をさらに上げます。

ゲーム プロジェクトの場合は、パフォーマンスを考慮して光多重散乱は 1 オクターブのみ使用することを推奨します。ただし、クラウド マテリアルの Volumetric Advanced Material 式で高い効果と低いオクルージョン値を使用すると、パフォーマンスに影響を与えずに同様のエフェクトを実現できます。ボリュメトリック マテリアルに関する以下のセクションを参照してください。

地上ビュー:

スライダーをドラッグして、使用する Multiple Scattering Approximation Octaves 数を 0 から 2 の範囲で変更します。

高高度ビュー:

スライダーをドラッグして、使用する Multiple Scattering Approximation Octaves 数を 0 から 2 の範囲で変更します。

クラウド オクルージョンとシャドウイング

雲の重要な特徴は、光の吸収方法と、サーフェスにキャストするシャドウで決まります。雲のオクルージョンとシャドウイングは、大気のライトと雲の表現に使用するボリューム マテリアルが主に処理します。こうしたコンポーネントを使用することで、太陽光シャフトや雲の自己シャドウイングなど、雲の外観を定義するさまざまな特徴を制御できます。

ボリューム レイ マーチングとシャドウ マップ

雲のシャドウイングにはモードが 2 つ存在し、使用するクラウド マテリアルによって切り替えることができます。デフォルトは Ray Marched Beer Shadow Maps (BSM) です。

レイ マーチング

Beer Shadow Maps

  • ボリューム シャドウのレイ マーチング は、二次光線マーチングを使用して色が付いたシャープなシャドウを実現しますが、使用できるサンプル数が限られるためシャドウをトレースできる距離に制限があります。レイ マーチによるシャドウは計算負荷が高いですが、地表から空や宇宙に移動する表現に適しています。

  • Beer shadow maps はカスケード シャドウ マップを使用して、雲の遠方シャドウをサポートして、地面にシャドウをキャストします。ただし、レンダリングは高速ですが精度は低く、ボリュメトリック セルフ シャドウの色に対応しません。通常、Beer Shadow Maps は地表から見える雲に適しています。

Xbox One や PlayStation 4 などのコンソール プラットフォームや、同様の仕様を採用するその他のシステムの場合は、雲のシャドウイングに Beer Shadow Maps を推奨します。

マテリアル グラフに Volumetric Advanced Material Output 式を追加し、これらのモードをクラウド ボリューム マテリアルで切り替えます。このノードを選択した状態で [Details (詳細)] パネルの Ray March Volume Shadow チェックボックスから 2 種類のシャドウイングを切り替えます。

Material_ShadowsTypeSelection.png

ディレクショナル ライトの相互作用とシャドウイング

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

DirectionalLight_CloudProperties.png

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

Cloud Shadows: 無効

Cloud Shadows: 有効

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 フラグを有効にしたオブジェクトをシャドウイングします。

DirectionalLight_OpaqueShadowsOnClouds.png

オクターブ近似を使用して関与媒質の光多重散乱をシミュレートすると、エネルギーが失われる可能性があります。大気ライトのプロパティ Cloud Scattering Luminance Scale から生み出される絶妙な平衡を使って、カラー ピッカーでの光の効果をスケーリングして、計算負荷を上げずに自然でより興味深い光の散乱を実現することができます。

さまざまな雲散乱輝度スケールを使用した例です。

クリックしてフルサイズ表示。

スカイ ライトのリアルタイム キャプチャ

スカイ ライト コンポーネントには、Is Sky がタグ付けされた Unilt (ライティングなし) のマテリアルを使用して、大気、雲、高さフォグ、不透明型メッシュの相互作用を処理するリアルタイム キャプチャ モードがあります。このモードを使うと、時間帯の自然かつ動的なシミュレーションを、パフォーマンスを損なわずに作成することができます。

リアルタイム キャプチャ モードとその他の最適化に関する詳細は、スカイ ライトのページを参照してください。

スカイ ライトによる雲のアンビエント オクルージョン

ソフト アンビエント シャドウイングは、自然な雲の外観を定義する大切な要素です。 Sky Light コンポーネントは Cloud Ambient Occlusion プロパティを使用して、雲がスカイ ライトや大気ライトの効果による光を遮る量を制御します。これらのプロパティは、スカイ ライトの詳細パネル内の Atmosphere and Cloud セクションにあります。

こちらは強度を高めてアンビエント オクルージョンを有効にした雲の比較です。発生する光多重散乱の量を徐々に減少させ、スカイ ライトと大気ライトが寄与する量を制御します。

雲のアンビエントオクルージョン: 無効

雲のアンビエントオクルージョン: 有効

スカイライトアンビエント オクルージョンの大気と雲への効果は以下のとおりになります。

  • シャドウ トレース コスト

    • サンプルごとにセカンダリ マーチングを使用する場合、コストは、 Shadow View Sample Count Scale を使用して Volumetric Cloud コンポーネントに設定された値によって決まります。

    • 雲が Directional Light Beer Shadow Map (メッシュへの投影にも使用される) をサンプリングする場合、シャドウ マップの単一の評価が各レイマーチ位置で実行されます。Beer Shadow Map 生成は Cloud Shadow Ray Sample Count Scale を使用して Directional Light コンポーネントに設定された値によって決まります。

ボリュメトリック クラウドの設定と使用

ボリュメトリック クラウド システムは、空と惑星の大気を構成するために使用する大気コンポーネントの重要な要素です。次のセクションでは、こうしたコンポーネントをクラウド システムと一緒に設定して使用する方法について概要を解説します。

初期レベル設定

以下のコンポーネントを含むレベルを新規作成するか、既存のものを利用します。

  • 太陽や月を表現する Atmosphere Sun Light を有効化した ディレクショナル ライト

  • 惑星の大気を表現する Sky Atmosphere コンポーネント。

  • 時間帯を動的にシミュレーションする場合に、 Real Time Capture をオプションで有効化した スカイ ライト

  • 空の雲を表現するためにボリューム マテリアルを割り当てた Volumetric Cloud コンポーネント。

Environment Light Mixer (環境光ミキサー) を使用して、レベルに配置する大気コンポーネントの作成と編集を簡素化します。これは 1 つのパネルにある各コンポーネントの関連設定を提供します。

詳細については「 環境光ミキサー 」を参照してください。

スカイ ライトの雲による反射品質

スカイライト コンポーネントはボリューム クラウドのシーン反射を提供します。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. の後にコンソール コマンドを使用して、デプロイする対象のプラットフォームの品質を向上または低下させることができます。また、ユーザー向けプロパティは、ボリューム マテリアル、ボリューム クラウド コンポーネント、ディレクショナル ライト コンポーネントにあります。

シネマティック品質の達成

これは高度なワークフローであり、雲と空のリアルタイム レンダリングを行う際にエンジンが使用する最適化をバイパスするため、パフォーマンスに大きく影響する可能性があります。

Sky Atmosphere と Volumetric Clouds のコンポーネントでシネマティック (またはピクセル単位の) 品質を達成する場合は、いくつかのコマンド、クラウド マテリアルの属性設定に加え、大気とクラウドのボリュームをトレースする際のサンプル数を増やして処理します。

リアルタイム品質設定を適用

シネマティック品質設定を適用

以下の手順は、プロジェクトで最高品質の雲と大気を実現するための主要な出発点です。

  1. r.VolumetricRenderTarget 0 に設定して、ここからシネマティック品質の結果を有効化します。

  2. r.VolumetricCloud.HighQualityAerialPerspective 1 に設定して雲のシネマティック空気遠近法を有効化し、解像度が低い LUT の代わりに高品質のレイ トレーシングを使用します。

  3. Volumetric Cloud コンポーネントで以下の設定を行います。

    • [Cloud Tracing (雲トレーシング] セクションにある View Reflections Shadows のサンプル数スケールを拡大します。こうしたスケールごとにサンプル数を増やす際は、ツールヒントに記載されたコマンドを使用します。

    • Use per Sample Atmospheric Light Transmittance プロパティを有効化して、ディレクショナル ライトのグローバル透過率を使用する代わりに、サンプルごとに大気透過率を適用します。

  4. Volumetric Advanced Material Output 式を使用してボリューム クラウド マテリアルに以下の設定を行います。

    • 雲の最下層に地面のライティングを適用して、シーンに存在する雲により多くのシェイプと色を与えます。

      • 詳細パネルで [Ground Contribution] を有効化します。Volumetric Cloud コンポーネントで Ground Albedo を使用して、日光と大気を基準にして雲を下から照らすために使用する地面の色を指定します。

    • クラウド ボリュームを通過する光多重散乱のシミュレートに使用する近似数を設定します。

      • 使用する Multi Scattering Approximation Octaves の数を最大で 2 のまで上げることで、クラウド ボリュームを通過する際の光多重散乱エフェクトをより適切にシミュレートできます。

      • オクターブをさらに適用するとクラウド ボリュームを通過した光はより多く散乱します。すなわち、Volumetric Advanced Output 式で Multi Scattering Contribution Multi Scattering Occlusion の値を補正する調整が必要です。

  5. 大気ライトで次のシャドウイング プロパティを有効化します。

    • Cast Cloud Shadow を設定して、シーン要素と大気中に雲からシャドウをキャストします。

    • Cast Shadows on Clouds を設定して、不透明型オブジェクトから雲のレイヤーにシャドウをキャストします。

      雲の上に大きなオブジェクトを効果的にシャドウイングする場合は、指向性ライトに十分な大きさの Shadow Dynamic Distance を設定します。

  6. プロジェクトのニーズに従って、 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 次元ボリューム表現 (右) になります。

VolumeTexture.png

テクスチャ エディタでボリューム テクスチャを開いて表示し、2 次元画像ビュー (左) または 3 次元ボリューム ビュー (右) を表示します。

Volumetric Cloud コンポーネントとマテリアルで制御できる属性に加え、ボリューム テクスチャは雲の最初の外観を提供する基礎であり、実施可能な項目を定義できます。ボリューム テクスチャの可能性はクラウド マテリアルによって広がり、さまざまな種類のクラウドとエフェクトを作成できます。

以下の例は、さまざまな種類の雲を示します。これらはインスタンス化によって調整できるパラメーターを備え、1 つのボリューム マテリアルを使用して作成できます。この例は Volumetrics プラグイン コンテンツで利用できる M_volumetricCloud_02_Profiles_Soft を使用しています (下記を参照してください)。

VT_CloudExamples.png

ボリューム マテリアルには、マテリアル式の入力と出力のノードがあり、クラウド マテリアルの基礎となる編集可能な属性を提供します。こうした設定の中にはパフォーマンスに影響を与えるものもあり、シェーダーの計算負荷を増減します。

これらの式を使用する際は、その式の値をパラメータ化して、 マテリアル インスタンス で値をすばやく簡単に調整することを推奨します。

Volumetrics プラグイン コンテンツ

このプラグインのコンテンツはデモ用であり、プロジェクトでの使用に対して完全に最適化されない場合があります。さらに、今後のリリースにおいて、変更および削除される可能性があります。従って、エディタで独自のコンテンツを作成する第一歩として考えてください。

Volumetrics プラグインには Epic 社内のテクニカル アーティストが作成したサンプルと実験的コンテンツが含まれていますが、その中には雲のレンダリングや、流体シミュレーションなど、ボリューム レンダリングを使用する他の種類のツールに対して特別な設計になっていない可能性があります。

次の手順に従って使用を開始します。

  1. このプラグインを有効化するにはメインメニューから [Window] > [Plugin (プラグイン)] を選択します。 Volumetrics プラグインを検索して有効化します。

    クリックしてフルサイズ表示。

  2. コンテンツ ブラウザ [View Options (表示オプション)] メニューから [Show Engine Content (エンジンのコンテンツを表示)] [Show Plugin Content (プラグインのコンテンツを表示)] を有効化します。

    クリックしてフルサイズ表示。

  3. コンテンツ ブラウザの階層を使用して、プラグイン コンテンツの格納場所である「Volumetrics」フォルダを見つけて選択します。

クラウド マテリアルのサンプル

さまざまな種類のクラウド マテリアルを、このプラグインから選択できます。これらを使用してシーンにさまざまな種類の雲を作成できます。

こうしたクラウド マテリアルは、プレフィックス M_Volumetric_Cloud_ が付いた状態で「/Content/Sky/Materials」フォルダに保存されています。例: Content/Sky/Materials/M_Volumetric_Cloud_02_Profiles_Soft

これらを効果的に利用するには、クラウド マテリアルの マテリアル インスタンス を作成し、それを Volumetric Cloud コンポーネントの [Material] スロットに適用します。このマテリアル インスタンスを開くと、パラメータを変更して雲をレンダリングし、必要な外観、密度、スケールなどを実現できます。

このドキュメントに掲載するスクリーンショットでキャプチャした大部分の雲は、こうしたサンプル クラウド マテリアルから作成したもので、マテリアル インスタンスのパラメータを変更しています。

ブループリントで配置した雲

このプラグイン フォルダにあるサンプルを使用して、クラウド ブループリント アクタを個別にシーンに配置します。シーンに個別に配置したブループリントは、X 軸と Y 軸に沿ってスケール、回転、移動が可能です。Volumetric Cloud コンポーネントは、使用する割り当て済みのクラウド マテリアルとともに、シーンに存在する必要があります。ブループリント クラウド アクタによって、シーンに存在するクラウドに対して追加のカスタマイズと配置が可能です。

設定の例は、 Composite_Cloud_Object Level /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 (ベロシティ)] を選択した際に、雲にペイントする Velocity の速度をスケールします。

パフォーマンスとスケーラビリティ

プロジェクトの開発時は、複数のプラットフォームにわたるパフォーマンスとスケーラビリティの管理が重要です。次のセクションは、雲の品質のスケーリング、プロジェクトに存在する雲のキャプチャとライティングに関連するその他の機能です。

対応プラットフォーム

Volumetric Cloud と Sky Atmosphere のコンポーネントは、次のプラットフォームでスケーラブルな大気システムの提供をサポートします。

機能

モバイル

XB1 / PS4

XBX / PS5

ローエンド/ハイエンドの PC

SkyAtmosphere

対応*

対応

対応

対応

Volumetric Clouds

非対応

対応**

対応

対応

* Is Sky を有効にしたマテリアルのスカイドーム メッシュが必要です。 ** こうしたプラットフォームで必要なパフォーマンスを実現するために、「 ボリューム レイ マーチングとシャドウ マップ 」セクションで扱ったセカンダリ トレースの代わりに、シャドウ マップ アプローチを使用したクラウド セルフ シャドウイングを検討することを推奨します。

クラウド トレース品質の制御

クラウド システムは、ボリューム マテリアルで多くのトレースを実行します。トレース結果の品質は使用したサンプル数に依存します。使用するサンプルが多いほど、より高い品質を得られます。逆もまた真であり、使用するサンプルが少ないほど品質が低下します。

デフォルト サンプル数 (1.0)

低めのサンプル数 (0.25)

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

Performance_TracingQuality_Properties.png

こうしたプロパティにはそれぞれ独自のコンソール コマンドがあり、デバイス プロファイル構成ファイル (*.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 より大きい場合はマテリアルを評価し、それ以外の場合は次のサンプルを直接評価します。詳細についてはボリュメトリック クラウドのドキュメントをご参照ください。

スカイ ライトのリアルタイム キャプチャ モードにかかる計算負荷

スカイ ライトの Real Time Capture は 9 フレームのタイム スライスを有効化して、単一フレームのキャプチャを複数フレームに分散します。タイム スライスには最も計算負荷が高いフレームと同じくらい負荷がかかるため、この最適化によって時間帯シミュレーションを実現する際のパフォーマンスが向上し、計算負荷を大幅に削減します。負荷を高めることなく、フレーム計算余力の他の領域で品質を向上させるチャンスになります。

たとえばキャプチャしたシーン要素とそのフレーム計算負荷を分析し、スペキュラ畳み込みに必要な時間がフレームあたり 0.8 ミリ秒 (ms) にもかかわらず、空と雲については 0.6 ms だけだと判明した場合、このフレーム計算余力には追加負荷をかけずに空と雲の品質をわずかに向上させる余地があります。

保存性密度の評価

Conservative Density はレイ マーチング処理を最適化する手段として導入されました。大気中にあるレイマーチする各サンプルのクラウド マテリアル グラフ全体を評価すると、即座に計算負荷が許容範囲を超えます。負荷効率を高めるために、ユーザーを指定した保存性密度は負荷が低く、評価に適しています。たとえばマテリアルの評価は、雲の密度を表すトップダウンの 2 次元テクスチャである可能性があり、そのため Volumetric Advanced Input 式で評価する場合、大気中に雲が存在するならば、保存性密度を 0 より大きくすることが唯一のルールです。

大気をレイ マーチングする際に、保存性密度入力を使用する場合、クラウド マテリアル サンプルを 2 つの手順で取得します。

  1. Volumetric Advanced Output ノードでは、保存性密度入力 (Vector3) グラフを評価します。

  2. (Vector3 に含まれる) X の保存性密度が 0 より大きい場合:

    1. Main Material ノード (評価対象: Albedo、Emissive Color、Extinction) に接続した、より計算負荷が高いマテリアル グラフを評価する決定を使用します。

    2. この値には Volumetric Advanced Input ノードを使用してアクセスでき、これによって手順 1 で評価済みの保存性密度値の計算を回避します。

  3. それ以外の場合、X の保存性密度が 0 以下ならば、計算負荷がより高いマテリアル評価をスキップして、次のサンプルに進みます。

Unreal Engine はマテリアル グラフでの動的分岐をサポートしていません。動的分岐で ConservativeDensity 入力を利用すると、発生する可能性のある計算負荷がより高いマテリアル評価をスキップできます。Unreal Engine がマテリアルで動的分岐をネイティブにサポートすれば、こうした入力は廃止され、テクニカル アーティストが動的にスキップする対象を決定できるようになります。

レイトレーシングとボリュメトリック クラウド

クラウド システムは リアルタイム レイトレーシング 機能をサポートせず、スカイライトにレンダリングされたクラウドのみを考慮します。反射のためにボリュメトリック クラウドをトレースすると、パフォーマンスが大幅に低下します。

空のオブジェクトに反射が必要な場合は、Sky Light アクタをオブジェクトの近く (空) に配置すると便利です。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル