Snow Surface

intermediate concepts

Global Snow (URP) · Core Concepts

Overview

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.

URP only - Snow Surface is exclusive to the URP version of Global Snow. It is not available in the Built-in RP package.

Adding a Snow Surface

To add a deformable snow layer to your terrain or mesh:

  1. Select the terrain or mesh object you want to cover with deformable snow.
  2. Click Add Component and search for SnowSurface.
  3. The component will generate a snow mesh that conforms to the surface below it.

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();

Geometry Settings

These parameters control the resolution and extent of the generated snow mesh.

ParameterDescription
Terrain Layer MaskSelects 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 VertexSpacing between mesh vertices in meters. Lower values create a denser mesh with more detail. Minimum 0.1, default 0.25.
Geometry SizeSize of the snow surface area in meters (X, Z). Default 2x2 meters. Increase for larger coverage areas.
Max ResolutionMaximum vertex count per axis. Range 8-1024, default 256. Caps the mesh density regardless of Meters Per Vertex.
Simplification Normal ThresholdAngle threshold for mesh simplification. Vertices on flat areas are merged if the normal difference is below this value. Range 0-90 degrees, default 15.

Pressure and Deformation

These parameters control how the snow mesh reacts to objects pressing into it.

ParameterDescription
Max Sink DepthMaximum depth an object can sink into the snow. Minimum 0, default 0.05 meters.
Sink SpeedHow fast the snow compresses under pressure. Minimum 0, default 0.25.
Default RadiusDefault pressure radius for objects interacting with the surface. Minimum 0, default 0.25 meters.
Tip: Increase Max Sink Depth for deep, fluffy snow. Decrease it for packed, icy snow that barely deforms.

Snow Overflow

When an object presses into the snow, displaced snow can pile up around the edges of the depression, creating a realistic overflow effect.

ParameterDescription
Snow OverflowAmount of snow that piles up around depressions. Range 0-0.5.
Snow Overflow BorderWidth of the overflow rim around depressions. Range 0.01-0.25, default 0.05.

Read-Only Properties

These properties are available at runtime for querying the mesh state:

PropertyDescription
GeometryResolutionXCurrent vertex count along the X axis.
GeometryResolutionZCurrent vertex count along the Z axis.
IsSimplifiedWhether the mesh has been simplified based on the normal threshold.

Scripting API

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.

Usage Tips

  • Performance - Snow Surface generates real geometry. Keep the mesh resolution appropriate for your target platform. Use the Max Resolution cap to prevent excessive vertex counts.
  • Terrain layers - Use the Terrain Layer Mask to prevent snow from appearing on surfaces that should not have it (water, roads with specific terrain textures).
  • Multiple surfaces - You can add multiple SnowSurface components to different areas of your scene. Use GlobalSnow.GetSnowSurfaces() to iterate over all active surfaces.
  • Simplification - Increase the Normal Threshold to aggressively simplify flat areas and reduce triangle count. Check IsSimplified at runtime to verify.

Next Steps

Was this page helpful?