このセクションでは、Lighting Settings アセットの Lighting Mode プロパティの効果について説明します。
Lighting Mode は、Lighting Settings アセットを使用するすべてのシーンで、すべての混合ライトの動作を決定します。利用できるモードは以下の通りです。
レンダーパイプライン間の各ライティングモードのサポートについては、レンダーパイプラインの機能の比較を参照してください。
シーンのライティングモードを Baked Indirect に設定すると、間接光はリアルタイムのライトのように動作し、間接光をライトマップにベイクするという利点もあります。混合ライトで照らされたゲームオブジェクトは、プロジェクトで定義したシャドウディスタンス内でリアルタイムの影を作ります。
混合ライトは以下のように動作します。
Baked Indirect Lighting モードでは、混合ライトからのすべての影がリアルタイムであるため、パフォーマンスに影響を与える可能性があります。Shadow Distance プロパティを使用してリアルタイムで影を描画する距離を制限することによって、この影響を軽減できます。
Baked Indirect Lighting モードと同様に、Shadowmask Lighting モードは、リアルタイムの直接ライティングとベイクした間接ライティングを組み合わせます。ただし、Shadowmask Lighting モードは、影をレンダリングする方法が Baked Indirect Lighting モードと異なります。Shadowmask Lighting モードでは、ランタイムにベイクした影とリアルタイムの影を組み合わせて、距離が離れた場所に影を描画することができます。これを行うには、シャドウマスクと呼ばれる追加のライトマップテクスチャを使用し、ライトプローブに追加情報を格納します。Unity はベイクした影のシャドウマスクとライトプローブのオクルージョンデータを生成します。
Shadowmask Lighting モードでは、すべてのライティングモードの中で最も忠実度の高いシャドウを表現できますが、パフォーマンスコストとメモリ要件も最大です。ハイエンドやミドルレンジのハードウェアで、オープンワールドなど、遠くにあるゲームオブジェクトを表示するリアルなシーンのレンダリングに適しています。
品質設定パネルを使用して、ランタイムに使用する Shadowmask モードを設定します。
シーンのライティングモードを Shadowmask に設定し、プロジェクトが品質設定で Distance Shadowmask を使用する場合、混合ライトは以下のように動作します。
シーンのライティングモードを Shadowmask に設定し、プロジェクトが品質設定で Shadowmask を使用する場合、混合ライトは以下のように動作します。
ランタイムに、Unity ではシャドウマスクを使用して、ピクセルを影にするかどうかが判断されます。シャドウマスクのテクスチャには、ベイクしたライトに関するオクルージョン情報が含まれます。シャドウマスクは同じ UV レイアウトと解像度を対応するライトマップと共有します。シャドウマスクには、テクセルごとに最大 4 つのライトのオクルージョン情報が RGBA 形式で含まれます。
4 つを超えるライトが重なった場合、余分なライトはベイクされライティングに代替処理されます。どのライトをベイクされたライトにするかはベイクのシステムによって決定され、重なっているライトのいずれかが変更されない限り、ベイク全体で一貫しています。ライトプローブも、最大 4 つのライトについて同じ情報を取得します。
ライトの重なりは、影を受けるオブジェクトと無関係に計算されます。そのため、それらのライトのバウンディングボリュームが空間の点で重ならない限り、1 つのオブジェクトが、すべてが同じシャドウマスク/プローブのチャンネルから来る 10 の異なる混合ライトの効果を受けることが可能です。ライトが重なる場合は、より多くのチャンネルが使用されます。そして、4 チャンネルすべてがすでに割り当てられているときにライトが重なる場合は、そのライトは完全にベイクされるように代替処理されます。
Shadow Distance プロパティを使用して、Unity がリアルタイムの影 (シャドウ) を描画するカメラからの距離制限を決定します。
Subtractive (減法) ライティングモードでは、シーンのすべての混合ライトはベイクされた直接および間接ライティングを提供します。Unity は、静的ゲームオブジェクトから投影された影 (シャドウ) はライトマップにベイクされます。ベイクされた影に加えて、メインディレクショナルライトと呼ばれる 1 つのディレクショナルライトが、動的ゲームオブジェクトにリアルタイムの影を提供します。
影はライトマップにベイクされるため、ランタイム時にベイクした影とリアルタイムの影を正確に組み合わせるには、必要な情報がありません。代わりに、Unity ではライトマップからの影響を減らすために Realtime Shadow Color (リアルタイムシャドウカラー) を使用し、ベイクした影とリアルタイムの影が正しくブレンドされているように見せます。特定の芸術的なスタイルを実現するために色を微調整することもできます。
Subtractive (減法) ライティングモードは、パフォーマンスが重要なローエンドのハードウェアで、リアルタイムで影をキャストするライトが 1 つだけ必要な場合に便利です。特にリアルなライティングエフェクトは提供せず、シェーディングなどの様式化された外観に適しています。
Unity は自動的に、シーンで最も強度の高いディレクショナルライトをメインディレクショナルライトに選びます。
シーンのライティングモードを Subtractive に設定すると、混合ライトは以下のように動作します。