Culling decals by surface normal

I've seen a couple of threads related to this issue, but I can't find a clear solution.

We're using decals to project character markers on the ground, but the decal projector paints these artifacts on vertical surfaces.

8631132--1160253--upload_2022-12-2_12-0-11.jpg

I thought I could modify our decal shadergraph to cut its emission when the normal isn't straight up, but as far as I'm aware, the decal shader can't access the normals of the surface it's projecting on. The Normal Vector node just gets the normals of the Decal Projector itself (i.e. its Up vector).

Does anyone know a solution for this? Am I missing something?

Hm, the decal projector here works exactly as it is supposed to. I'd suggest you draw this kind of marker in a different way. You could just use a Quad with the same texture on it, right?

check out the angle fade (you have to have decal layers enabled): https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@10.1/manual/Decal-Projector.html

The Decal Projector has three setup modes in the Inspector, and one of them lets you crop the decal rectangle. In your case, just crop that edge of the decal until it is just hitting the floor.

[quote=“nehvaleem”, post:3, topic: 901920]
check out the angle fade (you have to have decal layers enabled): https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@10.1/manual/Decal-Projector.html
[/quote]

Ah, that was it. I didn’t have Decal Layers enabled. Thanks!