-
-
Notifications
You must be signed in to change notification settings - Fork 28
Decals
📝 Note: decals require Depth Pre-Pass in their minimal implementation.
Decals in Toon RP require setting up a custom shader. The following are instructions for Shader Graph:
- Create a new Default/Unlit shader graph (
Create/Shader Graph/Toon RP
->Default Shader Graph
orUnlit Shader Graph
). - In Graph Settings:
- Set
Surface Type
toTransparent
; - Disable
Cast Shadows
; - Enable
Alpha Clipping
. - Create the following setup:
-
Toon RP Decal Space UV SubGraph
provides UV, which we use to sample a texture. - Pass
Clip Value
decal node output through a newToon RP Decal Alpha Clip Value SubGraph
node and multiply texture alpha with the result. - Plug the resulting color and alpha to the corresponding inputs of the fragment stage.
- (For Default Shader Graph) Pass
PositionWS
from the decal node to the fragment output.
The next step is to setup a decal GameObject:
- Create
3D Object/Cube
. - Remove the collider component.
- Setup the decals size (Scale) and rotation:
- The decal is projected onto the XY size along the Z axis (local forward direction/blue arrow).
📝 Note: requires Normals Pre-Pass.
- In Graph Settings, set
Fragment Normal Space
toWorld
. - Add a
Toon RP Scene Normals SubGraph
node and pass its result to theNormal (World Space)
fragment output.
📝 Note: requires Normals Pre-Pass.
To avoid projecting decals onto steep surfaces, setup angle clipping:
- Add a
Toon RP Decal Angle Clip Value SubGraph
node, add its result with theClipValue
output of theToon RP Decal Space UV SubGraph
. - Pass the addition result to
Toon RP Decal Alpha Clip Value SubGraph
. - Multiply the output with the texture alpha and pass the result to the
Alpha
fragment output.
To mimic the behavior of URP's Rendering Layers, one could use Stencil Buffer. The exact implementation is very project-dependent, therefore Toon RP does not provide a built-in option. An implementation might look like this:
- Render the decal-receiving layer (e.g., a terrain) with a certain stencil bit set.
- Render the rest of the opaque geometry setting the bit to 0.
- Render decals with stencil test: pass only pixels where the stencil bit is set.
📝 Note: enable
Control Stencil
in a Shader Graph'sGraph Inspector
to allow controlling stencil values per-material.
Getting Started
Platform Support
Lighting and Shadows
- Global Ramp
- Shadows
- Variance Shadow Maps (VSM)
- Soft Shadows
- Additional Lights
- Additional Light Shadows
- Tiled Lighting (Forward+)
- Blob Shadows
- Fake Additional Lights
- Baked Lighting
Render Quality
Miscellaneous
Post-Processing
- Post-Processing Stack
- Bloom
- Inverted Hull Outline
- Screen-Space Outline
- SSAO
- Motion Blur
- Sharpen
- Light Scattering
Making Custom Shaders
Debugging