はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】URPでレンズフレア(Lens Flare)を実装する(Unity2021.2以降利用可)

はじめに

公式の動画を見ていたところURPで利用可能なレンズフレアの紹介をされていて、面白そうだったので試してみました。

www.youtube.com

公式ドキュメントにはURP 12 (Unity 2021.2)New featureとして紹介されていますね。
docs.unity3d.com

厳密にはUniversal RP 12.0.0から実装されているので、Unity 2021.2.0b14以降なら利用可能だと思います。

f:id:hanaaaaaachiru:20220404151752p:plain
URPとUnityのバージョンの関係性


今回はこちらの画像を実現するためのやり方を紹介したいと思います。

f:id:hanaaaaaachiru:20220404161401p:plain
サンプル1
f:id:hanaaaaaachiru:20220404164526g:plain
サンプル2

環境

Unity 2021.2.18f1
Universal Render Pipeline 12.1.6

Lens Flare (SRP)コンポーネントをアタッチ

Lens Flare (SRP)コンポーネントを光らせたいゲームオブジェクトにアタッチします。(例. Directional Light)

f:id:hanaaaaaachiru:20220404153226p:plain
Lens Flare (SRP)コンポーネント

ただコンポーネントをアタッチするだけでは動作はせず、必ずLens Flare Data SRPというアセットを参照させる必要があります。

Lens Flare Data SRPアセットの作成方法

Projectビューから、任意の場所にてCreate -> Lens Flare (SRP)を選択し、アセットを作成します。

f:id:hanaaaaaachiru:20220404155538p:plain
Lens Flare Data SRPアセットの作成

またコンポーネントと紐づけるにはドラッグ&ドロップしてください。

f:id:hanaaaaaachiru:20220404155846p:plain
Lens Flare Data SRPアセットを紐づける
f:id:hanaaaaaachiru:20220404160240p:plain
描画されたLenf Flare

Lens Flare(SRP)のプロパティ

General
プロパティ 意味
Lens Flare Data このコンポーネントが利用するLens Flare (SRP) Data asset
Intensity レンズフレアの強さ。
Scale レンズフレアの大きさ。
Screen Attenuation Curve 画面端からの距離に応じてレンズフレアの効果を弱める。
Occlusion
プロパティ 意味
Enable 深度バッファに基づきレンズフレアを部分的に弱める。
Allow Off Screen カメラの視野外のレンズフレアが現在の視野に影響を与えるようする。

Lens Flare Data SRPの設定

レンズフレアのカスタマイズをするにはLens Flare Data SRPにレンズフレアのデータを設定しなくてはならないのですが、正直かなり難しいです。

冒頭で紹介した動画でも同じことをお話されていて、サンプルのLens Flare Data SRPを利用すると良いとのことでした。

ということで私も同様にサンプルから引っ張ってきたいと思います。

サンプルのインポート

Lens FlareのサンプルはPackage ManagerからUniversal RPを開き、SamplesにあるURP Package Samplesをインポートします。

f:id:hanaaaaaachiru:20220404160822p:plain
URP Package Samplesをインポート

またLensFlaresフォルダ以外のサンプルは利用しなければ削除しちゃってOKです。

Lens Flare Data SRPSamples/Universal RP/〇〇/URP Package Samples/LensFlares/LensFlarePresetsの中に入ってますね。

f:id:hanaaaaaachiru:20220404161211p:plain
Lens Flare Data SRPのサンプル
f:id:hanaaaaaachiru:20220404161343p:plain
PresetのSun

面白い応用例

動画でも言われていましたが、必ずしもLight関連のゲームオブジェクトに利用しなければならないわけではなく、様々な場所で利用できます。

例えばアニメに登場する謎の光とかですね。

f:id:hanaaaaaachiru:20220404164526g:plain
LensFlareを利用した応用例

我が人生に一片の悔いなし。