Additional Topics
intermediate conceptsGlobal Snow (URP) · Core Concepts
Moving Objects (Characters, Vehicles)
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:
Step 1 - Exclude the Moving Object
Remove global snow from the object so it does not receive the scene-wide snow effect:
- Remove the object's layer from the Layer Mask in the Global Snow inspector, or
- Attach the
GlobalSnowIgnoreCoveragescript to the GameObject.
Step 2 - Apply a Snow Material (Optional)
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.
Step 3 - Vehicle Wheel Tracks (Optional)
For vehicles, add GlobalSnowColliderExtraInfo to the vehicle root. This script detects wheel-ground contact points and reports them to Global Snow for terrain marks.
Humanoid Character Footprints
To make a humanoid character leave realistic footprints:
- Place a collider on each foot bone of the character.
- Add
GlobalSnowColliderExtraInfoto each foot collider with Is Footprint enabled. - The snow mark system will stamp a print each time a foot touches the ground.
Coverage Mask Editor
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.
Inspector Setup
| 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. |
Scene View Mask Editor
Enable the Mask Editor section in the inspector to paint directly in the Scene View:
- Resolution - 1024 for coarse, 2048-8192 for fine detail.
- Brush Mode - add or remove snow.
- Width / Fuzziness / Opacity - brush settings.
- Fill Mask - reset to fully snowed.
- Clear Mask - remove all snow from the covered area.
Per-Object Exclusion (GlobalSnowIgnoreCoverage)
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.
Per-Collider Settings (GlobalSnowColliderExtraInfo)
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. |
Transition / Lerping Between Profiles
All Global Snow properties are animatable. For quick transitions between two snow configurations, use the GlobalSnowLerp script:
- Add the Global Snow Lerp component to any GameObject.
- Configure Profile 1 and Profile 2 with different snow settings.
- Adjust the Transition slider (0 = Profile 1, 1 = Profile 2) to blend between them.
| 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. |
Coverage Update Methods
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. |
Next Steps
- Snow Surface - URP-exclusive deformable snow mesh.
- Scripting Support (C#) - runtime API for mask painting, footprints, and snow queries.
- Troubleshooting - solutions to common issues.
Suggest an improvement
Help us improve this documentation page.