The 3D Handbook
Topic

Fog and atmosphere

How depth fog, height fog, volumetric fog and physically based sky systems work in Unreal and Godot, how to use them for depth, mood and readability, what they cost, and how Silent Hill turned a hardware limit into atmosphere.

lightingfogatmosphereskyrendering

Fog in a game engine is a simulation of light being absorbed and scattered by particles in the air, such as water droplets, dust and smoke; Unreal's fog settings describe this, with particle reflectiveness and extinction controls (Unreal Engine Documentation: Exponential Height Fog). Atmosphere systems do the same at planetary scale, giving you blue skies, orange sunsets and distant mountains that fade to blue. Simple height fog costs about as much as two layers of constant fog (Unreal Engine Documentation: Exponential Height Fog), so it is a cheap way to add depth and mood, and an easy one to overdo.

This page covers the main kinds of fog, the physically based sky systems in current engines, and how artists use them. For the light itself, see real-time lighting; for the final image, see exposure and post-processing.

#Why artists use fog

  • Depth. Objects that fade with distance read as far away. Painters call this aerial perspective; see composition and value.
  • Mood. Low mist in a valley, smoke in a tavern, dust in a sunbeam.
  • Readability. Fog separates layers of a scene, so a silhouette stands out against a paler background. See silhouette and visual hierarchy and readability.
  • Hiding things. Fog can cover the point where the world, or its detail, ends.

#Kinds of fog

#Depth fog and height fog

The simplest fog is a colour blended in by distance. Godot offers two kinds in its Environment resource (Godot Engine documentation: Environment and post-processing):

  • Depth fog "is applied based on the distance from the camera".
  • Height fog "is applied to any objects below (or above) a certain height, regardless of the distance from the camera".

Unreal's Exponential Height Fog combines the two ideas. It "creates more density in low places of a map and less density in high places" (Unreal Engine Documentation: Exponential Height Fog). Fog Density is "the global density factor, which can be thought of as the fog layer's thickness", and Fog Height Falloff "controls how the density increases as height decreases" (Unreal Engine Documentation: Exponential Height Fog). You can add a second layer with its own density, falloff and height offset (Unreal Engine Documentation: Exponential Height Fog).

A graph of fog density against height from 0 to 400 metres. A solid orange curve with a small falloff thins slowly with height. A dashed black curve with a larger falloff drops close to zero within about 100 metres.
Exponential height fog. A small falloff gives a deep, hazy layer; a large one gives fog that hugs the ground. Curves computed for this page with illustrative values.Diagram by the handbook author

Two settings make height fog look lit rather than painted on:

Cost. Epic says the cost of Exponential Height Fog "is similar to two layers of constant density height fog", and that a far Start Distance can cut the cost by "50% or less", depending on the scene (Unreal Engine Documentation: Exponential Height Fog).

#Volumetric fog

Volumetric fog fills a 3D grid of cells in front of the camera (Godot calls them froxels, frustum voxels) and lights each cell, so fog can be shadowed: sunbeams through a window, a torch glowing in mist.

In Unreal, Volumetric Fog is a toggle on the Exponential Height Fog. Its main controls are Scattering Distribution (0 scatters "equally in all directions"; values near 0.9 scatter towards the light), Albedo (water particles near white, dust darker) and Extinction Scale (Unreal Engine Documentation: Exponential Height Fog). It does not support Start Distance, Fog Max Opacity or Fog Cutoff Distance (Unreal Engine Documentation: Exponential Height Fog).

In Godot 4, volumetric fog "is only supported in the Forward+ renderer" (Godot Engine documentation: Volumetric fog and fog volumes). Anisotropy controls the scattering direction: "Fog and mist scatter light slightly forward, while smoke scatters light equally in all directions" (Godot Engine documentation: Volumetric fog and fog volumes). FogVolume nodes add or subtract fog locally, in ellipsoid, cone, cylinder, box or world shapes (Godot Engine documentation: Volumetric fog and fog volumes).

Volumetric fog has limits. In Godot it has "a finite range", moving fog volumes and lights can leave "ghosting" trails from temporal reprojection, and dense fog can cause banding (Godot Engine documentation: Volumetric fog and fog volumes). Keep its Length "as low as possible" for quality (Godot Engine documentation: Volumetric fog and fog volumes). See bit depth and banding for banding.

#Sky and atmosphere systems

Physically based sky systems simulate how sunlight scatters through the air. Unreal's Sky Atmosphere "simulates absorption with Mie scattering and Rayleigh scattering" (Unreal Engine Documentation: Sky Atmosphere Component):

  • Rayleigh scattering comes from tiny particles such as air molecules and makes the sky blue.
  • Mie scattering comes from larger particles such as dust or pollen and gives the bright haze around the sun.

The system provides "an Earth-like atmosphere with time-of-day featuring sunrise and sunset", plus aerial perspective "from ground to sky to outer space" (Unreal Engine Documentation: Sky Atmosphere Component). Sizes are in kilometres: Epic's planetary example uses a ground radius of 6,360 km and an atmosphere height of 100 km, and the default Rayleigh scale height is 8 km (Unreal Engine Documentation: Sky Atmosphere Component). You link it to your sun by enabling Atmosphere Sun Light on the directional light, with index 0 for the sun and 1 for the moon (Unreal Engine Documentation: Sky Atmosphere Component).

To stay fast, "the sky is evaluated in a few lookup tables (LUTs) at low resolution" (Unreal Engine Documentation: Sky Atmosphere Component). Sébastien Hillaire's 2020 paper on a production sky technique describes rendering "the atmosphere of a planet from ground to space views", scaling "from power-efficient mobile platforms up to PCs with high-end GPUs" (Hillaire 2020). Unreal lists mobile support with the condition that it "Requires a skydome mesh with a material that has Is Sky enabled" (Unreal Engine Documentation: Sky Atmosphere Component).

#Fog and other systems

#Common mistakes

#Further reading and watching

References

  1. Epic Games · Exponential Height Fog · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
  2. Wikipedia contributors · Silent Hill (video game) · Wikipedia, 2026 · web · accessed 2026-10-21
  3. Godot Engine contributors · Environment and post-processing · Godot Engine documentation (source on GitHub), 2026 · docs · accessed 2026-10-21
  4. Godot Engine contributors · Volumetric fog and fog volumes · Godot Engine documentation (source on GitHub), 2026 · docs · accessed 2026-10-21
  5. Epic Games · Sky Atmosphere Component · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
  6. Sébastien Hillaire · A Scalable and Production Ready Sky and Atmosphere Rendering Technique · Computer Graphics Forum (EGSR 2020), 2020 · paper · accessed 2026-10-21

Last updated 2026-10-22