Global Snow (URP) · Core Concepts
The Snow Surface component is a URP-exclusive feature that generates a deformable snow mesh on top of terrain or custom geometry. Unlike the screen-space snow coverage, Snow Surface creates actual 3D geometry that can be deformed by pressure (characters walking, objects falling), producing realistic sink tracks and snow displacement.
To add a deformable snow layer to your terrain or mesh:
SnowSurface.You can also register and unregister Snow Surfaces at runtime via the static API:
GlobalSnow.RegisterSnowSurface(snowSurfaceComponent);
GlobalSnow.UnregisterSnowSurface(snowSurfaceComponent);
// Get all active snow surfaces
List<SnowSurface> surfaces = GlobalSnow.GetSnowSurfaces();
These parameters control the resolution and extent of the generated snow mesh.
| Parameter | Description |
|---|---|
| Terrain Layer Mask | Selects which terrain layers the snow surface conforms to. Use this to limit snow to specific terrain textures (e.g., only grass and rock, not sand). |
| Meters Per Vertex | Spacing between mesh vertices in meters. Lower values create a denser mesh with more detail. Minimum 0.1, default 0.25. |
| Geometry Size | Size of the snow surface area in meters (X, Z). Default 2x2 meters. Increase for larger coverage areas. |
| Max Resolution | Maximum vertex count per axis. Range 8-1024, default 256. Caps the mesh density regardless of Meters Per Vertex. |
| Simplification Normal Threshold | Angle threshold for mesh simplification. Vertices on flat areas are merged if the normal difference is below this value. Range 0-90 degrees, default 15. |
These parameters control how the snow mesh reacts to objects pressing into it.
| Parameter | Description |
|---|---|
| Max Sink Depth | Maximum depth an object can sink into the snow. Minimum 0, default 0.05 meters. |
| Sink Speed | How fast the snow compresses under pressure. Minimum 0, default 0.25. |
| Default Radius | Default pressure radius for objects interacting with the surface. Minimum 0, default 0.25 meters. |
When an object presses into the snow, displaced snow can pile up around the edges of the depression, creating a realistic overflow effect.
| Parameter | Description |
|---|---|
| Snow Overflow | Amount of snow that piles up around depressions. Range 0-0.5. |
| Snow Overflow Border | Width of the overflow rim around depressions. Range 0.01-0.25, default 0.05. |
These properties are available at runtime for querying the mesh state:
| Property | Description |
|---|---|
| GeometryResolutionX | Current vertex count along the X axis. |
| GeometryResolutionZ | Current vertex count along the Z axis. |
| IsSimplified | Whether the mesh has been simplified based on the normal threshold. |
The SnowSurface component exposes methods for runtime mesh queries and brush state management:
void GetTriangleCounts(out int original, out int current)
Returns the original triangle count and the current (simplified) triangle count of the snow mesh.
snowSurface.GetTriangleCounts(out int orig, out int current);
Debug.Log($"Triangles: {current}/{orig}");
void CaptureBrushStartState()
Captures the current mesh state as the starting point for a brush operation. Call before beginning a sculpting session.
void ReleaseBrushStartState()
Releases the captured brush start state and frees memory. Call when the sculpting session ends.
GlobalSnow.GetSnowSurfaces() to iterate over all active surfaces.IsSimplified at runtime to verify.Help us improve this documentation page.