Skip to content

Nodes · Blacksmith

KilnRender

Blacksmithv3app

Overview

EXPERIMENTAL — still being built. The Kiln gas as a 2D node: Read → KilnRender → Merge. It owns its own sim (the same knobs as Kiln) and renders it through camera over the plate wired to plate, in the plate's format, the render composited over the plate the way Render3D composites over its bg. matte makes a roto or a Crucible matte the emitter; depth (or the plate's own depth layer) holds the gas out behind what the plate already has in it; aov adds the data layers. Select it and the 3D viewport shows the gas being rendered while the viewer shows the render.

How to

How-to

  1. Read → KilnRender → Merge: wire the plate into plate and name the shot's Camera3D in camera.
  2. Pick a preset; the gas renders over the plate in the plate's format, through the shot's camera.
  3. matte makes a roto or Crucible matte the emitter; depth (or the plate's own depth layer) holds the gas out behind what is in the plate.
  4. plate_collider makes the plate's depth a wall the gas flows around.
  5. aov adds the data layers; deep writes deep samples for a deep comp. See kiln.

Inputs

InputWhat it takes
platethe original plate, for measurement
mattethe alpha that drives this node
depth—

Outputs

OutputType
outImage

Parameters

ParameterTypeDefaultWhat it does
txFloat0.0Translate X — position along the world X axis, metres.
tyFloat0.0Translate Y — position along the world Y axis (up), metres.
tzFloat0.0Translate Z — position along the world Z axis, metres. The camera looks down −Z.
rxFloat0.0Rotate around X, degrees.
ryFloat0.0Rotate around Y (turntable), degrees.
rzFloat0.0Rotate around Z (roll), degrees.
sxFloat1.0Scale along X. 1 = unchanged.
syFloat1.0Scale along Y.
szFloat1.0Scale along Z.
size_xFloat2.0The domain box's width in metres. The box stands on the node's origin and is centred on it in x and z.
size_yFloat3.0The domain box's height in metres, from the floor up.
size_zFloat2.0The domain box's depth in metres.
resolutionInt64Voxels across the box's longest side — the realtime-vs-quality dial. On the GPU 64 costs a few milliseconds a frame and 128 stays under 30 ms; without a GPU the CPU solver takes ~300 ms a frame at 64. Every axis rounds to whole 8³ bricks.
substepsInt1Solver steps per frame. 1 is right for gentle fog; fast jets and strong turbulence want 2–3 to keep the motion smooth.
cflFloat0.0Substeps by CFL: 0 keeps substeps fixed; 1–2 splits each frame until no cell's gas crosses more than that many cells per substep (from substeps up to 8). Fast fire stops smearing; slow fog costs nothing extra.
max_substepsInt8The ceiling on CFL substeps (see cfl). A budget, not a stability guarantee: raise it for fine voxels and fast gas and watch the step cost climb with it. The KILN badge says when the solve is asking for more than this, and a solve stepping past its ask can hold for a while and come apart later.
velocity_advectionChoicelinearHow the velocity is carried each substep. linear is a blur applied once per substep, so a shot is filtered a little more every frame (the lava-lamp look of a gas solver); cubic is 64 taps against 8, about half again on the step, and keeps 19% more at the grid's own Nyquist. EmberGen's ground fire runs cubic on both. linearcubic
voxel_advectionChoicelinearHow the smoke, heat, fuel, flames and age are carried each substep. linear blurs a little every frame; cubic keeps the edges and costs about half again on the step. The fog presets run cubic. linearcubic
shutterFloat0.0Shutter time as a fraction of a frame: 0.5 = 180°. How long the blur smears.
shutter_samplesInt9How many sub-frame samples the bake's velocity-warped motion blur takes across the shutter. 9 is smooth for a 180° shutter; fewer bands, more costs linearly.
bake_slicesInt1KQ-4's film tier: how many sub-frame slices a bake writes per frame. The solver steps each frame in that many equal parts and writes every part (slice 0 is the frame's file, the rest sit beside it as .s1, .s2 …); the render draws each slice and averages them — a box shutter over the frame, true for curved motion and for gas that appears mid-frame, which the velocity warp (shutter) is not. Costs that many renders a frame and that much disk. 1 = off. Slices take precedence over the warp.
density_thresholdFloat0.0Volume processing, on the way OUT: density below this is dropped before the grid is published or baked. In the field's own units (the badge's percentiles read off it). The gas itself is never touched, so a threshold is a look decision, not a different sim; changing it re-packs the running sim from a checkpoint and stales a bake on disk.
density_gainFloat1.0Volume processing: the published density multiplied, after the threshold. 1 = as solved.
density_gammaFloat1.0Volume processing: a power on the published density after the threshold and gain. 1 = as solved; above 1 thins the haze and keeps the core.
temperature_thresholdFloat0.0Volume processing: temperature below this publishes as 0. In the temperature's own units.
temperature_gainFloat1.0Volume processing: the published temperature multiplied. 1 = as solved.
flames_thresholdFloat0.0Volume processing: flames below this publish as 0 — crisp flame borders without changing what burns.
flames_gainFloat1.0Volume processing: the published flames multiplied. 1 = as solved.
loopInt0FS-7: bake a seamless loop of this many frames. The bake runs two copies of the sim N frames apart and crossfades them (Houdini's Make Loop), so the frame after the last is the first again; the cache plays it back wrapping, for as long as the shot runs. 0 = a plain bake. Set the range's start; its end is ignored.
upresInt1KQ-1's bake upres: the factor the bake's grid is finer than the live one (2 = twice the voxels per axis). Shape the shot live at a resolution that runs; the bake synthesises detail above the base grid's Nyquist with the same motion. 1 = off, which is every saved comp.
upres_octavesInt2How many octaves of detail the upres synthesises above the base grid (each halves the scale). 2 is a bake that reads sharper without reading different.
upres_strengthFloat1.0How strong the synthesised detail is against the base density. 1 = the detail at the base's own contrast; 0 = an upres that only interpolates.
startFloat1.0The shot's first frame of gas. Before it nothing draws. With preroll 0 the gas is one step old here (it was empty the frame before); with a preroll it is already up. To have gas at this frame, use preroll rather than an earlier start — the emitter window (emit_from) is a shot frame and would sit idle through the early frames.
prerollInt0Frames simulated before start with the emitter running, off-screen, so the gas is already up when the shot begins — a start of 60 with preroll 30 runs frames 30–59 without showing them. 30 gives a chimney a full plume at its start; 0 starts from empty.
fpsFloat24.0The shot's frame rate, so buoyancy, drag, rates and speeds are per SECOND and the look does not change with the project's fps.
emitterChoicesphereThe emitter's shape, placed in the domain's own space: a sphere, a box, or matte — the compositor's own: whatever is wired into the matte input (a Roto, a Crucible matte, any alpha) becomes the source, on a plane facing the camera-side z, emit_radius × 2 wide with the image's aspect, emitting through a slab emit_soft × 2 deep. Smoke comes off the roto's shape; an animated roto animates the source. sphereboxmattejet
jet_dir_xFloat0.0The Jet emitter's axis, x: the direction the cone of gas is fired along (a torch, a burner, a flamethrower). Normalised on use.
jet_dir_yFloat1.0The Jet emitter's axis, y. (0, 1, 0) fires straight up.
jet_dir_zFloat0.0The Jet emitter's axis, z.
jet_lengthFloat1.0How far the Jet's cone reaches along its axis, metres: emit_radius is the mouth at this distance and emit_soft is the nozzle at the source.
emit_xFloat0.0Emitter centre x, metres from the domain's floor centre.
emit_yFloat0.3Emitter centre height above the floor, metres.
emit_zFloat0.0Emitter centre z, metres from the domain's floor centre.
emit_radiusFloat0.25The emitter's radius (sphere) or half-width (box), metres.
emit_softFloat0.1Metres over which the emitter fades at its edge. 0 is a hard shape.
emit_densityFloat6.0Smoke added per second inside the emitter. 0 emits heat alone — an invisible updraft.
emit_temperatureFloat1.0The temperature the gas is pushed toward inside the emitter (0 = ambient). Heat is what makes it rise.
emit_heat_rateFloat12.0How fast the gas inside the emitter reaches emit_temperature, per second. High = an instant hot source; low = a slow warm-up.
emit_vxFloat0.0Velocity the emitter pushes the gas toward, x (m/s). With emit_velocity_rate 0 the emitter only adds material.
emit_vyFloat0.0Velocity the emitter pushes the gas toward, y — up (m/s). A jet.
emit_vzFloat0.0Velocity the emitter pushes the gas toward, z (m/s).
emit_velocity_rateFloat0.0How strongly the emitter imposes its velocity, per second. 0 = none; 10+ = a nozzle.
emit_fuelFloat0.0Fuel the emitter adds per second. 0 is a smoke or fog sim. Fuel is carried by the gas and burns where it is hot enough (ignition), into flames, heat and smoke — the Fire page sets how. The Torch, Campfire, Gas jet, Candle and Burning debris presets start from here.
emit_paintFloat0.0FS-9: the paint this source injects, 0 to 1 — the tracer colour. A voxel's paint is the density-weighted mix of what was there and what arrived, so two sources painting 0 and 1 meet in the middle. The Shading reads it through the ramp with scatter_by = paint; every emitter node has its own.
emit_colorColor[1.0, 1.0, 1.0, 1.0]RGB paint: the colour this source's gas carries. Where gases of different colours meet they mix like dye (density-weighted, per channel): red and blue make purple, blue and gold make green, with no ramp between them. White = undyed (and a sim where every source is white carries no dye at all). Seen with scatter_by = dye, where the colour IS the smoke's albedo; every emitter node has its own.
flammableBoolfalseFS-8: the walls catch fire. Every wall this sim has — the plate's depth, a scene mesh, a placed box or sphere — lights where the gas beside it is hotter than flammable_temp for flammable_dwell frames; a lit cell injects fuel, heat and smoke for flammable_fuel seconds, and the fire spreads over the wall at flammable_spread cells a second, downwind of the gas. The KILN badge says how much burns. Off = the sim as it was.
flammable_tempFloat0.6The temperature the gas beside a wall cell must reach before the cell starts to catch (the solver's temperature units; a torch's core is 1).
flammable_dwellInt3How many frames the gas must stay that hot beside a cell before it lights. A spark passing by does not; a torch held there does.
flammable_fuelFloat3.0How long a lit cell burns, seconds, before it is spent. Spent cells never relight.
flammable_spreadFloat6.0How fast the fire runs over the wall: wall cells a second each burning cell lights. Half the time downwind of the gas, half anywhere, so fire climbs with an updraft and runs with a wind. 0 = only what the gas itself lights.
flammable_burnFloat6.0Fuel a second each burning cell injects into the gas beside it; the solver burns it into flames, heat and smoke as it burns any fuel (combustion, ignition, burn_rate).
flammable_heatFloat1.0The temperature a burning cell pushes the gas beside it toward.
flammable_smokeFloat2.0Density a second a burning cell injects — the smoke off the burning surface.
spray_rateFloat0.0The emitter's PARTICLES: splats a second born in the emitter's shape and riding the gas, each injecting its own small puff. 0 = off (a smooth field, which burns as one mass); above 0 the shape becomes the birth region and what emits is thousands of small splats — EmberGen's Emitter: Particles, and where their fire's structure comes from.
spray_lifeFloat0.3How long a spray particle lives, seconds, before it stops injecting.
spray_life_varFloat0.35How much the life varies per particle, as a fraction (0.35 = ±35%), so the spray dies raggedly instead of on one frame.
spray_radiusFloat0.02The puff each spray particle injects, metres. Small against the emitter is what makes structure.
spray_radius_varFloat0.4How much the puff radius varies per particle, as a fraction.
spray_shrinkFloat0.0How fast a particle's puff shrinks over its life (0 = constant; 1 = gone by the end).
spray_speedFloat0.4The speed a spray particle is born with, m/s, along spray_dir spread by spray_spread.
spray_dir_xFloat0.0The spray's birth direction, x. Normalised on use.
spray_dir_yFloat1.0The spray's birth direction, y. (0, 1, 0) = up.
spray_dir_zFloat0.0The spray's birth direction, z.
spray_spreadFloat1.0How far off the birth direction the particles scatter (0 = a beam, 1 = a hemisphere).
spray_followFloat12.0How hard a spray particle is pulled toward the gas's own velocity, per second. High = the particles are the gas; low = they carry their birth speed through it.
spray_gravityFloat0.0Gravity on the spray particles, m/s² downward. 0 = they ride the gas alone.
spray_dragFloat0.5How fast a spray particle's own speed decays, per second.
spray_maxInt120000The most spray particles alive at once. A cap on the cost; when it binds the oldest are dropped.
emit_fromFloat1.0First frame the emitter is on.
emit_toFloat1000000.0Last frame the emitter is on. A short window makes a puff; leave it high for a steady source.
buoyancyFloat4.0Lift per unit of temperature above ambient, m/s² — the heat's pull upward. 4 is a lively plume; 1 is lazy.
weightFloat0.1How much smoke weighs, m/s² per unit of density: heavy smoke sinks and pools (fog); 0 neither sinks nor rises on its own.
vorticityFloat0.3Vorticity confinement: puts the small swirls back that the grid smooths away. 0.3 is natural; 1+ is ropey and turbulent.
dragFloat0.05Velocity lost per second. Kills momentum so the gas settles instead of coasting forever.
dissipationFloat0.02Smoke lost per second (fraction). 0 keeps every wisp; 0.1 clears fast.
coolingFloat0.4How fast heat returns to ambient, per second. High cooling: the plume stops rising soon after it leaves the source.
wind_xFloat0.0A steady wind the gas is pulled toward, x (m/s).
wind_yFloat0.0A steady wind, y — up (m/s).
wind_zFloat0.0A steady wind, z (m/s).
wind_couplingFloat0.5How strongly the gas follows the wind, per second. 0.5 is a breeze that lets the plume keep its own shape; 5 drags it bodily.
turbulenceFloat1.0Curl-noise stirring, m/s². 0 is calm; 1–2 breaks a plume into billows. Divergence-free, so it never piles gas up.
turbulence_sizeFloat0.5The size of the turbulence's largest swirls, metres.
turbulence_speedFloat0.5How fast the turbulence pattern evolves, per second. 0 freezes it in space.
disturbanceFloat0.0Disturbance (Pyro's Gas Disturb): a random push, in m/s², per block of disturbance_size metres, new every substep, where the gas is hotter than disturbance_from — high-frequency break-up of the flame's surface without changing its bulk motion. 2–4 for fire; 0 off.
disturbance_sizeFloat0.15The block size of the disturbance in metres — the scale of the break-up. 5 cm shreds a torch's surface; 20 cm churns a bonfire.
disturbance_fromFloat0.2Disturbance acts where the temperature is above this (a soft gate a quarter of it wide), so the flame breaks up and the smoke above it is left alone. 0 acts wherever there is material.
shreddingFloat0.0Shredding (Pyro's Gas Shred): the flow is turned along the temperature gradient at this rate per second, at its own speed — no speed added — which is the licking of flames at their tips. 2–4 for fire; 0 off. A weak gradient turns weakly.
shred_fromFloat0.1Shredding acts where the temperature is above this (a soft gate a quarter of it wide). 0 acts wherever there is material.
sharpenFloat0.0Sharpening: anti-diffusion on the density at this rate per second — each voxel pulled away from its neighbours' mean, never below zero — so the smoke's edges hold against the advection's smear. 0.5–1 for defined smoke; 0 off.
seedInt7The variation seed for the turbulence. Same seed, same gas.
pressure_itersInt40Pressure solve passes per step. 40 is the look; fewer is faster and slightly puffier; more is exact.
floorBooltrueThe floor is a wall: the gas cannot sink through it, so fog pools. Off, every face of the box is open.
combustionChoicesimpleHow fuel burns. simple burns fuel wherever it is hot enough — a glowing mass. diffusion burns at the INTERFACE where fuel meets air (an oxidiser field on both solvers; stoich sets how much air a unit of fuel needs): the wrinkled sheet a real flame is, and about 1.7% of the emission, so the fire look is re-dialled with it. simplediffusion
stoichFloat10.0Diffusion combustion: how much air a unit of fuel needs to burn. Higher makes the flame sheet thinner and further from the fuel.
burn_chaosFloat0.0Combustion chaos: the reaction rate wrinkled by a rising, vertically stretched noise, so the sheet burns in filaments instead of evenly. This is the knob that turns a lit shape into tongues. 0 = off.
burn_chaos_sizeFloat0.15The size of the combustion chaos's wrinkles, metres.
burn_chaos_speedFloat1.5How fast the combustion chaos rises through the flame, m/s.
ignitionFloat0.3The temperature fuel must reach to burn (a soft gate a quarter of it wide). The emitter's own emit_temperature is what lights a torch; 0 burns fuel wherever it is.
burn_rateFloat8.0How fast lit fuel burns: the fraction of a voxel's fuel consumed per second. Faster is a shorter, hotter, crisper flame; slower fuel travels further before it burns.
heat_yieldFloat2.0Heat per unit of fuel burnt, in temperature units (1 is the temperature fire_kelvin maps to). More lifts the flame harder and shifts its colour hotter.
smoke_yieldFloat0.25Smoke (density) per unit of fuel burnt: 0 for a clean gas flame, 0.3 for a campfire, 0.8 for burning debris.
expansionFloat0.5How much burning gas pushes outward, as the divergence the pressure solve leaves per unit of fuel burnt per second. The whoomph of a fireball; 0 keeps the gas incompressible.
flame_lifeFloat0.2Seconds a flame lingers where nothing is burning any more (the flames field decays by e^(−t/life)). Short for a gas jet, longer for lazy licking flames.
fire_kelvinFloat1800.0The blackbody colour at temperature 1 (the emitter's emit_temperature scale), in kelvin: 1600 a sooty orange, 1900 a torch, 2600 a blue-white gas flame. Hotter voxels map beyond it.
fire_kelvin_ambientFloat1000.0The blackbody colour at temperature 0, in kelvin — the coolest a glowing voxel reads (the table starts at 1000 K, deep red).
fire_intensityFloat4.0Brightness of the flames at the reference temperature (fire_kelvin), scene-linear. With fire_physical on, hotter voxels are brighter by T⁴ from here; cooler ones dimmer.
fire_physicalBooltruePhysically bright fire (KQ-3): the blackbody's radiance keeps its T⁴ magnitude relative to fire_kelvin, so an ember and the core differ by the orders of magnitude that are the fire look. Off: colour only, one brightness — the stylised reading.
fire_emit_lowFloat0.0The flames' emit range, low end: where the flames field (fuel burnt per second) is below this nothing glows — the border of the flame gets crisp instead of fading out. 0 with fire_emit_high 0 leaves the field as it is.
fire_emit_highFloat0.0The flames' emit range, high end: above this the glow is flat at the high value — a flat bright core rather than a hot spot. Try 1 and 6 on a torch. 0 with fire_emit_low 0 leaves the field as it is.
fire_glowFloat0.0Fire lights its own smoke: the flames field IS a light, gathered over a small neighbourhood. 0 = off (the look every saved comp has); above it a torch in a dark room has orange smoke over it instead of black. The gain of that light.
fire_glow_radiusFloat0.15How far the flames' glow reaches into the smoke, metres.
light_gridBoolfalseThe cached light grid (KQ-7): the shadow toward the key light and toward the sky is marched to the volume's edge from a coarse grid once per frame, instead of eight short steps at every sample. Shadows reach the whole volume and are soft; dense gas stops leaking light. Off keeps the look every saved comp has; the fog and smoke presets turn it on.
energyBoolfalseFS-9's energy shading: the gas itself glows, through the four-stop ramp over the colour field (ramp_by) — no blackbody, no fuel. For spells, wisps, auras and portals. Set smoke_albedo to 0 alongside for glow alone; the presets do.
ramp_byChoiceageWhat the ramp reads: age — the age tracer, seconds since the gas was emitted (white where born, dark where old: trails); temperature — the heat; density — the gas itself (a two-tone core and halo). agetemperaturedensitypaint
ramp_lowFloat0.0The colour field's value that reads as the ramp's first stop. Seconds for age, degrees for temperature, density for density.
ramp_highFloat2.0The colour field's value that reads as the ramp's last stop; between the two the four stops are evenly spaced, and past either end the ramp holds.
scatter_byChoicenoneFS-9: the smoke's colour from a field through the four-stop ramp instead of the smoke colour: paint (what the sources injected — two paints mix where they meet), age (how long the gas has been out), temperature — or dye, the sources' own colours (emit_color) with no ramp at all: any number of colours mixing like dye. The ramp is the same one energy shading uses (ramp_0..3, ramp_low/high). The colour field rides the temperature slot, so on a burning sim the blackbody loses its temperature grid to it. none = the plain smoke colour. nonepaintagetemperaturedye
energy_intensityFloat2.0How bright the glow is per unit density, in the ramp's colours.
ramp_0_rFloat1.0The energy ramp: the first stop, at ramp_low — red.
ramp_0_gFloat1.0The energy ramp: the first stop, at ramp_low — green.
ramp_0_bFloat1.0The energy ramp: the first stop, at ramp_low — blue.
ramp_1_rFloat0.45The energy ramp: the second stop, a third of the way up — red.
ramp_1_gFloat0.8The energy ramp: the second stop, a third of the way up — green.
ramp_1_bFloat1.0The energy ramp: the second stop, a third of the way up — blue.
ramp_2_rFloat0.55The energy ramp: the third stop, two thirds up — red.
ramp_2_gFloat0.2The energy ramp: the third stop, two thirds up — green.
ramp_2_bFloat1.0The energy ramp: the third stop, two thirds up — blue.
ramp_3_rFloat0.05The energy ramp: the last stop, at ramp_high — red.
ramp_3_gFloat0.0The energy ramp: the last stop, at ramp_high — green.
ramp_3_bFloat0.12The energy ramp: the last stop, at ramp_high — blue.
unlit_ambientFloat1.0The flat light on the gas when the scene has NO lights. 1 = what shipped: a white sky that is not there, which on a fire in a dark scene lights the thin smoke into a grey halo. The fire and energy presets run 0, so only the flame lights its own smoke. Inert once the scene has a light.
fire_opacityFloat0.0How much the FLAMES field extinguishes light. 0 = fire as a purely additive emitter, which cannot hide its own core, so a thick flame integrates into a saturated mass with no dark interior. Above 0 only the near surface glows and the inside goes dark behind it — the translucent-sheet look of EmberGen's default fire.
ms_octavesInt0Wrenninge's octave multiple scattering, under Karma's knob names. Octaves of scattering beyond the first: 0 = single scatter (what shipped), 2–3 = thick smoke bright in the middle and soft at its edge instead of a dark mass with a lit rim. Nearly free.
ms_extinctionFloat0.5Multiple scattering: each octave sees the medium thinner by this factor (Karma's extinction modifier). 0.5 is the usual.
ms_contributionFloat0.5Multiple scattering: each octave contributes this fraction of the one before (Karma's contribution modifier). Raise it to bring Live's interior brightness toward Final's.
ms_phaseFloat0.5Multiple scattering: each octave scatters more broadly by this factor on the anisotropy (Karma's phase modifier).
sky_occlusionFloat0.0A dome light occluded by the gas above a voxel — what makes a fog bank darker underneath than on top. 0 = the flat ambient fill every saved comp has; 1 = the sky fully shadowed by the gas above. With light_grid on, the occlusion is marched to the volume's edge.
rendererChoicelivelive: the raymarch (what the viewport draws, what every saved comp has). final: the Final renderer — a volumetric path tracer over the same gas, lights and look: no step size, every light sampled directly with an exact transmittance, real multiple scattering up to bounces, a dome occluded by the gas above. Slower by spp; deterministic. The bake renders with it too. livefinal
sppInt16Final renderer: samples a pixel a render. 16 is a look-dev preview with grain; 64–256 is a frame worth keeping. The cost is linear in it.
bouncesInt4Final renderer: how many times light may scatter inside the gas. 1 is single scattering (the march's model, exactly integrated); 4–8 lights the inside of thick smoke and softens its edges the way a film volume renderer does.
pt_seedInt0Final renderer: the noise pattern's seed. The frame number is added, so no two frames share their noise and the same frame renders the same twice.
denoiseChoiceoffCleans a Final render's noise, on the SCATTERED light only (the fire, the alpha and the depth are never touched). ai = Intel Open Image Denoise: clean frames at a fraction of the samples, on the GPU where it can; where its library is not installed it falls back to spatial and the panel says so. spatial = an edge-aware à-trous filter, the same answer every run. Off by default. offspatialai
denoise_passesInt3How wide the denoise reaches: à-trous passes, 1 (a 5×5) to 6 (the whole frame). 3 is the usual.
march_stepFloat1.5How far the viewport's march steps, in voxels. 1.5 is what shipped and is coarse (it undersamples the grid); 0.75 is the presets'; under 1 costs proportionally and is what a final frame wants. The Final renderer has no step.
sharpen_smokeFloat0.0Raymarch sharpening (EmberGen's name): an unsharp mask on the density as it is SAMPLED, so a grid too coarse to hold an edge still renders one. Their default fire runs all three at 2.5. 0 = off.
sharpen_flamesFloat0.0Raymarch sharpening on the flames field as it is sampled: crisper tongues from the same grid. 0 = off.
sharpen_temperatureFloat0.0Raymarch sharpening on the temperature field as it is sampled: crisper colour edges in the fire. 0 = off.
sharpen_radiusFloat1.0The raymarch sharpening's tap radius, voxels. 1 sharpens the finest edges; larger sharpens broader structure.
smoke_albedoFloat0.7How much light the smoke scatters back: 0.7 is grey-white fog and steam, 0.4 a campfire's smoke, 0.12 the soot off burning debris. A VolumeShade wired after the Kiln overrides the whole look.
density_scaleFloat1.0How much one unit of density extinguishes light, per metre (units world) or per voxel. The first dial for how thick the gas reads; the shadows and the alpha follow it.
anisotropyFloat0.2The scattering's forward bias (Henyey-Greenstein g), −0.9 to 0.9. 0 scatters evenly; 0.2–0.5 is smoke, brighter toward the light behind it; negative scatters back.
shadow_densityFloat1.0How hard the gas shadows itself: the density seen by the shadow toward the key light and the sky, as a multiple of density_scale. Under 1 lets light deeper in than the alpha says; an art-direction dial.
embersFloat0.0Embers born per second in the flames — sparks that ride the gas up and out, glowing, cooling and dying. 0 is off. 40 for a campfire, 60 for burning wreckage, a dozen for a torch. Drawn as glowing dots with the gas, in the viewport and the render; a bake writes them beside its frames (<label>.embers.json) and plays them back.
ember_fromFloat2.0Embers are born where flames (fuel burnt per second) is above this, weighted by how hard the voxel burns. Higher keeps them to the fire's core.
ember_lifeFloat1.5Seconds an ember lives, give or take ember_life_var of it.
ember_life_varFloat0.5How much lives vary, 0–1 of ember_life: 0 is a uniform lifetime, 0.6 a spread from short flickers to long travellers.
ember_kickFloat1.5The upward kick at birth, m/s, on top of the gas's own velocity — how far an ember leaps out of the flame before the gas takes over.
ember_followFloat4.0How fast an ember's motion is pulled toward the gas's (1/s): high and it is carried like smoke, low and it flies its own arc.
ember_gravityFloat1.0Downward pull on the embers, m/s². Light ash rises on the gas at 0.5; a heavy cinder falls at 3.
ember_dragFloat0.5Velocity lost per second. More settles an ember into the gas sooner.
ember_coolFloat0.8Heat lost per second: 1 → white-hot at birth, cooling through orange to dark. Faster and they wink out; slower and they trail glowing.
ember_glowFloat6.0Brightness at full heat, scene-linear; it falls with the square of the heat as an ember cools.
ember_kelvinFloat1800.0The blackbody colour at full heat; an ember cools toward the table's deep red at 1000 K.
ember_sizeFloat3.0Dot size on screen, pixels — constant at any distance (the point-cloud dot path).
ember_maxInt4000The most embers alive at once; the oldest die first past it. A cap so a long shot cannot quietly grow unrenderable.
ember_seedInt11The embers' own seed: the same seed, gas and frame birth the same embers, live, on a resume from a checkpoint and in a bake.
unitsChoiceworldWhat one unit of density means to the renderer: world integrates per metre (the physical reading, the default for a new node); voxel per index voxel. voxelworld
networkTextThe sim network inside this node — Domain, Solver, emitters, forces, Input and Output nodes wired into typed ports — as one value (dive in to edit it; never a text field). Empty is the default network: this panel's sections as nodes, every knob promoted to the panel. An inner knob set inside beats the panel; a promoted one follows it.
bake_dirTextWhere ⚒ Bake writes its frames. Empty keeps every project in its own folder (kiln/<project> beside the script); point it anywhere for a shared cache. The frames are .vdb files any DCC opens.
bake_labelTextWhat the baked frames are called (<label>.####.vdb). Empty uses the node's name. A manifest beside them names the bake's owner, so another node pointed at the same files never plays a mix of two sims.
bake_gridsChoicedensity temperatureWhich grids a bake writes per frame: density alone; density temperature (the default — what the shading reads); or with vel too — the velocity as one vec3 grid, the way Houdini's and Karma's motion blur read it. Half precision, zip-compressed; more grids, bigger files. densitydensity temperaturedensity temperature velocitydensity temperature agedensity temperature velocity agedensity temperature paintdensity temperature velocity age paint
bakedTextThe last bake's frame pattern. While its fingerprint still matches the sim, the node plays from these files instead of simulating — at speed, whatever the sim weighs, and scrubbing is free. A sim knob change makes it stale (the badge says so) and the sim runs live again; the re-bake is your click, never a silent re-sim. Clear bake goes live and leaves the files.
baked_hashTextThe spec fingerprint the bake was simulated from — every sim knob, the emitters, the forces, the domain. Shading and render knobs are not in it, so a look change never stales the volume cache: bake the motion, keep shading live.
baked_rangeTextThe frames the bake covers. Outside them the sim runs live.
baked_loopTextWritten by the Bake: the loop length the frames on disk close over, or empty for a plain bake. The cook wraps playback by it.
cameraTextThe Camera3D to render through, by node name — the plate's solved camera, so the gas sits in the shot. Empty frames the domain from a fixed angle.
lightsTextThe shot's lights, by scene node name — a Scene3D, a chain of Light3D nodes, a relight rig's lights. Their lights light the gas (up to eight: scatter, the shadowed key's self-shadowing) and their geometry stands in the frame beside it, casting and receiving. Empty = the gas unlit, lit only by its own fire.
lightgroupsBoolfalseOne beauty per light beside rgba (lightgroup.<light>), summing to the beauty — the gas and the geometry split per light, so each light regrades on its own downstream, the Render3D contract.
aovChoicenoneData layers beside rgba: depth adds the scene depth; full adds the volume AOVs too — volume.transmittance, volume.emission, volume.scatter and volume.depth (the T=0.5 crossing) — so the fog grades in 2D. none costs nothing. nonedepthfull
deepBoolfalseKQ-6: Bake AOVs also writes a DEEP OpenEXR beside each flat frame (<stem>.deep.####.exr): per pixel, ordered volume segments — Z, ZBack, A and the beauty's colour apportioned by coverage — that composite back to the flat beauty exactly. For a DeepMerge with a CG element or a DeepHoldout against a deep plate. Off = the flat files alone.
depth_layerTextdepthThe plate's depth layer, used as the holdout when nothing is wired to depth: camera-axis distance per pixel, the Render3D depth convention. A plate without that layer holds nothing out.
plate_colliderBoolfalseThe plate's depth as a WALL: with a camera named and a depth pass on the plate (or a depth wired in), the gas stops at the scene the plate shows — it pools against the floor and flows around the actor. Off = the gas ignores the plate.
collider_sourceChoicedepthWhere the plate wall comes from. depth: the depth pass placed through camera. position: a P pass, which needs no camera. The panel says which one is missing when the wall cannot be built. depthposition
position_layerTextPThe plate's position (P) pass, by layer name, when collider_source is position.
normal_layerTextNThe plate's normal (N) pass, by layer name — thickens the wall along the surface normal so the gas cannot slip between the pass's pixels.
collider_objectsTextCryptomatte objects that ARE the wall (names or hex ids, comma separated), so the actor blocks the gas and the background does not. Empty = the whole plate.
crypto_layerTextCryptoObjectThe cryptomatte layer collider_objects picks from.
collider_motionBoolfalseThe wall moves: the gas is pushed by the plate's motion frame to frame (the wall's velocity from the pass at t against t−1). Off = a still wall.
plate_thicknessFloat0.25How thick the plate wall is, metres. A thin wall lets gas leak through where the depth pass is noisy; thicker holds it.
format_widthInt1920The render's width when no plate is wired; a wired plate sets the format.
format_heightInt1080The render's height when no plate is wired; a wired plate sets the format.
aov_bakedTextThe last ⚒ Bake AOVs frame pattern (<label>.aov.####.exr, one multilayer EXR per frame: rgba and every AOV, whatever aov says). While its fingerprint still matches, the node plays these files instead of rendering — the gas comps at disk speed, and the same EXRs go to any DCC. Clear AOV bake renders live again and leaves the files.
aov_baked_hashTextThe fingerprint the AOV bake was rendered from: the sim's, every knob of this node (animated ones as their curves), the camera it renders through, the frame's size and where the holdout comes from. A change to any of them makes the bake stale and the node renders live. The plate's and depth pass's pixels are not in it — Clear the bake after regrading them.
aov_baked_rangeTextThe frames the AOV bake covers. Outside them the node renders live.
slotInt0The live-stream slot this node reads. Slots are process-wide; the same number in two nodes is the same stream.
disabledBoolfalseBypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back.
labelTextA note shown under the node in the graph — what this node is FOR. Never affects the render or the cache.
hide_inputBoolfalseDraw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap).

See also

  • The 3D system — How to put geometry, cameras and volumes in the comp — without becoming a 3D application.