Global Snow · Troubleshooting & FAQ
Global Snow is already optimized — the deferred rendering path modifies GBuffers directly with minimal overhead. These tips help you squeeze out extra frames on lower-end hardware or mobile platforms.
| Scenario | Recommended Path | Reason |
|---|---|---|
| Desktop / Consoles | Deferred | Best performance — no extra full-screen blit. GBuffer modification is very efficient. |
| Mobile (mid-range) | Forward + Distance Optimization | Forward path with aggressive distance cutoff keeps fill rate in check. |
| Mobile (low-end) | Decal variant | No full-screen blit at all. Download from the support forum. |
| Optimization | Impact | Details |
|---|---|---|
| Use Fastest quality preset | High | Flat shading, smaller coverage texture, 100 m distance optimization. Still looks good for many art styles. |
| Enable Distance Optimization | High | Uses a simpler algorithm beyond a set distance. The Medium preset enables this at 500 m by default. |
| Reduce Coverage Extension | Medium | A value of 1 (256x256 m) instead of 2 (512x512 m) halves the coverage area computation. |
| Lower Coverage Quality | Medium | Quality 1 (512x512 texture) instead of 3 (2048x2048) saves significant GPU bandwidth. |
| Set zenithal update to Discrete | Medium | Avoids recalculating coverage every frame. Only updates every ~50 m of camera movement. |
| Disable unused features | Medium | Turn off Footprints, Terrain Marks, Camera Frost, Snowfall, and Snow Dust if not needed. |
| Exclude particle systems from Zenithal Mask | Low | Prevents particles from triggering unnecessary coverage recalculations. |
| Delete unused workflow folder | Build size | If using deferred only, delete Resources/Workflow_Forward (and vice versa) to reduce shader compile time. |
The forward rendering path compiles multiple shader variants via multi_compile directives. If you know which features you will always use, you can convert them to hard-coded defines to reduce compile time and variant count:
// In GlobalSnow.shader, replace:
#pragma multi_compile __ GLOBALSNOW_TERRAINMARKS
// With (if you always want terrain marks):
#define GLOBALSNOW_TERRAINMARKS 1
Repeat for any feature keywords you want to lock in:
GLOBALSNOW_FLAT_SHADING / GLOBALSNOW_RELIEF / GLOBALSNOW_OCCLUSIONGLOBALSNOW_OPAQUE_CUTOUTGLOBALSNOW_FOOTPRINTSGLOBALSNOW_TERRAINMARKSGlobalSnow.shader in Resources/Workflow_Forward/Shaders to GlobalSnow.shader.bak to skip compilation of the complex forward snow shader entirely.
Use Unity's Frame Debugger (Window > Analysis > Frame Debugger) to measure the cost of Global Snow passes. In deferred mode, look for the GBuffer modification commands. In forward mode, look for the OnRenderImage pass.
Help us improve this documentation page.