0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unityの2DRendererとCustomLitShaderのライティング実装(2DRenderer前編)

Last updated at Posted at 2025-04-16

もくじ

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になるようにし、その軸の手前のライトからは順光、奥のライトからは逆光となるようにしました。

イメージ図
1.png

具体的には2DLightは位置によってBlendStyleを設定。objectのShederには位置によってLightTextureの中から順光として受け取るColorを合計したものと逆光として受け取るColorをそれぞれ出力するSubGraphを作成。順光はそのままテクスチャのColorと乗算、逆光は以前紹介したフレネルの処理を通して加算するようにしました。

オブジェクトのShader
2.png

描画結果
3.png

2DRendererのデメリット
落ちる葉っぱをVisualEffectGraphで実装しようと思いましたが、VFXGraphでは2DRendererのLightTextureを受け取れないようになってたのでParticleSystemにしました。

まとめ

2DRendererはLightを色々できるところは良いですが、それなりにデメリットもあるのでその辺も記事書けたらと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?