FAQ
beginner faqGlobal Snow & Rain 3 · Troubleshooting & FAQ
Does Global Snow work with forward rendering?
No. Global Snow needs the Deferred or Deferred+ rendering path. Set it in the Universal Renderer asset used by your URP asset. Forward and Forward+ are not supported. In the deferred path, objects whose shader draws only in the forward pass, such as some tree leaves, get snow when Add Snow To Forward Opaques is on in the Coverage foldout.
Which Unity versions are supported?
Global Snow & Rain 3 needs Unity 6.0 or newer with URP. It uses the Render Graph of URP in Unity 6, so Compatibility Mode (Render Graph Disabled) must be off in Project Settings > Graphics. When it is on, the snow does not render and the Global Snow inspector shows an error with an Open Graphics Settings button.
Where do I add the Global Snow component?
On the camera. The component needs a Camera on the same GameObject. You also need the Global Snow Render Feature in your Universal Renderer. See the Setup Guide.
How does the snow work? Is it a shader layered on top of my materials?
No. Global Snow is a Render Feature that changes the G-buffer after your materials are drawn. It works per pixel with the depth, normals, smoothness and metallic values of the scene, so your materials and shaders stay as they are. On the Receivers, the Snow Accumulation is drawn as real snow geometry over the surface, so objects resting in it are buried.
Any opaque shader drawn in the deferred G-buffer, such as URP Lit or a Lit Shader Graph, gets snow with nothing to do. A shader that draws only in the forward pass, such as the shader of some tree leaves, needs Add Snow To Forward Opaques in the Coverage foldout. Transparent materials get no snow. The Snow Accumulation needs a shader drawn in the G-buffer, and the Receivers list marks the other objects with a warning icon. For grass and plants, see Add Snow to Vegetation.
Does it work with VR?
Yes. Global Snow supports XR in Single Pass Instanced and in Multi Pass: the snow, the snow accumulation, marks and footprints, rain and puddles, frost, camera frost, camera rain, snowfall and the Layer Mask exclusions render in both eyes. The Same Side option of Compare is not used in VR.
How do I add the Render Feature?
Select your Universal Renderer asset, click Add Renderer Feature and select Global Snow Render Feature. If you have several quality levels, add it to the renderer of every URP asset. See the Setup Guide for details.
Why does the snow disappear when entering Play mode, even though it is visible in the editor?
Check that the URP asset used in Play mode (see Project Settings > Quality) uses a deferred renderer with the Global Snow Render Feature. If the snow still flashes or disappears for a moment, disabling Accurate G-buffer normals in the URP settings may help, since toggling that setting reloads the shaders.
Why does the editor crash with a "RenderNodeQueue Page Allocator out of memory" error when using exclusion layers?
This error was reported in scenes where objects were not assigned to a valid layer. Make sure all objects have a valid layer, and use a layer that no object uses as the Default Exclusion Layer in the Coverage foldout.
How do I get footprints under a character?
Enable Footprints in the Footprints & Marks foldout and add the Global Snow Interaction component to the root of the character. See Footprints for Bipeds, and Footprints for Animals for other rigs.
How do I add footprints at an arbitrary position?
Use the scripting API. FootprintAt() alternates the left and right foot on each call, and FootPlantAt() stamps the foot you choose:
GlobalSnow snow = GlobalSnow.instance;
snow.FootprintAt(position, direction);
snow.FootPlantAt(position, direction, FootSide.Left);
How do I add snow to my own grass, plants or leaves?
Turn on Add Snow To Terrain Grass for the grass painted on Unity terrains, and use the Vegetation Layers for grass and plants placed as objects. See Add Snow to Vegetation for these and the other options.
Can I customize the footprint shape?
Yes. Assign your own sole texture in Footprints > Texture, or set footprintsSoleTexture from a script. Each character, such as an animal, can have its own sole in Global Snow Interaction > Feet > Sole Texture. The shape comes from the alpha channel with the toes at the top. Scale sets the size of each footprint.
What is the difference between Deep Marks and Surface Marks?
Deep Marks dig into the Snow Accumulation of the Receivers, as deep as its Thickness, with raised rims and shadows. They work in Play mode. Surface Marks (Footprints and Collision Marks) are drawn on the snow surface and also work without the Snow Accumulation. Where there is a deep mark, it replaces the surface marks. Footprints and Collision Marks only draw when their own Enabled box is on. Without the Snow Accumulation (Snow Accumulation off or Performance Level Fastest), Deep Marks draw nothing, so turn on Footprints and Collision Marks to mark the snow.
Can I change the size of collision marks?
Set Default Size in Collision Marks, or add Global Snow Interaction to an object and set its Mark Size. From a script, pass the radius:
GlobalSnow.instance.MarkAt(position, radius: 0.5f);
How do I mark the snow from my own movement code, like a sled or a custom vehicle?
Call MarkTrail() with the previous and the current position, and EmitImpactFX() for the snow burst. Both also ripple the puddles. With Deep Marks working, MarkTrail() digs a trench in the Snow Accumulation within about 34 m of the camera. To make the shape of the object itself dig the snow as it rests on it, register it once with AddContactSource(). See Scripting Support.
Can I save the marks and restore them when a saved game is loaded?
The marks live on the GPU around the camera and fill back over the marks Duration, so they are not saved with the game. Record the marks your code makes with the OnMark callback and replay them with MarkAt(), MarkTrail() or MarkPath() when the game is loaded. With Deep Marks working they dig the snow accumulation near the camera.
GlobalSnow.instance.OnMark = (start, end, radius, depth) => saved.Add((start, end, radius, depth));
// when loading (the callback adds the replayed marks back to the list)
var marks = saved.ToArray();
saved.Clear();
foreach (var m in marks) GlobalSnow.instance.MarkTrail(m.start, m.end, m.radius, m.depth);
How do I play footstep sounds on snow, water or ice?
Use the OnFootPlant callback of the Global Snow Interaction component of the character. It is called each time a foot lands, with the contact point and the foot side. At that point, await GetSnowAndWaterAtPositionAsync() and choose the sound from its snow, water and ice values. Check ice first, because frozen puddles also have water.
using UnityEngine;
using GlobalSnowEffect;
[RequireComponent(typeof(GlobalSnowInteraction))]
public class FootstepSounds : MonoBehaviour {
public AudioSource source;
public AudioClip snowStep, waterStep, iceStep, groundStep;
[Range(0f, 1f)] public float threshold = 0.25f;
void OnEnable() {
GetComponent<GlobalSnowInteraction>().OnFootPlant += FootPlant;
}
void OnDisable() {
GetComponent<GlobalSnowInteraction>().OnFootPlant -= FootPlant;
}
async void FootPlant(Vector3 position, FootSide side) {
SnowAndWater ground = await GlobalSnow.instance.GetSnowAndWaterAtPositionAsync(position);
if (ground.ice >= threshold) source.PlayOneShot(iceStep);
else if (ground.water >= threshold) source.PlayOneShot(waterStep);
else if (ground.snow >= threshold) source.PlayOneShot(snowStep);
else source.PlayOneShot(groundStep);
}
}
The forest demo plays the steps of Robot Kyle in the same way, see Demo/DemoSources/Scripts/DemoFootstepSounds.cs.
How do I check if there is snow or water at a world position?
float amount = GlobalSnow.instance.GetSnowAmountAt(worldPosition);
It answers at once. The first call for a spot returns an estimate (0 under cover or below Minimum Altitude, the coverage mask value inside the mask, 1 otherwise) and queues a GPU read of that 1 m cell; calls in the next 1.5 s return the exact amount the snow renders. For the exact value, the standing water and the frozen water in one call, await GetSnowAndWaterAtPositionAsync(). Its ice value is the water times Puddle Ice, so use it to play steps on ice over frozen puddles:
SnowAndWater sw = await GlobalSnow.instance.GetSnowAndWaterAtPositionAsync(worldPosition);
// sw.snow, sw.water and sw.ice, 0 to 1
How do I change the coverage mask from a script?
Use MaskPaint(), MaskClear() and MaskFillArea(). A value of 0 removes snow and 255 adds it:
GlobalSnow snow = GlobalSnow.instance;
snow.coverageMask = true;
// remove snow in a 10 m radius
snow.MaskPaint(transform.position, value: 0, brushWidth: 10f, brushOpacity: 1f);
// remove snow over the bounds of a building
snow.MaskFillArea(buildingBounds, value: 0, opacity: 1f, fallOff: 2f);
How do I add static snow to a moving character?
Exclude the object from the scene snow with the Layer Mask or the Global Snow Ignore Coverage component, then use a material with the GlobalSnow/Moving Object Snow/Opaque shader. See Exclude Characters, Props and Effects.
Does the Layer Mask control which objects get snow?
Yes. The layerMask property controls which objects and terrains can receive snow, the Default layer included. Objects and terrains on layers outside the mask get no snow, and with Nothing only the objects with Global Snow Ignore Coverage and Receive Snow get snow. The separate zenithalMask controls which objects take part in the top-down capture, which decides what blocks the snow on the surfaces below. The Snow Accumulation is drawn only on the objects in its Receivers list.
How can I keep snow, snowfall, dust and rain out of buildings?
Keep Use Zenithal Coverage on and the roofs in the Zenithal Mask: roofs seen from above keep snow, rain and puddles off what is below, and snowfall and snow dust do not fall under them. See Remove Snow Under Roofs and Inside Buildings for single sided roofs, thin walls, areas without a roof and objects such as a car or a cabin.
Can I have puddles without rain?
Yes. The Puddles slider works on its own. Puddles form on level ground exposed to the sky, on bare ground and on the dirt revealed by marks. Rain Ripples need Rain above 0, but Contact Ripples work without rain.
Why do ripples not appear?
Ripples only show on puddle water. Set Puddles above 0 and check that puddles are visible where the ripple happens. Contact Ripples work in Play mode. Rain Ripples also need Rain above 0. A value of 0 in either option turns those ripples off.
Why do puddles not appear in some areas?
Puddles only form on level surfaces exposed to the sky. They do not form on slopes and walls, under roofs, or on snow (only in its bare patches). The Coverage Mask does not limit them: where it removes the snow, the bare ground can hold puddles. With a Puddle Mask, black areas and the area outside the mask stay dry, but the Deep Marks, footprints and furrows in the snow still fill with water while it rains.
Why do walls not get wet under a roof?
Rain reaches walls under small roofs only partly. The wind pushes it under the roof onto the walls that face the wind, up to 1.5 m in. Walls deeper under cover or on the side away from the wind stay drier. Raise the wind Speed or change its Direction in the Snowfall, Dust & Wind foldout. To wet the walls everywhere, rain or not, raise Wall Wetness.
How do I keep the rain and the puddles off an open area?
The Coverage Mask only shapes the snow, so it does not stop the rain. To keep the puddles off an area, assign a Puddle Mask and remove the puddles from that area with the Puddle Editor, with Brush Mode set to Remove Puddles. Black areas of the mask and the area outside it never get puddles. The rain and the wetness of the ground only stop under a cover that the top-down capture sees, such as a roof whose layer is in the Zenithal Mask. See Choosing Where Puddles Form and Remove Snow Under Roofs and Inside Buildings.
How can I make running drops cheaper?
Enable Running Drops > Half Resolution: it costs about half, with softer drops. Performance Level Medium turns it on for you. If you do not need them, turn Running Drops off, as Performance Level Fastest does.
Does rain melt the frost?
Yes. Wet surfaces lose their frost. The higher the Frost value, the less the rain melts it.
Which Performance Level should I use?
Best is the default and gives the full look. Use Medium on slower hardware: at most Normal Mapping, a coarser snow accumulation mesh and Running Drops at half resolution. Use Fastest for low end devices: it also turns off the Snow Accumulation, Running Drops and Rain Splashes and draws half the snowflakes. Deep Marks then draw nothing, so turn on Footprints and Collision Marks to keep marks on low end devices. The levels only lower the settings that are higher than they allow, so your lower values are kept. Choose Custom to use your settings without limits. Scripts can change performanceLevel and those settings at runtime, for example from the graphics menu of your game. See Performance Tips.
I have a question not covered here
Please visit the Support Center. If the issue persists, submit a reproduction project so we can investigate further and help you.
Suggest an improvement
Help us improve this documentation page.