ボリュメトリック フォグは、指数関数的高さフォグ コンポーネントのオプション部分です。 ボリュメトリック フォグでは、フォグに影響するさまざまな密度とライトをいくつでもサポートするため、カメラの視錐台のすべてのポイントで関与するメディアの密度とライティングを計算します。
ボリュメトリック フォグのコントロール
ボリュメトリック フォグを設定および調節する場合、シーン内でグローバルまたはローカルに調節することができます。 グローバル制御は、指数関数的高さフォグ (Exponential Height Fog) コンポーネントを使って、シーン全体のフォグの調節を可能にします。 ローカル制御は、パーティクルがスポーン可能な領域のパーティクル システムを使ったフォグの調節を可能にします。
グローバル コントロール
ボリュメトリック フォグは、Exponential Height Fog のプロパティと各ライトのプロパティを調整することで、ライト効果の強さを調節できます。
Exponential Height Fog (指数関数的高さフォグ)
ボリュメトリック フォグ コントロールは、[Volumetric Fog] セクションの指数関数的高さフォグ コンポーネントにあります。 その指数関数的高さ分布は、ボリュメトリック フォグにグローバル密度を追加します。
| プロパティ | 説明 |
|---|---|
Scattering Distribution | ボリュメトリック スキャタリングに与える指向性を決定します。値が 0 の場合、ライトはすべての方向に均等に拡散し、1 に近づくにつれてライトよりに拡散します (拡散を確認するためにはライトを見ていなければなりません)。 |
Albedo | 散乱媒体全体の反射性です。 水のパーティクルをベースにした雲、霧、霧のアルベドは 1 に近いです。 |
Emissive | 高さフォグによって放出される光の密度です。 |
Extinction Scale | 散乱媒体でブロックするライト量を調節します。 |
View Distance | ボリュメトリック フォグの計算に使うカメラからの距離です。 フォグ用に作成されたボリューム テクスチャでは、この距離に応じて Z スライス数が制限されます。 距離が長くなるとアンダーサンプリングとなり、アーティファクトが生じる原因になります。 Z スライス数は r.VolumetricFog.GridSizeZ を使って調節することができます。値が高いほど質は良くなりますが、負荷が高くなります。 |
Start Distance | ボリュメトリック フォグが発生しはじめるカメラからの距離 (ワールド単位) です。 |
Near Fade In Distance | ボリュメトリック フォグが開始距離からフェードインする距離です。 |
Static Lighting Scattering Intensity | ボリュメトリック フォグの静的ライティングの散乱の強度を調整します。 |
Override Light Colors with Fog Inscattering Colors | 有効な場合、Fog Inscattering Color プロパティ、Directional Inscattering Color プロパティ、Inscattering Texture プロパティを使ってボリュメトリック フォグでライト カラーをオーバーライドします。 |
ライト
ライトがシーンに及ぼす効果量 (およびフォグへのシャドウイング有無) を各ライトの [Details (詳細)] パネルの [Light] セクションにある以下のプロパティで調節することができます。
| プロパティ | 説明 |
|---|---|
Volumetric Scattering Intensity | ボリュメトリック フォグに影響するライトの量を調節します。 0 にすると、まったく影響しません。 |
Cast Volumetric Shadow | ボリュメトリック フォグに影響を及ぼすライトへのボリュメトリック シャドウのキャストの有無を切り替えます。 シャドウ キャストを有効にすると、ボリューム テクスチャ シャドウイングに影響を与えるため、ポイント ライトとスポット ライトの負荷は、シャドウへのキャストを無効にしてシャドウではなくフォグのみに影響を与える場合の約 3 倍になります。 |
この例では、[Volumetric Scattering Intensity] を 0 にしてボリュメトリック フォグに対するスポットライトの効果を無効にしています。
ローカル制御
Volume ドメインを使うマテリアルは、空間の任意のポイントでの Albedo、Emissive、Extinction を表現します。 Emissive と Extinction は 0 より大きいすべての値がワールド空間密度となりますが、 Albedo の範囲は [0-1] です。
Volume マテリアルは現在パーティクル上でのみ機能し、パーティクル半径内部の位置でのみ有効です。これは通常 SphereMask によって処理されます。
単一のパーティクル システムをマテリアルで配置すると、密度の球体がボリュメトリック フォグに追加されます。 エフェクトは、ビルボードをまったく含まない完全な 3D です。
その次のステップとして、テクスチャからのノイズのある複数の球体フォグ パーティクルを使用して、フォグをシーンの任意の場所に制限することができます。
このシーンでは、フォグ パーティクルはこれらの低地に充満して、ボリュメトリック フォグを使用して影をつけたローカライズされたフォグ エフェクトを作成しています。
テンポラル リプロジェクション
ボリュメトリック フォグに使用されるボリューム テクスチャ (ボクセル) はかなり低解像度で、カメラ錐台にそって整列されています。 ボリュメトリック フォグは、フレームごとにサブボクセル ジッターが異なる負荷の高い テンポラル リプロジェクション フィルタを使用します。 懐中電灯や火光のように高速で変化するライトは、副次的影響としてライティング トレイルが残ってしまいます。 これらのライトの効果を無効にするには、[Volumetric Scattering Intensity] を 0 に設定します。
ボリュメトリック フォグの事前計算されたライティング
ボリュメトリック ライトマップは、フォグ ボクセルごとにその空間内での位置まで事前計算されたライティングを補間することで、ボリュメトリック フォグへの静的ライトの応用をサポートしています。
固定ライトでは、その間接ライティングがライトマップに格納されているため、それがフォグを照らしています。
スカイ ライトは適切にシャドウ処理されて、室内領域にフォグがかかりすぎないようになっています。
静的ライトのスタティックおよびエミッシブは、ボリュメトリック ライトマップにすべて統合されているため、負荷をかけずにフォグを照らします。
Performance (パフォーマンス)
ボリュメトリック フォグの GPU 負荷は、Engine Scalability の Shadow レベルから設定するボリューム テクスチャ解像度によって主に制御されます。 ボリュメトリック フォグの負荷は、High に設定した PlayStation 4 で 1 ミリ秒、 Epic 設定の NVIDIA 970 GTX で 3 ミリ秒、そしてボクセルは 8 倍になります。
Volume ドメインを使っているパーティクルは、3D オーバードローと命令数によってはかなり高い GPU 負荷を追加する場合があります。 負荷は、コンソール コマンド
profilegpuを使って調べます。ポイント ライトとスポット ライトの [Cast Volumetric Shadow] を有効にすると、シャドウがない場合と比べて約 3 倍の負荷がかかります。
クラウド レンダリングでは、r.PostProcessing.PropagateAlpha が有効で、指数関数的高さフォグ、ボリュメトリック クラウド、スカイ環境などの機能でアルファ ホールドアウトが有効になっている場合は、負荷の高いパスが使用されます。
現在サポート対象の機能
ボリュメトリック フォグが現在サポートする機能は以下のとおりです。
カスケード シャドウ マップまたは静的シャドウイングからシャドウイング、または Light 関数を使用した単一のディレクショナル ライト。
動的または静的シャドウイングを使用した任意の数のポイント ライトとスポット ライト (Cast Volumetric Shadowing が有効な場合)。
固定スカイ ライトのシャドウイング。
ボリュメトリック ライトマップによる事前計算されたライティング (静的ライトの直接ライティング、固定ライトの間接ライティング)。
ディスタンス フィールド アンビエント オクルージョン (有効な場合) からのシャドウイングを使用した単一のスカイライト。
パーティクル ライト (Volumetric Scattering Intensity が 0 より大きい場合)。
さらに、ボリュメトリック フォグによって、透過性もシーンの位置に合わせて正しく反映されます。 デフォルトでは、透過性は頂点でフォグを計算するため、テッセレーションの低い水面ではアーティファクトが発生する可能性があります 。 これらのマテリアルの [Details (詳細)] で [Compute Fog Per-Pixel] を有効にして、フォグ処理をピクセル単位で計算する設定にすると、この問題は解決されます。
既知の問題
以下は、ボリュメトリック フォグの使用中は、サポートされない機能です。
ポイント ライトおよびスポット ライト上での IES プロファイルと Light 関数
レイトレース ディスタンス フィールド シャドウからのシャドウイング
ボリュメトリック フォグ (そのもの) からのシャドウイング
ポイント ライトとスポット ライト上でのソース半径
Fog Cutoff Distance、Start Distance、Fog Max Opacity など、指数関数的高さフォグの複数の設定。
よくある質問
以下は、ボリュメトリック フォグの使用に関する一般的な質問 / 問題点です。
グローバル フォグの密度を上げずにライト シャフトを強める方法はありますか?
フォグのグローバル密度が増加するとフォグの密度も増加します。そのため、すべての要素に厚い霧がかかるほどフォグが濃い場合に限り、ライト シャフト (ライトのシャドウ) が目立つようになります。 フォグ密度を上げずにライト シャフトを強める方法には、次の 2 通りの方法があります。
グローバル フォグの密度は低くしたまま、ディレクショナル ライトの Volumetric Scattering Intensity を高くします。 また、Exponential Height Fog アクタの Scattering Distribution (スキャッタリング分布) を「0.9」近くに調整します。
グローバル フォグの密度は低くしたまま、ボリューム パーティクルを使って特定の領域の密度を高くします。
指数関数的高さフォグとボリュメトリック フォグは同時に使用できますか?
現在、ボリュメトリック フォグは、ボリュメトリック フォグの [View Distance] の [Fog Inscattering Color] の役割を果たします。 ボリュメトリックフォグは物理ベースであり、エクスポネンシャルフォグは物理ベースではないため、2 つのシステムを遠くでブレンドして一致させることはできません。 。 つまり、指数関数的高さフォグ コンポーネントの設定にはボリュメトリック フォグには効果がないものもあるということです。
トップダウン ゲームで使いやすくするために、 ボリュメトリック フォグの中心をカメラから切り離すことはできますか?
現時点ではできません。スタンドアローン ボリュームを使うことをお勧めします。 ただし、透過性と効率よく統合させることは困難です。