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
- Read → KilnRender → Merge: wire the plate into
plateand name the shot's Camera3D incamera. - Pick a preset; the gas renders over the plate in the plate's format, through the shot's camera.
mattemakes 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.plate_collidermakes the plate's depth a wall the gas flows around.aovadds the data layers;deepwrites deep samples for a deep comp. See kiln.
Inputs
| Input | What it takes |
|---|---|
| plate | the original plate, for measurement |
| matte | the alpha that drives this node |
| depth | — |
Outputs
| Output | Type |
|---|---|
| out | Image |
Parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
| tx | Float | 0.0 | Translate X — position along the world X axis, metres. |
| ty | Float | 0.0 | Translate Y — position along the world Y axis (up), metres. |
| tz | Float | 0.0 | Translate Z — position along the world Z axis, metres. The camera looks down −Z. |
| rx | Float | 0.0 | Rotate around X, degrees. |
| ry | Float | 0.0 | Rotate around Y (turntable), degrees. |
| rz | Float | 0.0 | Rotate around Z (roll), degrees. |
| sx | Float | 1.0 | Scale along X. 1 = unchanged. |
| sy | Float | 1.0 | Scale along Y. |
| sz | Float | 1.0 | Scale along Z. |
| size_x | Float | 2.0 | The domain box's width in metres. The box stands on the node's origin and is centred on it in x and z. |
| size_y | Float | 3.0 | The domain box's height in metres, from the floor up. |
| size_z | Float | 2.0 | The domain box's depth in metres. |
| resolution | Int | 64 | Voxels 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. |
| substeps | Int | 1 | Solver steps per frame. 1 is right for gentle fog; fast jets and strong turbulence want 2–3 to keep the motion smooth. |
| cfl | Float | 0.0 | Substeps 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_substeps | Int | 8 | The 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_advection | Choice | linear | How 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_advection | Choice | linear | How 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 |
| shutter | Float | 0.0 | Shutter time as a fraction of a frame: 0.5 = 180°. How long the blur smears. |
| shutter_samples | Int | 9 | How 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_slices | Int | 1 | KQ-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_threshold | Float | 0.0 | Volume 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_gain | Float | 1.0 | Volume processing: the published density multiplied, after the threshold. 1 = as solved. |
| density_gamma | Float | 1.0 | Volume 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_threshold | Float | 0.0 | Volume processing: temperature below this publishes as 0. In the temperature's own units. |
| temperature_gain | Float | 1.0 | Volume processing: the published temperature multiplied. 1 = as solved. |
| flames_threshold | Float | 0.0 | Volume processing: flames below this publish as 0 — crisp flame borders without changing what burns. |
| flames_gain | Float | 1.0 | Volume processing: the published flames multiplied. 1 = as solved. |
| loop | Int | 0 | FS-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. |
| upres | Int | 1 | KQ-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_octaves | Int | 2 | How 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_strength | Float | 1.0 | How strong the synthesised detail is against the base density. 1 = the detail at the base's own contrast; 0 = an upres that only interpolates. |
| start | Float | 1.0 | The 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. |
| preroll | Int | 0 | Frames 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. |
| fps | Float | 24.0 | The shot's frame rate, so buoyancy, drag, rates and speeds are per SECOND and the look does not change with the project's fps. |
| emitter | Choice | sphere | The 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_x | Float | 0.0 | The 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_y | Float | 1.0 | The Jet emitter's axis, y. (0, 1, 0) fires straight up. |
| jet_dir_z | Float | 0.0 | The Jet emitter's axis, z. |
| jet_length | Float | 1.0 | How 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_x | Float | 0.0 | Emitter centre x, metres from the domain's floor centre. |
| emit_y | Float | 0.3 | Emitter centre height above the floor, metres. |
| emit_z | Float | 0.0 | Emitter centre z, metres from the domain's floor centre. |
| emit_radius | Float | 0.25 | The emitter's radius (sphere) or half-width (box), metres. |
| emit_soft | Float | 0.1 | Metres over which the emitter fades at its edge. 0 is a hard shape. |
| emit_density | Float | 6.0 | Smoke added per second inside the emitter. 0 emits heat alone — an invisible updraft. |
| emit_temperature | Float | 1.0 | The temperature the gas is pushed toward inside the emitter (0 = ambient). Heat is what makes it rise. |
| emit_heat_rate | Float | 12.0 | How fast the gas inside the emitter reaches emit_temperature, per second. High = an instant hot source; low = a slow warm-up. |
| emit_vx | Float | 0.0 | Velocity the emitter pushes the gas toward, x (m/s). With emit_velocity_rate 0 the emitter only adds material. |
| emit_vy | Float | 0.0 | Velocity the emitter pushes the gas toward, y — up (m/s). A jet. |
| emit_vz | Float | 0.0 | Velocity the emitter pushes the gas toward, z (m/s). |
| emit_velocity_rate | Float | 0.0 | How strongly the emitter imposes its velocity, per second. 0 = none; 10+ = a nozzle. |
| emit_fuel | Float | 0.0 | Fuel 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_paint | Float | 0.0 | FS-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_color | Color | [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. |
| flammable | Bool | false | FS-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_temp | Float | 0.6 | The 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_dwell | Int | 3 | How 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_fuel | Float | 3.0 | How long a lit cell burns, seconds, before it is spent. Spent cells never relight. |
| flammable_spread | Float | 6.0 | How 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_burn | Float | 6.0 | Fuel 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_heat | Float | 1.0 | The temperature a burning cell pushes the gas beside it toward. |
| flammable_smoke | Float | 2.0 | Density a second a burning cell injects — the smoke off the burning surface. |
| spray_rate | Float | 0.0 | The 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_life | Float | 0.3 | How long a spray particle lives, seconds, before it stops injecting. |
| spray_life_var | Float | 0.35 | How much the life varies per particle, as a fraction (0.35 = ±35%), so the spray dies raggedly instead of on one frame. |
| spray_radius | Float | 0.02 | The puff each spray particle injects, metres. Small against the emitter is what makes structure. |
| spray_radius_var | Float | 0.4 | How much the puff radius varies per particle, as a fraction. |
| spray_shrink | Float | 0.0 | How fast a particle's puff shrinks over its life (0 = constant; 1 = gone by the end). |
| spray_speed | Float | 0.4 | The speed a spray particle is born with, m/s, along spray_dir spread by spray_spread. |
| spray_dir_x | Float | 0.0 | The spray's birth direction, x. Normalised on use. |
| spray_dir_y | Float | 1.0 | The spray's birth direction, y. (0, 1, 0) = up. |
| spray_dir_z | Float | 0.0 | The spray's birth direction, z. |
| spray_spread | Float | 1.0 | How far off the birth direction the particles scatter (0 = a beam, 1 = a hemisphere). |
| spray_follow | Float | 12.0 | How 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_gravity | Float | 0.0 | Gravity on the spray particles, m/s² downward. 0 = they ride the gas alone. |
| spray_drag | Float | 0.5 | How fast a spray particle's own speed decays, per second. |
| spray_max | Int | 120000 | The most spray particles alive at once. A cap on the cost; when it binds the oldest are dropped. |
| emit_from | Float | 1.0 | First frame the emitter is on. |
| emit_to | Float | 1000000.0 | Last frame the emitter is on. A short window makes a puff; leave it high for a steady source. |
| buoyancy | Float | 4.0 | Lift per unit of temperature above ambient, m/s² — the heat's pull upward. 4 is a lively plume; 1 is lazy. |
| weight | Float | 0.1 | How much smoke weighs, m/s² per unit of density: heavy smoke sinks and pools (fog); 0 neither sinks nor rises on its own. |
| vorticity | Float | 0.3 | Vorticity confinement: puts the small swirls back that the grid smooths away. 0.3 is natural; 1+ is ropey and turbulent. |
| drag | Float | 0.05 | Velocity lost per second. Kills momentum so the gas settles instead of coasting forever. |
| dissipation | Float | 0.02 | Smoke lost per second (fraction). 0 keeps every wisp; 0.1 clears fast. |
| cooling | Float | 0.4 | How fast heat returns to ambient, per second. High cooling: the plume stops rising soon after it leaves the source. |
| wind_x | Float | 0.0 | A steady wind the gas is pulled toward, x (m/s). |
| wind_y | Float | 0.0 | A steady wind, y — up (m/s). |
| wind_z | Float | 0.0 | A steady wind, z (m/s). |
| wind_coupling | Float | 0.5 | How 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. |
| turbulence | Float | 1.0 | Curl-noise stirring, m/s². 0 is calm; 1–2 breaks a plume into billows. Divergence-free, so it never piles gas up. |
| turbulence_size | Float | 0.5 | The size of the turbulence's largest swirls, metres. |
| turbulence_speed | Float | 0.5 | How fast the turbulence pattern evolves, per second. 0 freezes it in space. |
| disturbance | Float | 0.0 | Disturbance (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_size | Float | 0.15 | The 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_from | Float | 0.2 | Disturbance 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. |
| shredding | Float | 0.0 | Shredding (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_from | Float | 0.1 | Shredding acts where the temperature is above this (a soft gate a quarter of it wide). 0 acts wherever there is material. |
| sharpen | Float | 0.0 | Sharpening: 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. |
| seed | Int | 7 | The variation seed for the turbulence. Same seed, same gas. |
| pressure_iters | Int | 40 | Pressure solve passes per step. 40 is the look; fewer is faster and slightly puffier; more is exact. |
| floor | Bool | true | The floor is a wall: the gas cannot sink through it, so fog pools. Off, every face of the box is open. |
| combustion | Choice | simple | How 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 |
| stoich | Float | 10.0 | Diffusion combustion: how much air a unit of fuel needs to burn. Higher makes the flame sheet thinner and further from the fuel. |
| burn_chaos | Float | 0.0 | Combustion 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_size | Float | 0.15 | The size of the combustion chaos's wrinkles, metres. |
| burn_chaos_speed | Float | 1.5 | How fast the combustion chaos rises through the flame, m/s. |
| ignition | Float | 0.3 | The 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_rate | Float | 8.0 | How 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_yield | Float | 2.0 | Heat 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_yield | Float | 0.25 | Smoke (density) per unit of fuel burnt: 0 for a clean gas flame, 0.3 for a campfire, 0.8 for burning debris. |
| expansion | Float | 0.5 | How 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_life | Float | 0.2 | Seconds 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_kelvin | Float | 1800.0 | The 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_ambient | Float | 1000.0 | The blackbody colour at temperature 0, in kelvin — the coolest a glowing voxel reads (the table starts at 1000 K, deep red). |
| fire_intensity | Float | 4.0 | Brightness 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_physical | Bool | true | Physically 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_low | Float | 0.0 | The 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_high | Float | 0.0 | The 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_glow | Float | 0.0 | Fire 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_radius | Float | 0.15 | How far the flames' glow reaches into the smoke, metres. |
| light_grid | Bool | false | The 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. |
| energy | Bool | false | FS-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_by | Choice | age | What 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_low | Float | 0.0 | The colour field's value that reads as the ramp's first stop. Seconds for age, degrees for temperature, density for density. |
| ramp_high | Float | 2.0 | The 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_by | Choice | none | FS-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_intensity | Float | 2.0 | How bright the glow is per unit density, in the ramp's colours. |
| ramp_0_r | Float | 1.0 | The energy ramp: the first stop, at ramp_low — red. |
| ramp_0_g | Float | 1.0 | The energy ramp: the first stop, at ramp_low — green. |
| ramp_0_b | Float | 1.0 | The energy ramp: the first stop, at ramp_low — blue. |
| ramp_1_r | Float | 0.45 | The energy ramp: the second stop, a third of the way up — red. |
| ramp_1_g | Float | 0.8 | The energy ramp: the second stop, a third of the way up — green. |
| ramp_1_b | Float | 1.0 | The energy ramp: the second stop, a third of the way up — blue. |
| ramp_2_r | Float | 0.55 | The energy ramp: the third stop, two thirds up — red. |
| ramp_2_g | Float | 0.2 | The energy ramp: the third stop, two thirds up — green. |
| ramp_2_b | Float | 1.0 | The energy ramp: the third stop, two thirds up — blue. |
| ramp_3_r | Float | 0.05 | The energy ramp: the last stop, at ramp_high — red. |
| ramp_3_g | Float | 0.0 | The energy ramp: the last stop, at ramp_high — green. |
| ramp_3_b | Float | 0.12 | The energy ramp: the last stop, at ramp_high — blue. |
| unlit_ambient | Float | 1.0 | The 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_opacity | Float | 0.0 | How 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_octaves | Int | 0 | Wrenninge'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_extinction | Float | 0.5 | Multiple scattering: each octave sees the medium thinner by this factor (Karma's extinction modifier). 0.5 is the usual. |
| ms_contribution | Float | 0.5 | Multiple 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_phase | Float | 0.5 | Multiple scattering: each octave scatters more broadly by this factor on the anisotropy (Karma's phase modifier). |
| sky_occlusion | Float | 0.0 | A 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. |
| renderer | Choice | live | live: 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 |
| spp | Int | 16 | Final 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. |
| bounces | Int | 4 | Final 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_seed | Int | 0 | Final 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. |
| denoise | Choice | off | Cleans 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_passes | Int | 3 | How wide the denoise reaches: à-trous passes, 1 (a 5×5) to 6 (the whole frame). 3 is the usual. |
| march_step | Float | 1.5 | How 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_smoke | Float | 0.0 | Raymarch 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_flames | Float | 0.0 | Raymarch sharpening on the flames field as it is sampled: crisper tongues from the same grid. 0 = off. |
| sharpen_temperature | Float | 0.0 | Raymarch sharpening on the temperature field as it is sampled: crisper colour edges in the fire. 0 = off. |
| sharpen_radius | Float | 1.0 | The raymarch sharpening's tap radius, voxels. 1 sharpens the finest edges; larger sharpens broader structure. |
| smoke_albedo | Float | 0.7 | How 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_scale | Float | 1.0 | How 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. |
| anisotropy | Float | 0.2 | The 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_density | Float | 1.0 | How 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. |
| embers | Float | 0.0 | Embers 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_from | Float | 2.0 | Embers 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_life | Float | 1.5 | Seconds an ember lives, give or take ember_life_var of it. |
| ember_life_var | Float | 0.5 | How much lives vary, 0–1 of ember_life: 0 is a uniform lifetime, 0.6 a spread from short flickers to long travellers. |
| ember_kick | Float | 1.5 | The 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_follow | Float | 4.0 | How 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_gravity | Float | 1.0 | Downward pull on the embers, m/s². Light ash rises on the gas at 0.5; a heavy cinder falls at 3. |
| ember_drag | Float | 0.5 | Velocity lost per second. More settles an ember into the gas sooner. |
| ember_cool | Float | 0.8 | Heat lost per second: 1 → white-hot at birth, cooling through orange to dark. Faster and they wink out; slower and they trail glowing. |
| ember_glow | Float | 6.0 | Brightness at full heat, scene-linear; it falls with the square of the heat as an ember cools. |
| ember_kelvin | Float | 1800.0 | The blackbody colour at full heat; an ember cools toward the table's deep red at 1000 K. |
| ember_size | Float | 3.0 | Dot size on screen, pixels — constant at any distance (the point-cloud dot path). |
| ember_max | Int | 4000 | The most embers alive at once; the oldest die first past it. A cap so a long shot cannot quietly grow unrenderable. |
| ember_seed | Int | 11 | The embers' own seed: the same seed, gas and frame birth the same embers, live, on a resume from a checkpoint and in a bake. |
| units | Choice | world | What 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 |
| network | Text | The 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_dir | Text | Where ⚒ 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_label | Text | What 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_grids | Choice | density temperature | Which 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 |
| baked | Text | The 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_hash | Text | The 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_range | Text | The frames the bake covers. Outside them the sim runs live. | |
| baked_loop | Text | Written by the Bake: the loop length the frames on disk close over, or empty for a plain bake. The cook wraps playback by it. | |
| camera | Text | The 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. | |
| lights | Text | The 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. | |
| lightgroups | Bool | false | One 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. |
| aov | Choice | none | Data 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 |
| deep | Bool | false | KQ-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_layer | Text | depth | The 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_collider | Bool | false | The 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_source | Choice | depth | Where 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_layer | Text | P | The plate's position (P) pass, by layer name, when collider_source is position. |
| normal_layer | Text | N | The 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_objects | Text | Cryptomatte 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_layer | Text | CryptoObject | The cryptomatte layer collider_objects picks from. |
| collider_motion | Bool | false | The 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_thickness | Float | 0.25 | How thick the plate wall is, metres. A thin wall lets gas leak through where the depth pass is noisy; thicker holds it. |
| format_width | Int | 1920 | The render's width when no plate is wired; a wired plate sets the format. |
| format_height | Int | 1080 | The render's height when no plate is wired; a wired plate sets the format. |
| aov_baked | Text | The 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_hash | Text | The 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_range | Text | The frames the AOV bake covers. Outside them the node renders live. | |
| slot | Int | 0 | The live-stream slot this node reads. Slots are process-wide; the same number in two nodes is the same stream. |
| disabled | Bool | false | Bypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back. |
| label | Text | A note shown under the node in the graph — what this node is FOR. Never affects the render or the cache. | |
| hide_input | Bool | false | Draw 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.