もくじ
2DRenderer中編
2DRenderer後編
概要
自分が作成してる2Dベルトアクションゲームで2DRendererを採用したのでその際の事例を紹介します。
2DRendererとは
Unityが2Dゲーム向けに提供しているURPの2D機能。2DLightやShadowCaster2Dなどが対応しており、2Dでのライティング表現の幅が広がる機能を有しています。
Unityはほかにも2D向けの機能があるので詳しくはマニュアルの2D部分を読んでください。
2DRendererの採用理由
2DrendererはLightBlendStylesを活用してShaderGraphで最大4つまでLightTextureを受け取れるというのが最大の理由です。
3DRendererではメインのDirectionalLightは容易にShaderGraphで受け取れますが、その他のAdditionalLightを受け取るのはCustomFanctionなど駆使しても自分の知識では難しかったので、Lightの値を色々できる2DRendererにしました。もちろんLitShaderでは3Dでも全てのLightが反映されますが、ShaderGraphで色々いじれないので除外です。
環境・導入
- Unity 6000.0.23f1
実装
目指したライティングとしては、2Dとはいえ奥行き表現にはこだわりたいので、インゲームを背景、遠景、キャラクターの地点、前景と4軸に分けてそれぞれの軸のライトがそれぞれ別のLightTextureになるようにし、その軸の手前のライトからは順光、奥のライトからは逆光となるようにしました。
具体的には2DLightは位置によってBlendStyleを設定。objectのShederには位置によってLightTextureの中から順光として受け取るColorを合計したものと逆光として受け取るColorをそれぞれ出力するSubGraphを作成。順光はそのままテクスチャのColorと乗算、逆光は以前紹介したフレネルの処理を通して加算するようにしました。
2DRendererのデメリット
落ちる葉っぱをVisualEffectGraphで実装しようと思いましたが、VFXGraphでは2DRendererのLightTextureを受け取れないようになってたのでParticleSystemにしました。
まとめ
2DRendererはLightを色々できるところは良いですが、それなりにデメリットもあるのでその辺も記事書けたらと思います。