Skip to content

Volume T3D

Summary

The Volume T3D renders a 3D texture as participating media (smoke, clouds, fog, fire) inside a Render TOP's scene. It draws a box with the volume's proportions and ray-marches the density within it for every pixel the box covers, lit by the Render TOP's camera and lights.

Density. RGB of the input is the density per colour channel: the extinction is σ = 50 × Density × density per unit of the volume's width, and the box is one unit wide. A red density absorbs green and blue more than red. Albedo splits extinction into scattering and absorption: 1 is white smoke, 0 black. Alpha is emission when Emission is above 0.

Lighting. A light volume, computed at Light Map Resolution Scale of the density's resolution, holds each light's optical depth for every voxel, plus the optical depth towards the sky for ambient light. The camera march reads it per sample, after the first Near Light Samples voxels towards each light, which it reads from the full-resolution density so thin lit surfaces keep their detail. Scattered light is shaped by a two-lobe phase function (Anisotropy and Backscatter) and brightened in dense regions by Multiple Scattering. The light volume recomputes only when the density, a light or a lighting parameter changes. The lights are the Render TOP's.

Integration. Each step integrates scattering and extinction analytically over its length, so brightness does not depend on Step Size or on the density's resolution. Empty 8³ bricks of the volume are skipped, and a ray stops once its transmittance falls below Early Ray Termination.

In the scene. Point Render TOP at the Render TOP that draws the volume; the volume takes the camera and lights from it. Without Depth Compositing the volume draws in that Render TOP's pass, after opaque geometry and without writing depth: correct for geometry in front of or behind the volume. With Depth Compositing the volume renders in its own pass, rays stop exactly at the scene's depth, and geometry inside the smoke is fogged by the smoke in front of it; the Composited Render output is then the finished frame, to use in place of the Render TOP.

The output is premultiplied. The forward-scattering rim against a back light can exceed 1: render into a 16-bit float Render TOP to keep it.

Parameters - Volume Page

Render TOP Rendertop - The Render TOP that draws the volume. The volume takes its camera and its lights from this Render TOP, and the Render TOP must include the volume in its Geometry (the default * does for a volume beside it). Any Render TOP that draws the volume renders it correctly, at any resolution. TOP · default render1

Depth Compositing Distinctrenderpass - Renders the volume in its own pass after the scene, in a Render Pass TOP that continues the Render TOP's colour and depth. Rays stop exactly at the scene's depth, so geometry inside the smoke is fogged by the smoke in front of it. The output is then the finished frame: use it in place of the Render TOP. Off, the volume draws in the Render TOP's own pass after opaque geometry: correct for geometry in front of or behind the volume, but geometry inside it is drawn over the smoke. Toggle · default Off

T3D Transform Reference Transformreference - A T3D operator that exports the mapping between the volume and world space (geo_to, point_cloud, metaball, sprinkle, advect). The volume is drawn where that operator's source geometry was. See Coordinates and units. COMP

Parameters - Shading Page

Density Density - How opaque the volume is: multiplies the input density. The extinction is σ = 50 × Density × density per unit of the volume's width, so at the default 1 light falls to 1/e within a fiftieth of the width at density 1. Float · default 1 · min 0

Albedo Albedo - The share of extinction that is scattering: 1 is white smoke that only scatters light, 0 black smoke that only absorbs it. The default 0.8 is bright, soft smoke. Float · default 0.8 · range 0 to 1

Anisotropy Anisotropy - Forward scattering of the phase function (g of its forward lobe, 0 to 0.99): higher values make smoke glow when looking towards a light and darker from the light's side. Float · default 0.5 · range 0 to 0.99

Backscatter Backscatter - Weight of a second, backward lobe with half the Anisotropy, reversed: keeps smoke lit when the light is behind the viewer. 0 uses the forward lobe alone. Float · default 0.3 · range 0 to 1

Multiple Scattering Multiplescattering - Light that has scattered more than once (Wrenninge 2013): each further octave keeps this share of the energy, reaches this much deeper and scatters this much more evenly. It softens and brightens dense smoke; 0 is single scattering. Scattering Octaves on the Optimization page sets how many octaves are computed. Float · default 0.5 · range 0 to 1

Ambient Color Ambientcolorr Ambientcolorg Ambientcolorb ⊞ - Light from the sky, arriving from every direction and dimmed by the density above each point. 0 turns it off. RGBA × 3 · default 0.15

Ambient Up Ambientupx Ambientupy Ambientupz ⊞ - Where the sky is, in world space. The density along this direction occludes the ambient light. Float × 3 · default 0, 1, 0

Emission Emission - Light emitted by the volume, from the density's alpha channel (for fluid: temperature). 0 turns it off. Float · default 0 · min 0

Emission Ramp Emissionramp - Optional colour ramp for emission, indexed by alpha along its width. Empty: alpha as grey. TOP

Version Version - T3D version of this operator. Read-only information; include it when reporting a problem. Str

Parameters - Optimization Page

Step Size Stepsize - Camera ray step in voxels. Larger is faster and blurrier; brightness does not change with it. Below 1 resolves fine detail at more cost. Float · default 1 · range 0.1 to 8

Early Ray Termination Earlyraytermination - A camera ray stops once its transmittance falls below this, since nothing behind it is visible. 0 marches every ray to the end. Float · default 0.005

Scattering Octaves Octaves - Bounces Multiple Scattering computes, each a further lookup per light. 1 is single scattering; more lights dense smoke more fully at more cost. Int · default 3 · range 1 to 4

Near Light Samples Nearlightsamples - Density samples taken towards each light at full resolution before the light volume takes over. Resolves lit surfaces thinner than a light-volume voxel. 0 uses the light volume alone. Int · default 2 · range 0 to 4

Light Map Resolution Scale Lightmapresolutionscale - Resolution of the light volume relative to the density. The light volume holds each light's optical depth and is interpolated, so 0.5 is usually indistinguishable from 1 at an eighth of the light pass's voxels. Float · default 0.5 · range 0 to 1

Light Map Step Size Lightmapstepsize - Step of the march towards each light, in light-volume voxels. 1 to 8: larger values are faster and coarser. Float · default 1 · min 1

Light Map Blur Passes Lightmapblurpasses - Blur passes on the density before the light volume is computed. Softens shadows; 0 keeps them sharp. Int · default 0

Operator Inputs

  • Input 0: Density T3D_in_density - RGB is the density per colour channel, so coloured density absorbs colours unequally (a red density lets red through). Alpha is the emission source when Emission is above 0; fluid's substance output fits as is, with temperature in alpha.

Operator Outputs

  • Output 0: Composited Render out1 - With Depth Compositing on, the finished frame: the Render TOP's scene with the volume in it. Off, unused; the volume draws itself inside the Render TOP.

Performance

GPU time when the operator recooks: 0.251 ms at 64³, 0.339 ms at 128³, all of its passes summed (GeForce RTX 4090, TouchDesigner 2025.33230). An operator whose inputs and parameters are unchanged does not recook and costs nothing.

That covers the light volume and the brick grid, which recook only on change. The camera march runs every frame the Render TOP renders; measured at 1920 × 1080, one point light, default lighting:

Density 64³ 128³ 256³
dense ball, radius 0.38 of the width 0.30 ms 0.55 ms 1.10 ms
same, Step Size 2 0.16 ms 0.30 ms 0.65 ms
sparse ball, radius 0.12 0.12 ms 0.22 ms 0.50 ms

The march scales with the pixels the box covers and with the volume's resolution along the ray. Step Size is the main lever for dense volumes; sparse volumes, such as a plume in a larger box, benefit from brick skipping without any setting.