シャドウマスクモード
Distance Shadowmask

Shadowmask

ShadowmaskShadowmask ライティングモードの 1 つです。シーンのすべての混合ライトに共有されます。 混合ライティングに Shadowmask を設定する手順は以下のとおりです。

  • Lighting ウィンドウを開き ( Window > Lighting > Settings )、Scene タブをクリックします。 Mixed LightingLighting ModeShadowmask に設定します。
  • 次に、 Quality Settings ( Edit > Project Settings > Quality ) を開きます。 Shadowmask ModeShadowmask に設定します。

このライティングモードに関して詳しくは 混合ライティング のドキュメントを参照してください。他のモードに関しては ライティングモード を参照してください。

シャドウマスクは、対応するライトマップと同じ UV レイアウトと解像度を共有するテクスチャです。テクスチャは現在の GPU で最大 4 チャンネルに制限されているため、テクセルあたり最大4 つのライトのオクルージョン情報を保存します。

Unity は静的ゲームオブジェクトから他の静的ゲームオブジェクトに投影するシャドウを事前に計算し、最大 4 つの重なり合うライト情報を格納するために、それらを別々のシャドウマスクテクスチャに格納します。4つ以上のライトが重なった場合、余分のライトは ベイクしたライティング に代替え処理されます。どのライトをベイクするかはベイクのシステムによって決定され、重なっているライトの 1 つが変更されない限り、ベイク全体で一貫します。 ライトプローブ も、最大 4 つのライトの同じ情報を取得します。

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

Shadowmask では、

  • シャドウディスタンス ( Edit > Project Settings > Quality > Shadows > Shadow Distance) にかかわらず、静的ゲームオブジェクトは、シャドウマスクをとおして他の静的ゲームオブジェクトからシャドウを受けます。また、静的ゲームオブジェクトは動的ゲームオブジェクトからもシャドウを受けます。ただし、静的ゲームオブジェクトが シャドウディスタンス 内にあるときに限ります。

  • 動的ゲームオブジェクトは、シャドウマップをとおして シャドウディスタンス 内にある他の動的ゲームオブジェクトからシャドウを受けます。また、動的ゲームオブジェクトは、ライトプローブをとおして、静的ゲームオブジェクトからもシャドウを受けます。シャドウの忠実度は、シーンのライトプローブの密度と、Mesh Renderer で選択した Light Probes のモードによって異なります。

Unity は自動的に静的、動的ゲームオブジェクトから重なるシャドウを合成します。なぜなら、シャドウマスク (静的なゲームオブジェクトのライティングとシャドウの情報を格納) とシャドウマップ (動的ゲームオブジェクトのライティングとシャドウの情報を格納) は、オクルージョン情報をエンコードするだけだからです。

Shadowmask モードの良い使用例は、スペキュラーマテリアル、ソフトベイクしたシャドウ、カメラにあまり近くない場所にある動的にシャドウを投影するオブジェクトを使って、ほとんど完全に静的なシーンを作る場合です。その他の良い使用例は、ベイクしたシャドウが地平線までのびるオープンワールドのシーンで、昼夜のサイクルのような動的なライティングがないものです。

シャドウ

以下の表は、 シャドウマスク モードを使用するとき、静的ゲームオブジェクトと動的ゲームオブジェクトがどのようにシャドウを投げる/受けるかを示しています。

動的なオブジェクトがシャドウを受ける
動的ゲームオブジェクトが他の静的/動的なゲームオブジェクトからシャドウを受ける
静的なオブジェクトがシャドウを受ける
静的ゲームオブジェクトが他の静的/動的なゲームオブジェクトからシャドウを受ける
シャドウディスタンス範囲内 シャドウディスタンスを超える場合 シャドウディスタンス範囲内 シャドウディスタンスを超える場合
動的なオブジェクトがシャドウを投影
動的ゲームオブジェクトからシャドウを投げます。
シャドウマップ - シャドウマップ -
静的なオブジェクトがシャドウを投影
静的ゲームオブジェクトからシャドウを投げます。
ライトプローブ ライトプローブ シャドウマスク シャドウマスク

シャドウマスクモードの長所と短所

Shadowmask モードのパフォーマンス要件は、平均的な PC やローエンドから平均的な PC 、モバイルデバイス向けのビルドに適しています。 以下は、Shadowmask モードを使用する際の最も重要な長所と短所です。

長所

  • リアルタイムライティング と同様のビジュアル効果を提供します。

  • 動的ゲームオブジェクトから静的ゲームオブジェクトに、リアルタイムのシャドウを投影します。

  • シェーダーの 1 つのテクスチャ操作で、静的ゲームオブジェクトのすべてのライティングとシャドウを処理します。

  • 静的および動的ゲームオブジェクトからの重なるシャドウを自動的に合成します。

  • Shadowmask モードは静的ゲームオブジェクトをシャドウマップにレンダリングしないため、中から低レベルのパフォーマンスの要件です。

  • 間接ライティングを提供します。

短所

  • ライトプローブを使用して、静的なゲームオブジェクトから動的ゲームオブジェクトへ低解像度のシャドウしか作成できません。

  • 最多で 4 つの重複するライトしか使用できません (詳しくは、 混合ライティング) の「技術的な詳細」を参照)。

  • ライトマップのテクスチャセットに関して、より高いメモリ要件を必要とします。

  • シャドウマスクテクスチャに関して、より高いメモリ要件を必要とします。


  • 2017–09–18 限られた 編集レビュー で修正されたページ

  • Light Modes、 5.6に追加

  • ライトの重複の計算に関する説明は Unity 2017.1 に追加

シャドウマスクモード
Distance Shadowmask