Version: 2023.1
言語: 日本語
ライティングモード: 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 makes it possible for Unity to combine baked and real-time shadows at runtime and 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. Unity generates Shadow masks and Light Probe occlusion data for baked shadows.

Shadowmask Lighting Mode provides the highest fidelity shadows among all the Lighting Modes, but has the highest performance cost and memory requirements. It’s suitable for rendering realistic scenes where distant GameObjects are visible, such as open worlds, on high-end or mid-range hardware.

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

レンダーパイプライン間での Shadowmask ライティングモードのサポートについては、レンダーパイプライン機能比較 を参照してください。

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

Use the Quality Settings panel to set the Shadowmask Mode Unity uses at runtime.

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

混合ライトの動作

Distance Shadowmask 品質設定

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

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

Shadowmask 品質設定

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

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

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

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

  1. シーンの Lighting Settings アセット を選択します。
  2. In the Inspector, navigate to Mixed Lighting.
  3. Use the drop-down menu to set the Lighting Mode to Shadowmask.
  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