Global Snow supports multiple rendering approaches. The mode is selected automatically based on your camera's rendering path, but can be overridden in the inspector.
| Mode | Pipeline | How It Works | Performance |
|---|---|---|---|
| Deferred (recommended) | Built-in RP, URP | Modifies the GBuffers in real time, adding snow data directly to the deferred lighting pass. | Best — no extra full-screen blit. |
| Forward | Built-in RP only | Uses replacement shaders to render a snow-covered version of the scene, then composites it as a screen-space image effect. A secondary flat shader handles distant snow. | Good — requires an extra screen-space pass. |
| Decal (separate download) | Built-in RP only | Renders snow as decals on existing objects. Available from the Kronnect support forum. | Best for low-end devices — no full-screen blit. |
Global Snow uses a zenithal depth pass — a secondary camera that captures depth from directly above the scene. This information determines which surfaces are exposed to snowfall and which are occluded by geometry above them (roofs, overhangs, bridges).
The zenithal pass can run:
| Update Mode | When to Use |
|---|---|
| Every Frame | Scenes with dynamic objects that move frequently over snow areas. |
| Discrete (default) | Most scenes. A new depth shot is captured every ~50 meters of camera movement. |
| Manual | Fully static scenes. Call UpdateSnowCoverage() from script when needed. |
Snow distribution is controlled by several overlapping systems:
GlobalSnowIgnoreCoverage script on any GameObject.Resources/Workflow_Forward or Resources/Workflow_Deferred) to reduce shader compilation time and build size.
Help us improve this documentation page.