Performance Tips

intermediate performance

Global Snow (Built-in) · Troubleshooting & FAQ

Overview

Global Snow (Built-in) is already optimized - the deferred rendering path modifies GBuffers directly with minimal overhead. These tips help you squeeze out extra frames on lower-end hardware.

Choose the Right Rendering Path

ScenarioRecommended PathReason
Desktop / ConsolesDeferredBest performance - no extra full-screen blit. GBuffer modification is very efficient.
Mobile (mid-range)Forward + Distance OptimizationForward path with aggressive distance cutoff keeps fill rate in check.
Mobile (low-end)Decal variantNo full-screen blit at all. Download from the support forum.

Deferred vs. Forward Performance

Deferred Rendering

  • Modifies existing GBuffers directly - no extra rendering pass.
  • Exclusions handled via stencil buffer - minimal overhead.
  • Best choice for scenes with many lights (deferred already handles them efficiently).
  • Use the Fast Mask Shader option (enabled by default) for optimized exclusion rendering.

Forward Rendering

  • Uses shader replacement - compiles a snow variant for each RenderType.
  • Additional full-screen composite pass required.
  • More shader variants = longer build times and more GPU memory.
  • Better for simple scenes or when deferred is not available.
Shader variant tip: If you only use deferred rendering, delete the Resources/Workflow_Forward folder entirely to eliminate forward shader variants from compilation and builds. Conversely, delete Resources/Workflow_Deferred if you only use forward.

Distance Optimization

This Built-in exclusive feature significantly reduces GPU cost on large scenes by using a simpler algorithm for snow beyond a configurable distance.

SettingImpactDetails
Enable Distance OptimizationHighUses a flat, simplified snow shader beyond the detail distance.
Reduce Detail DistanceHighLower values (50-100 m) push more snow to the cheap shader. Default: 100 m.
Ignore NormalsMediumSkips normal calculations for distance snow. Flat but faster.
Ignore CoverageMediumSkips the zenithal coverage check for distance snow. Everything above minimum altitude gets covered.

Optimization Checklist

OptimizationImpactDetails
Use Fastest quality presetHighFlat shading, smaller coverage texture, 100 m distance optimization. Good for many art styles.
Enable Distance OptimizationHighUses simpler algorithm beyond a set distance. The Medium preset enables this at 500 m by default.
Reduce Coverage ExtensionMediumA value of 1 (256x256 m) instead of 2 (512x512 m) halves the coverage area computation.
Lower Coverage QualityMediumQuality 1 (512x512 texture) instead of 3 (2048x2048) saves significant GPU bandwidth.
Set zenithal update to DiscreteMediumAvoids recalculating coverage every frame. Updates every ~50 m of camera movement.
Disable unused featuresMediumTurn off Footprints, Terrain Marks, Snowfall, Camera Frost if not needed.
Use Flat ShadingMediumSkips relief mapping and normal mapping entirely.
Enable Smooth CoverageLowSmooths coverage with minimal performance cost - enabled by default.
Reduce Terrain Marks View DistanceLowDefault 200 m is generous. 50-100 m is sufficient for most games.

Reducing Shader Variants

Global Snow uses multi_compile directives that generate multiple shader variants. To reduce compile time and build size:

  1. Delete unused workflow folder: If you only use deferred, delete Resources/Workflow_Forward. If you only use forward, delete Resources/Workflow_Deferred.
  2. Strip unused features: Open the main snow shader and comment out #pragma multi_compile lines for features you do not use.
  3. Use Unity's shader stripping: Configure Project Settings > Graphics > Shader Stripping to remove unused variants at build time.

Decal Variant

For the absolute lowest overhead, use the Decal rendering mode available as a separate download from the Kronnect support forum. The Decal variant stamps snow directly onto terrain geometry with no full-screen pass at all, making it ideal for mobile and low-end devices.

Next Steps

Was this page helpful?