Add radial hero-cutout shader for third-person camera

Reveal the player when geometry sits between the orbit camera and the
character: a screen-space circular mask in a URP/Lit clone (HeroCutoutLit)
clips occluders in front of the player, depth-gated so only geometry nearer
than the hero is cut. The cutout lives outside UnityPerMaterial (SRP batcher
intact) and is a no-op when disarmed, so occluders look identical to URP/Lit.

A runtime driver (HeroCutout.cs on Main/GameManager) feeds the player's
screen position, radius, feather and depth into global shader properties and
only arms while the third-person orbit vcam is live; it disarms in
first-person, free-cam and the pause menu. Applied to the lobby walls via a
dedicated occluder material (floor left solid). Shipped but shelved for now.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 4.8 committed 2026-06-28 17:18:32 +02:00
1 parent b6aaf69235
commit ac25f59232
10 files changed
+896 -7

No files matched your search

+19
View File
@@ -1823,6 +1823,7 @@ GameObject:
m_Component:
- component: {fileID: 1516578028}
- component: {fileID: 1516578027}
- component: {fileID: 1516578029}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
@@ -1864,6 +1865,24 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1516578029
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1516578026}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c7d67030b8dcdec489471b88c35dd78b, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::HeroCutout
orbitInput: {fileID: 0}
modes: {fileID: 0}
radius: 0.3
feather: 0.1
depthBias: 0.5
heightOffset: 0
--- !u!21 &1752619484
Material:
serializedVersion: 8