Scene Setup (Forward Rendering Path mode)
Sun: make sure you have a proper directional light assigned as the Sun. It’s necessary to compute relief and occlusion effects. Global Snow will pick a directional light automatically for you but ensure this is the good one.
Global Snow uses custom replacement shaders to render the snow over the scene geometry. By default all opaque objects will be covered by snow (see FAQ section for exclusion options). The following setup parameters will help some common shaders work with Global Snow:
Update Speed Tree: enable this option to support SpeedTree and SpeedTree billboard objects.
Remove Leaves: enables a SpeedTree variant shader that removes tree leaves. For best results, it’s recommended that you use custom Winter tree models. However this option allows you to quickly prune all tree leaves if you want.
Billboard Coverage: specifies the amount of snow over tree billboards and grass objects.
Opaque Cutout: by default, opaque objects will be covered by snow. But some shaders expose holes or transparent parts of a texture and still they use the Opaque rendertype. Enabling this option will force GlobalSnow to discard those transparent pixels preventing them from being covered by snow (in this case a transparent pixel needs to have RGBA=0,0,0,0 value). Some trees may require you to to enable this option so their leaves render appropriately with Global Snow.
Fix Materials: this option will force all materials to expose a RenderType tag. It’s a good recommendation for shader developers to specify a RenderType per shader. However not all shaders expose this tag. Because of this, it’s possible that some objects get clipped by the snow. If this happens to your scene, enable this option to force all non-transparent materials to expose an Opaque render type.
Force VR SPSR: this option is only available in Unity 5.5 or higher. Will enable compatibility with OpenVR. Don’t use if your VR SDK is Oculus.
Scene Setup (Deferred Rendering Path mode)
Sun: make sure you have a proper directional light assigned as the Sun. It’s necessary to compute relief and occlusion effects. Global Snow will pick a directional light automatically for you but ensure this is the good one.
Forward Rendering: enable this option to override deferred rendering and use the forward rendering mode of Global Snow.
Deferred Camera Event: this option specifies when the snow shader passes will be executed. By default this setting is BeforeReflections and that should be the “good setting”. However, if you disable deferred reflections in Graphics Settings, you will need to change this to “Before Lighting”.
FP Normals Buffer: enable this option to use floating-point backed normal buffer (16 bit precision) instead of normal 8-bit precision. Use it only if you see snow artifacts in the distance.
Allow Batched Meshes: this option is only used when excluding objects from snow coverage (ie. using the Layer Mask field). If the excluded objects are part of static batching, Global Snow detects this situation and uses the mesh from the collider itself. However, since the mesh collider usually is a low resolution version of the original mesh, this can produce artifacts. In this case, either disable static batching or enable this option to force Global Snow to exclude the entire batched mesh.
Unity standard tree and billboards (only in deferred mode)
-
Inside the folder Resources/Workflow_Deferred/Shaders/Grass & Billboards you can find a package containing shader replacements for the default grass and tree billboards in case you need to support them.
-
Also you can use the alternate “TreeOpaque Soft Occlusion Bark” shader located inside the same folder (subfolder Tree).
-
SpeedTrees are supported in this mode so you don’t need to change them.
Quality
This section offers main quality/performance options:
Best Quality: uses a high resolution coverage texture, relief shading, occlusion and glitter effects.
Medium: uses a smaller resolution coverage texture, relief shading, occlusion and glitter effects. It also enables Distance Optimization option with a default value of 500m.
Fastest: uses a smaller coverage texture and flat shading (which still looks good!). It also enabled Distance Optimization beyond 100m.
Note that these presets just apply some factory values to other settings across the inspector. They are provided for convenience, as shortcuts to other options.
Distance Optimization: when enabled, a secondary simpler and faster algorithm is used to render the snow beyond some given distance from the camera. A “Tint” option allows you to specify the color for the far distance snow. Since this algorithm is not physically-based, the snow rendered this way is not influenced by ambient light nor global illumination. It can’t also receive shadows. Additional options are self-describing (pass mouse cursor over the option label to get a short description).
Coverage
This section allows you to customize where and how the snow will be rendered:
Layer Mask: determines which objects can be “painted” with snow. By default, all transparent objects are excluded since snow is rendered before transparent queue.
Zenithal Mask: determines which objects can occlude other beneath them. By default, any object will cancel any snow on other objects beneath them. Make sure to exclude any particle system here both to improve performance and to reduce coverage issues.
Ref Exclusion Layer: this is the number of the layer, used during the rendering of snow, for objects that have been marked specifically to be excluded by snow. Use a layer number that you don’t use in your project.
Exclusion Double Sided: enable this option when excluding double-sided objects from snow.
Default Exclusion Cut Off: cut off threshold applied to excluded objects. Useful if you exclude semi-transparent objects (ie. objects with holes or transparent sections in their textures).
Use Fast Mask Shader: by default, Global Snow uses a fast mask shader to exclude snow from designed objects. However, if the object uses a custom shader with vertex animation, you need to disable this option so the original material is used to perform the exclusion.
Minimum Altitude and Altitude Scatter: specify the starting altitude for the snow. Use Altitude Scatter to make the snow appearance more realistic. Note that above the minimum altitude, the snow will always appear. There’s no “maximum altitude”.
Vegetation Offset: specify a value to be added to the minimum altitude for trees and grass. With this option you can enforce vegetation to be covered by snow on greater altitude than terrain starts showing snow.
Coverage Extension: a value of 1 means an area of 256×256 meters around the camera position. A value of 2 means an area of 512×512 meters. This parameter along with Coverage Quality determines the final resolution of the snow coverage.
Coverage Quality: determines the size of the internal texture used for snow coverage computation. A value of 1 uses a 512×512 texture, a value of 2 uses 1024×1024 texture and a value of 3 uses a 2048×2048 texture.
Smooth Coverage: enabling this option will smooth the coverage producing more pleasant results.
Coverage Mask: you can use a texture as a mask to specify the areas of the world that will be covered by snow. This feature assumes that terrain is centered around 0,0 position. The alpha channel of the texture will be used to determine where can be snow (1=snow, 0=no snow). The world size parameter specifies the mapping size of the texture over the world. For instance, a texture of 2048×2048 pixels with a World Size of 2048×2048 will have a mapping of 1 meter per pixel (the Y-coordinate is ignored).
Appearance
This section allows you to customize the appearance of the snow itself:
Snow Complexity: Flat shading is the fastest and produces a flat and easy looking snow. Relief mapping uses a limited raytracing algorithm to simulate 3D waves over the snow.
Occlusion: adds extra local shadows to the snow. Only available when relief shading is used. This option is useful when the Sun is high in the sky because from the zenith the snow will look very bright and white without occlusion.
Glitter Strength: controls the amount of glittering over the snow. Glitter tends to glow stronger when facing Sun.
Slope Options: customize the borders of the snow-covered areas, useful for adjusting the look of snow covered cliffs and mountains. Note that this feature only works on DX11 and OpenGLCore compatible graphics.
Max Exposure: let you limit the amount of light that the snow will reflect avoiding over exposure when Sun is very high, or its light intensity is greater than 1. Note that this is an artificial change and can produce odd results if abused when compared with the rest of non-covered geometry.
Features
This section allows you to unlock special Global Snow features:
Footprints: footprints are human-shaped footprints decals that are printed over the snow. This feature is interesting to help the player walk over large distance and be able to return over the same path. Although Global Snow only supports adding footprints at the camera position, it could be modified to add custom footprints over other areas.
-
Enable FPS Footprints to add automatically footprints after your FPS character moves.
-
Use Duration parameter to customize the fade out duration of the footprints.
Terrain Marks: this feature allows you to cause small or medium impacts over the snow.
-
Choose the default size in meters for the radius of the mark.
-
The maximum Extents is the size of the internal control texture that’s used to render marks over the terrain – increase to have a greater area of non-repetitive marks.
-
View distance allows you to control the rendering distance of the terrain marks.
-
Enable FPS Marks to leave automatic footprint tracks using terrain marks.
Snowfall: enable this parameter to instantiate the SnowParticleSystem prefab located in Resources/Common/Prefabs. This particles system will emit snowflakes at Intensity rate. You can customize the look and behaviour of the snow particle system modifying the prefab itself. Enable “Use Illumination” to change the particle material to a Standard Shader material which will be affected by Global Illumination.
Snow Dust: similar to Snowfall, this custom particle system simulates the wind effect over snowed terrain. The effect intensity is modulated with the snow dust slider and the vertical offset (altitude vs current camera altitude). Also, the snowfall speed option influences the speed of the dust system. Feel free to customize the prefabs located in Resources/Common/Prefabs folder.
Camera Frost: adds a screen-space frosting effect which can be customize by intensity and screen spread. Useful to add a temperature sense to the player.
Snow Marks on Terrain
Global Snow detects collisions with the terrain and takes care of snow marks. It does by attaching a GlobalSnowCollisionDetector script to your terrain gameobjects. If you have custom terrain objects or create them at runtime or you want snow marks on other kind of surfaces, just add the collision detector script to those objects using AddComponent<GlobalSnowCollisionDetector>().
Once a collision occurs, Global Snow will render the mark on a special texture used during the screen space effect. By default, Global Snow will use the settings specified in the Global Snow inspector:
You can also customize the marks effect per object. Add a GlobalSnowColliderExtraInfo script to your gameobject:
The settings of the Collider extra info script override the default settings from Global Snow inspector:
-
Mark Size: the snow mark size for each impact of this object on the ground.
-
Collision Distance Threshold: minimum distance vs last impact to consider adding a new mark on the ground.
-
Is Footprint: if enabled, only one “stamp” of the mark will be added to the ground. This creates discontinuities on the ground. For example, a creature with feet should have a collider on each foot and the isFootprint enabled so a single footprint is left behind. However, rolling objects, rocks or vehicles should have this property disabled so they leave a continuous trailing mark on the snow.
-
Step Max Distance: the distance at which a new trail starts. For example, if a player jumps or teleports, the trail should not be connected to the new location. This is the maximum distance for which a trail could be connected.
-
Rotation Threshold: useful for wheels. This is the minimum rotation degrees to consider stamping a new mark. Objects leave marks on the snow when they move on the ground or rotate. So, this setting controls the rotation in the same way that Collision Distance Threshold controls the minimum distance travelled to consider a new stamp on the ground.
-
Ignore This Collider: use it to ignore snow marks caused by this collider.