/DecalFakeShadow

Blob/Fake Shadow by Decal Projector for Unity

Primary LanguageC#OtherNOASSERTION

DecalFakeShadow

Blob Shadow / Fake Shadow for URP12(Unity2021)

Fake ShadowはBlob Shadowと同様にTop-DownのCast Shadowを行います.

image

Setup

  • ScriptableRendererFeatureとしてDecalとFakeShadowPassを追加します。(DecalはURPのプリセットです)
  • Decal Featureの"Technique"を"Screen Space"に、"GBuffer"を無効にします。DBufferやGBufferはサポート外です。
  • Fake Shadow Pass Featureの"Character Layer"は影を落とすMeshのLayerを用意し設定します。加えてOpaque Passからは除外します。 image
  • Decal ProjectorをSceneに追加してMaterialを"FakeShadowByDecal"にします。 image

Blob Shadow

Decal Projectorに"BlobShadowByDecal"またはプリセットのDecal shaderを参照するMaterialを設定し、完了です。

Fake Shadow (with Shadow-Mesh)

処理負荷の関係上Shadow Meshを別途用意することを推奨します。 Shadow Meshは1 MeshかつLow-Polygon、またWeight Boneも少なくすることが望ましいです。

  • Skinned MeshをCtrl+DでDuplicateし、MeshをShadow Meshに差し替えます。
  • MaterialはRuntimeで提供される為、設定は不要です。Materialの数はShadow MeshのSub Mesh数に依存します。
  • Shadow MeshのGameObjectにFake Shadow Componentを追加します。
  • Fake Shadow ComponentのProjectorに対応するDecal Projectorを設定します。
  • Fake Shadow ComponentのShadow MeshのToggleをEnableにします。 image

Fake Shadow

Shadow Meshを準備できない場合、SkinnedMeshのGameObjectにFack Shadow Componentを追加します。

  • MeshのShaderにFakeShadow passを追加します。 本サンプルではSimpleLitFakeShadow shaderを使用していますが、プリセットのCBUFFERを使用するのでSRP Batcherが非対応となっています。 SRP Batcher対応を行う場合は_FakeShadowOffsetをCBUFFERに追加してください。
  • Skinned MeshのGameObjectにFake Shadow Componentを追加します。
  • Fake Shadow ComponentのProjectorに対応するDecal Projectorを設定します。 image