Volumes

Render fog, clouds, smoke and glowing isosurfaces: soft, lit, three-dimensional looks that fill space instead of sitting on a surface.

A Volume is a region of 3D density filling a box in the scene. Light travels through it, scatters inside it, and casts soft shadows on itself. Put one in a render for smoke, mist and nebulae, or for a clean shaded surface carved out of a Distance Field.

Rendering a volume

The Volume Render node takes a volume-shaped input and renders it. What the source is decides how it is turned into voxels; display_mode decides how those voxels are drawn.

Accepted inputs:

All of them render through the same engine, so a source can be swapped without rebuilding the shading.

A Distance Field gives two looks from the same input, and display_mode picks between them. Volumetric, the default, ray-marches it as fog filling the shape. Surface sphere-traces the isosurface and shades it as a lit solid alongside the meshes, with shade_smooth on to hide the voxel facets. See Distance fields & volumes for what the two kinds of data are.

Shaping the look

A volume's appearance is controlled by a single material with a handful of channels.

Those channels belong to the Volume Render node itself. To author the look somewhere else instead, set a Material node to Volume and wire it into material_in: the wired material then supplies the whole appearance and the node's own fill, scattering, absorption, phase, ambient and alpha are ignored, so the look lives in one place rather than half here and half upstream.

Self-shadowing, multiple-scattering octaves, a blended forward and back lobe, and the Beer-powder edge darkening are all part of the shading model and are all fixed. There is no dial for them.

ParameterTypeDefaultWhat it does
sourcesAnyListGeometry, SDF, Image, frame-stack (Capture), or Volume sources to render as volumetric fog/clouds
fillColor or Color Field or Scalar Field or Vector Field
fill_channelString""For a multi-channel field fill (a captured record): which named Color channel to use.
material_inImplicit Render Settings
display_modeString"Volumetric"Volumetric: fog / cloud / smoke (default). Surface: lit solid — sphere-traces the SDF isosurface into the deferred renderer. One of: Volumetric, Surface.
shade_smoothBooleantrueSmooth the sphere-traced surface normals (hides SDF voxel facets). Surface mode only.
edge_falloffNumber0.500Edge falloff when extruding (0 = sharp, 1 = soft)
volume_depthNumber0World-space depth of the volume (0 = auto). Sets how deep a raster or frame-stack source is extruded along Z.
frame_channel_modeString"Color"Frame stack → Volume: Color (keep RGB) or Luminance (grayscale density). Frame index becomes Z depth. One of: Color, Luminance.
mesh_modeString"SDF"SDF: smooth signed-distance field (surface render, collisions). Density: 0..1 occupancy grid you can blur (fog, reaction-diffusion). Mechanism is picked by the source — mesh voxelizes, points splat. One of: SDF, Density.
point_radiusNumber1Default radius for point splatting (overridden by per-point pscale attribute)
kernel_typeString"Gaussian"Density falloff shape: Gaussian (smooth), Linear (cone), Constant (hard sphere). One of: Gaussian, Linear, Constant.
smoothnessNumber0Smooth blending radius when combining multiple geometry sources
fog_distanceNumber50Distance beyond surface where fog is visible (affects density falloff)
detail_strengthNumber0.350Wispy edge detail (smoke/cloud turbulence). 0 = off. Ignored for image/video volumes.
emission_intensityNumber0Self-emission strength — hot regions glow. Pair with a density→blackbody gradient for fire. 0 = off.
voxel_resolutionNumber64Voxel grid resolution (higher = more detail, slower)
voxel_paddingNumber0.100Padding around mesh bounds as fraction of size
voxel_fill_interiorBooleantrueFill interior of mesh (requires watertight mesh for correct results)
voxel_tessellationString"Medium"Tessellation detail for primitives: Low (8 segments), Medium (16), High (32), Ultra (64). One of: Low, Medium, High, Ultra.
sdf_resolutionNumber128SDF grid resolution (higher = more accurate distance field, less voxel cell aliasing)
sdf_max_distanceNumber10Maximum distance from surface to compute (affects fog extent)
resolutionNumber128Volume resolution (XY detail). Higher = sharper image/camera volumes; the bake auto-caps total voxels to stay within the GPU memory budget.
bounds_sizeNumber100World-space size of the volume bounds (used for non-mesh sources; mesh sources derive bounds from the mesh AABB)
scatteringNumber0.500Scattering: 0 = no scattering, 1 = dense fog
absorptionNumber0.100Absorption: 0 = transparent, 1 = opaque smoke
phaseNumber0.300Phase: -1 = back scatter, 0 = isotropic, 1 = forward scatter
ambientNumber0.200Ambient: minimum brightness in shadowed areas
alphaNumber0.500Volume opacity in viewport
strengthNumber1Effect strength / wet-dry (0 = no effect, 1 = full). Editable, wirable, keyframable.

Live video into a volume

A live camera or video stream routes straight into the Volume Render node. Frames stack into the 3D box along Z and update every frame, giving a moving volumetric slab that lights and shades like any other volume. frame_channel_mode decides whether the stack keeps its RGB or collapses to luminance as density. This is the route for live performance visuals.

The volume renderer runs on the built-in GPU renderer. Like the rest of rendering it is real-time and lives entirely on the GPU, with no offline bake step and no separate cache to manage. External or third-party renderers are a future extension point.

Performance

Volumes are among the heaviest things you can render, because a ray is marched through space for every pixel. Screen tiles the volume does not cover are never dispatched, and a ray stops as soon as the volume in front of it has gone opaque.

The step count is not yours to set. Volumetric mode marches up to 768 steps and Surface mode up to 256, fixed, and the self-shadow march is 6 samples. What you control is resolution, and which resolution depends on the source.

When a volume render is dragging the frame rate, drop the resolution that matches your source first. It buys back the most speed for the least visible loss. Watch the Performance panel while you tune, and see Making it faster for keeping heavy renders real-time.

See also