Global Snow (URP) · Core Concepts
By default, Global Snow does not differentiate between static and moving objects. Snow on moving objects can shift as the character or vehicle animates. Follow these steps to handle them correctly:
Remove global snow from the object so it does not receive the scene-wide snow effect:
GlobalSnowIgnoreCoverage script to the GameObject.If you want the object to display snow that stays stable as it moves, use a custom material that integrates snow features directly so the snow does not shift with animation.
For vehicles, add GlobalSnowColliderExtraInfo to the vehicle root. This script detects wheel-ground contact points and reports them to Global Snow for terrain marks.
To make a humanoid character leave realistic footprints:
GlobalSnowColliderExtraInfo to each foot collider with Is Footprint enabled.The Coverage Mask allows you to paint snow on or off using a texture. The alpha channel controls opacity: 1 = full snow, 0 = no snow.
| Parameter | Description |
|---|---|
| Coverage Mask | Enable the mask system and assign an alpha texture. |
| World Center | Center position of the mask in world coordinates. |
| World Size | Size in meters. Controls the area the mask covers. |
| Fill Outside | When enabled, areas outside the mask bounds receive full snow. |
Enable the Mask Editor section in the inspector to paint directly in the Scene View:
Attach this script to any GameObject for fine-grained control over snow coverage. It affects the object and all its children.
| Option | Description |
|---|---|
| Receive Snow | When enabled, forces the object to receive snow even if its layer is excluded from the Layer Mask (acts as an override). When disabled (default), the object is rendered into the exclusion buffer and will not show snow. |
| Block Snow | When enabled, the object blocks snow on surfaces beneath it during the zenithal pass (use for shelters, roofs, bridges). When disabled (default), the object is temporarily moved to the exclusion layer during the zenithal capture, so it does not cast coverage shadows downward. |
| Use Fast Mask Shader | Uses an optimized depth-only shader for exclusion rendering. Disable for objects with vertex animation in custom shaders, so the exclusion mask matches the deformed mesh. Default enabled. |
| Exclusion Cut Off | Alpha threshold for semi-transparent objects. Pixels with alpha below this value are not excluded. Range 0-1. |
GlobalSnowIgnoreCoverage with Receive Snow disabled. The Layer Mask cannot exclude objects on Layer 0.
Attach this script to any GameObject with a collider to customize how it interacts with terrain marks and snow surfaces. Also supports WheelCollider automatically - wheel-ground contact points are reported for terrain marks each frame.
| Option | Description |
|---|---|
| Mark Size | Snow mark radius for this specific collider. Default 0.25. |
| Is Footprint | Stamps a single footprint instead of a continuous trail. Enable for foot colliders on humanoid characters. |
| Collision Distance Threshold | Minimum distance between consecutive marks. Prevents overlapping stamps. Default 0.1. |
| Step Max Distance | Maximum distance for trail interpolation between frames. Prevents gaps when moving fast. Default 20. Set to 0 to disable interpolation. |
| Rotation Threshold | Minimum rotation (in degrees) to trigger a new mark. Default 3. |
| Ignore This Collider | Completely ignore this collider for snow marks. |
| Override Sink Depth | Override the SnowSurface sink depth for this collider. |
| Snow Surface Sink Depth | Maximum deformation depth in meters when overriding. Default 0.05. |
All Global Snow properties are animatable. For quick transitions between two snow configurations, use the GlobalSnowLerp script:
| Parameter | Description |
|---|---|
| Target Global Snow | Auto-detected at Start. Assign manually if you instantiate late. |
| Transition | Blend factor: 0 = Profile 1, 1 = Profile 2. |
| Left / Right Key | Keyboard shortcuts to decrease/increase the transition at runtime. |
| Profile 1 / Profile 2 | Complete snow configuration presets to lerp between. |
The zenithal depth pass can be updated in several modes:
| Method | When to Use |
|---|---|
| Every Frame | Scenes with frequently moving dynamic objects over snow areas. |
| Discrete | Most scenes. Recalculates when the camera moves a threshold distance. |
| Manual | Fully static scenes. Call UpdateSnowCoverage() from script when needed. |
| Disabled | No coverage updates. Snow placement is fixed. |
Help us improve this documentation page.