【Unity】【URP】Light Layersで特定のオブジェクトにだけ影響するライトを作る

UnityのURPのLight Layersで特定のオブジェクトにだけ影響するライトを作る方法をまとめました。

Unity2021.2.0f1

はじめに

Unity2021.2から、Universal Render Pipeline(URP)でLight Layersを使用できるようになりました。
この機能を使うと、特定のオブジェクトにだけ影響するライトを作ることができます。
本記事ではこのLight Layers機能の使い方をまとめます。

なおURPの基本的な知識については必要に応じて以下の記事を参照してください。

light11.hatenadiary.com

やりたいこと

Light Layers機能を検証するために、まず以下のようにSphereとポイントライトが二つずつ置かれているシーンを作ります。

f:id:halya_11:20211109210700p:plain
両方のライトが影響している

上図では、赤と緑のポイントライトがそれぞれ両方のSphereに反映されていることがわかります。
本記事ではこの状態からライトレイヤーを使って、下図のように各Sphereにライトが一つずつ反映されている状態にすることをゴールとします。

f:id:halya_11:20211109215128p:plain
各オブジェクトにライトを一つずつ反映

ライトレイヤーを設定する

それではライトレイヤーを設定していきます。
まずUniversal Render Pipeline AssetのLightingの右側にある省略記号のようなボタンを押下し、Show Additional Propertiesを有効にします。

f:id:halya_11:20211109210952p:plain
Show Additional Properties

するとLightingにLight Layersというチェックボックスが現れるので、これにチェックを入れます。

f:id:halya_11:20211109211135p:plain
Light Layersにチェック

次にポイントライトのInspectorから、General > Light Layerを選択します。
今回は1: Light Layer 1にのみチェックが入るように変更します。
また他方のポイントライトは2: Light Layer 2にのみチェックが入るように変更します。

f:id:halya_11:20211109213409p:plain
レイヤーを変更

最後にSphereMesh Rendererの設定を変更します。
Additional Settings > Rendering Layer Mask0: Light Layer default1: Light Layer 1が設定されている状態にします。
他方のSphere0: Light Layer default2: Light Layer 2が設定されている状態にします。

f:id:halya_11:20211109214104p:plain
Rendering Layer Mask

以下のようなレンダリング結果が得られればライトレイヤーの設定が正常に完了しています。

f:id:halya_11:20211109211425p:plain
結果

さらに、床のPlaneには両方のライトが影響するように設定した結果が以下です。

f:id:halya_11:20211109215112p:plain
床にもライトを反映

ライトレイヤー名を変える

さてライトレイヤーの名前は自由に変更することができます。
これはProject Settings > Graphics > URP Global Settings > Light Layer Namesから設定します。

f:id:halya_11:20211109214519p:plain
Light Layer Names

実際に使う際には用途に応じて適した名前を設定しておくのが良いです。

Custom Shadow Layer

ちなみにライトごとに、その影に影響するレイヤーを設定することもできます。
これを行うには、LightコンポーネントShadows > Custom Shadow Layersにチェックを入れ、Layerに影響させたいライトレイヤーを設定します。

f:id:halya_11:20211109215347p:plain
Custom Shadow Layer

下図の適用例では、赤いライトが片方のオブジェクトのみ照らしていますが、
それと同時に両方のオブジェクトの影に影響を与えていることがわかります。

f:id:halya_11:20211109215511p:plain
Custom Shadow Layer適用例

関連

light11.hatenadiary.com

参考

docs.unity3d.com