Additional Topics
intermediate conceptsMoving 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.
Character Footprints & Furrow
Add the GlobalSnowFootsteps component to a character to leave automatic footprints. Feet are auto-detected on humanoid rigs from the Animator; for other rigs, assign the feet transforms manually.
In shallow snow the component stamps a print each time a foot plants. When the snow is deeper than Start Depth, prints turn into a continuous furrow carved along the path, complete with snow spray FX.
| Parameter | Description |
|---|---|
| Feet | Feet transforms. Leave empty to auto-detect humanoid feet. |
| Foot Radius | Footprint radius in meters. |
| Sink Depth | Depth of each footprint on deformable snow. |
| Plant Height / Max Plant Speed | A foot counts as planted when it is low and nearly still, so the mark lands where the foot rests. |
| Toe Offset | Shifts the mark toward the toes to match the actual contact area. |
| Furrow Start Depth | Snow depth above which footprints become a continuous furrow. |
| Furrow Radius | Furrow width. 0 derives it from the snow depth. |
| Override Sink Depth | Limits how deep the furrow digs, leaving a bed of compacted snow instead of reaching the ground. Works on deformable surfaces and on the deep snow layer. |
Alternatively, colliders on foot bones with GlobalSnowColliderExtraInfo and Is Footprint enabled also stamp prints on contact.
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.