UnityのURPのLight Layersで特定のオブジェクトにだけ影響するライトを作る方法をまとめました。
Unity2021.2.0f1
はじめに
Unity2021.2から、Universal Render Pipeline(URP)でLight Layersを使用できるようになりました。
この機能を使うと、特定のオブジェクトにだけ影響するライトを作ることができます。
本記事ではこのLight Layers機能の使い方をまとめます。
なおURPの基本的な知識については必要に応じて以下の記事を参照してください。
やりたいこと
Light Layers機能を検証するために、まず以下のようにSphereとポイントライトが二つずつ置かれているシーンを作ります。
上図では、赤と緑のポイントライトがそれぞれ両方のSphereに反映されていることがわかります。
本記事ではこの状態からライトレイヤーを使って、下図のように各Sphereにライトが一つずつ反映されている状態にすることをゴールとします。
ライトレイヤーを設定する
それではライトレイヤーを設定していきます。
まずUniversal Render Pipeline AssetのLightingの右側にある省略記号のようなボタンを押下し、Show Additional Propertiesを有効にします。
するとLightingにLight Layersというチェックボックスが現れるので、これにチェックを入れます。
次にポイントライトのInspectorから、General > Light Layer
を選択します。
今回は1: Light Layer 1
にのみチェックが入るように変更します。
また他方のポイントライトは2: Light Layer 2
にのみチェックが入るように変更します。
最後にSphereのMesh Renderer
の設定を変更します。
Additional Settings > Rendering Layer Mask
に0: Light Layer default
と1: Light Layer 1
が設定されている状態にします。
他方のSphereは0: Light Layer default
と2: Light Layer 2
が設定されている状態にします。
以下のようなレンダリング結果が得られればライトレイヤーの設定が正常に完了しています。
さらに、床のPlaneには両方のライトが影響するように設定した結果が以下です。
ライトレイヤー名を変える
さてライトレイヤーの名前は自由に変更することができます。
これはProject Settings > Graphics > URP Global Settings > Light Layer Names
から設定します。
実際に使う際には用途に応じて適した名前を設定しておくのが良いです。
Custom Shadow Layer
ちなみにライトごとに、その影に影響するレイヤーを設定することもできます。
これを行うには、LightコンポーネントのShadows > Custom Shadow Layers
にチェックを入れ、Layerに影響させたいライトレイヤーを設定します。
下図の適用例では、赤いライトが片方のオブジェクトのみ照らしていますが、
それと同時に両方のオブジェクトの影に影響を与えていることがわかります。