Version: 2021.3
ライティングモード: Baked Indirect
ライティングモード: Subtractive

ライティングモード: Shadowmask

このページでは、シーンで Lighting Settings Asset を使用し、その Lighting Mode プロパティが Shadowmask に設定される場合の、シーンのすべての Mixed Lights (混合ライト) の動作について説明します。

Similar to Baked Indirect Lighting Mode, Shadowmask Lighting Mode combines real-time direct lighting with baked indirect lighting. However, Shadowmask Lighting Mode differs from Baked Indirect Lighting Mode in the way that it renders shadows. Shadowmask Lighting Mode allows Unity to combine baked and real-time shadows at runtime, and to render shadows in the far distance. It does this by using an additional lightmap Texture known as a shadow mask, and by storing additional information in Light Probes.

Shadowmask ライティングモードは、すべてのライティングモードの中で忠実度が最も高い影を提供しますが、パフォーマンスコストとメモリ要件が最も高くなります。ハイエンドや平均的なハードウェアで、オープンワールドなど、遠くにあるゲームオブジェクトを表示するリアルなシーンをレンダリングするのに適しています。

レンダリングパイプラインのサポート

See render pipeline feature comparison for more information about support for Shadowmask Lighting Mode across render pipelines.

シャドウマスクの品質設定

Shadowmask ライティングモードには以下の品質設定があります。

  • Distance Shadowmask は高いパフォーマンスコストで忠実度の高い影を提供します。
  • Shadowmask は、低いパフォーマンスコストで忠実度の低いシャドウを提供します。

混合ライトの動作

Distance Shadowmask 品質設定

シーンのライティングモードを Shadowmask に設定し、プロジェクトが品質設定で Distance Shadowmask を使用する場合、混合ライトは以下のように動作します。

  • 混合ライトで照らされた動的ゲームオブジェクトは以下を受けます。
    • リアルタイムの直接ライティング。
    • ベイクされた間接ライティング、ライトプローブ使用。
    • 動的ゲームオブジェクトからのリアルタイムの影、シャドウマップ使用 (シャドウディスタンス以内)。
    • 静的ゲームオブジェクトからのリアルタイムの影、シャドウマップ使用 (シャドウディスタンス以内)。
    • 静的ゲームオブジェクトからのベイクした影、ライトプローブ使用 (シャドウディスタンスを超える範囲)。
  • 混合ライトで照らされた静的ゲームオブジェクトは以下を受けます。
    • リアルタイムの直接ライティング。
    • ベイクした間接ライティング、ライトマップ使用。
    • 動的ゲームオブジェクトからのリアルタイムの影、シャドウマップ使用 (シャドウディスタンス以内)。
    • 静的ゲームオブジェクトからのリアルタイムの影、シャドウマップ使用 (シャドウディスタンス以内)。
    • 静的ゲームオブジェクトからのベイクした影、シャドウマスク使用 (シャドウディスタンスを超える範囲)。

Shadowmask 品質設定

シーンのライティングモードを Shadowmask に設定し、プロジェクトが品質設定で Shadowmask を使用する場合、混合ライトは以下のように動作します。

  • 混合ライトで照らされた動的ゲームオブジェクトは以下を受けます。
    • リアルタイムの直接ライティング。
    • ベイクされた間接ライティング、ライトプローブ使用。
    • 動的ゲームオブジェクトからのリアルタイムの影、シャドウマップ使用 (シャドウディスタンス以内)。
    • 静的ゲームオブジェクトからのベイクした影、ライトプローブ使用 (すべての範囲)。
  • 混合ライトで照らされた静的ゲームオブジェクトは以下を受けます。
    • リアルタイムの直接ライティング。
    • ベイクした間接ライティング、ライトマップ使用。
    • 動的ゲームオブジェクトからのリアルタイムの影、シャドウマップ使用 (シャドウディスタンス以内)。
    • 静的ゲームオブジェクトからのベイクした影、シャドウマスク使用 (すべての範囲)。

シーンのライティングモードを Shadowmask に設定

ビルトインレンダーパイプラインでは以下を行います。

  1. シーンの Lighting Settings アセット を選択します。
  2. Inspector で、Mixed Lighting に移動します。
  3. ドロップダウンメニューを使用して、Lighting ModeShadowmask に設定します。
  4. Quality Settings を開きます (Edit > Project Settings に移動し、Quality カテゴリを選択)。
  5. Shadowmask Mode ドロップダウンメニューを使って、Shadowmask または Shadowmask Distance のいずれかを選択します。

HD レンダーパイプラインでは以下を行います。

HDRP の Shadowmask ライティングモード ドキュメントを参照してください。

影とランタイムパフォーマンス

Shadow Distance プロパティを使用して、Unity がリアルタイムの影 (シャドウ) を描画するカメラからの距離制限を決定します。

シャドウマスクの実装の詳細

ランタイムに、Unity はシャドウマスクを使用して、ピクセルを影にするかどうかを判断します。シャドウマスクのテクスチャには、ベイクしたライトに関するオクルージョン情報が含まれます。シャドウマスクは同じ UV レイアウトと解像度を対応するライトマップと共有します。シャドウマスクには、テクセルごとに最大 4 つのライトのオクルージョン情報が RGBA 形式で含まれます。

4 つ以上のライトが重なった場合、余分のライトはベイクしたライティングに代替処理されます。どのライトをベイクしたライトにするかはベイクのシステムによって決定され、重なっているライトの 1 つが変更されない限り、ベイク全体で一貫しています。ライトプローブも、最大 4 つのライトの同じ情報を取得します。

ライトの重なりは、影を受けるオブジェクトと無関係に計算されます。ですから、それらのライトのバウンディングボリュームが空間の点で重ならない限り、1 つのオブジェクトが、すべてが同じシャドウマスク/プローブのチャンネルから来る 10 の異なる混合ライトの効果を受けることが可能です。ライトが重なる場合は、より多くのチャンネルが使用されます。そして、4 チャンネルがすべてすでに割り当てられているときにライトが重なる場合は、そのライトは完全にベイクされるように代替処理されます。

ライティングモード: Baked Indirect
ライティングモード: Subtractive