Global Snow (URP) · Troubleshooting & FAQ
Global Snow URP is already highly optimized - the deferred rendering path modifies GBuffers directly with minimal overhead. These tips help you squeeze out extra frames on lower-end hardware or large scenes.
The URP version works exclusively with deferred rendering, which is the most efficient approach. Snow data is written directly into the GBuffers (albedo, normals, smoothness) during the deferred pass, avoiding extra full-screen blits. This means the base cost of Global Snow in URP is very low compared to forward-rendered solutions.
| Optimization | Impact | Details |
|---|---|---|
| Use Flat Shading quality | High | No normal mapping or relief - the fastest quality mode. Still looks good for many art styles. |
| Reduce Coverage Resolution | High | Coverage Resolution 1 instead of 3 or 4 significantly reduces the zenithal depth texture cost. |
| Reduce Coverage Extension | Medium | Extension 1 (smallest area) instead of 4 reduces the coverage computation area. |
| Set coverage update to Discrete | Medium | Avoids recalculating the zenithal depth every frame. Only updates when the camera moves a threshold distance. |
| Disable unused features | Medium | Turn off Footprints, Terrain Marks, Camera Frost, Snowfall, and Snow Dust if your scene does not need them. |
| Exclude particle systems from Zenithal Mask | Low | Prevents particles from triggering unnecessary coverage recalculations. |
| Optimize Snow Surface resolution | Medium | Increase Meters Per Vertex and lower Max Resolution on SnowSurface components to reduce triangle counts. |
| Use simplification on Snow Surfaces | Medium | Increase the Simplification Normal Threshold to merge vertices on flat areas. Check IsSimplified and GetTriangleCounts() to monitor. |
Per-object exclusion using GlobalSnowIgnoreCoverage requires rendering excluded objects into a mask buffer. To minimize cost:
The SnowSurface component generates real geometry. To keep performance in check:
Use Unity's Frame Debugger (Window > Analysis > Frame Debugger) to measure the cost of Global Snow passes. Look for the GBuffer modification commands and the zenithal coverage pass.
Use the Coverage Depth Debug toggle in the inspector to visualize the zenithal depth buffer and verify coverage is not being recalculated unnecessarily.
Help us improve this documentation page.