Skip to content

EQSynth Lab

Type: Custom Asset Editor (Pattern B) · Asset class: UEQSynthAsset · Category: Labs

A VFX texture authoring environment that combines a 2D fluid solver with a layered source-stack and chainable processing pipeline. Compose textures from multiple sources, route them into specific simulation fields (density, temperature, velocity), run chained processing modes (advect, liquify, diffuse, erode, grow, ripple, generate), apply non-destructive post-process (levels, contrast, edge detect, gradient remap), and export the result as a sprite-sheet flipbook or per-frame image sequence — all in-engine, without a round-trip to EmberGen, FluidNinja, Substance Designer, or Houdini Copernicus. Six fluid-sim presets (Torch, Campfire, Candle, Explosion, Smoke Plume, Rocket Plume) ship as one-click starting points; six stylization presets (Realistic, Cel-Shaded, Anime, Ink Wash, Pixel Art, Comic Book) re-skin the export non-destructively.

Screenshot 01 — Hero shot — EQSynth Lab open with a baked simulation visible on the canvas, source stack and pipeline panels populated, status bar showing FPS + VRAM.


  • Authoring flowmaps for water, lava, cloth ripple, hair — feed a noise source through Liquify + Advect, export the velocity field as RG flow texture
  • Generating fire / smoke / explosion sprite sheets for Niagara flipbooks — start from a preset, refine with sliders, bake, export as 4×4 / 6×6 / 8×8 atlas
  • Synthesizing distortion / displacement maps — combine voronoi + warped FBM noise, run through Diffuse and Edge Detect post-process
  • Building erosion / wear masks procedurally — Erode + Grow processing modes drive realistic wear patterns from a base mask
  • Producing reaction-diffusion patterns for stylized VFX — multiple sources writing to ConcentrationU/V fields, chained Generate steps
  • Creating stylized 2D-aesthetic VFX — apply Cel-Shaded / Anime / Ink Wash / Pixel Art stylization at export
  • Don’t expect 3D volumetric fire / smoke — V1 is a 2D solver. 3D Eulerian solving and VDB / SparseVolumeTexture export are V2.
  • Don’t use this as a runtime sim — EQSynth Lab is offline / authoring-side. The output is a baked texture that runtime emitters consume.
  • Don’t expect Houdini / EmberGen feature parity — those are dedicated AAA tools. EQSynth’s value is in-engine workflow + non-destructive layered authoring + zero round-trip cost.
  • Don’t run 512×512 on low-VRAM GPUs — sub-RTX 3060-class cards may stall. Drop to 128×128 or 256×256.

From the Content Browser:

  1. Right-click in the Content Browser
  2. Pick EQLabs → EQSynth Asset
  3. Name it; double-click to open

From the EQLabs Hub:

  1. Open Window → EQLabs Hub
  2. Search EQSynth or browse to Art → VFX
  3. Click the EQSynth Lab tile — pick Create New or open a recent asset

The asset is a UEQSynthAsset .uasset. It stores every source layer, every pipeline step, every post-process op, plus optional baked frame data (LZ4 / Zlib compressed).


Screenshot 02 — Editor anatomy — Full editor window with all panels labeled — Source Stack, Pipeline, Post-Process, 2D Canvas, Emitter & Obstacles, Timeline / Status.

ControlWhat it does
Play / Pause / ResetDrives the live simulation
Bake to RAMRecords the full simulation to memory for deterministic export
ExportOpens the export dialog
Display ModeDensity / Temperature / Velocity Vectors / Fuel / Pressure / Obstacle Map
Grid Resolution128×128 / 256×256 / 512×512
Preset rowTorch / Campfire / Candle / Explosion / Smoke Plume / Rocket Plume

Screenshot 03 — Source Stack — Left panel with 3-4 source layers — noise, painted, shape — each with type badge, blend mode, opacity, and target-field selector visible.

The source stack is the input system. Up to 6 layers, each with:

FieldOptions
Source TypeNoise (Perlin / Voronoi F1 / F2 / F1-F2 / DomainWarpedFBM) / Shape (circle / box / gradient) / Texture (imported UTexture2D) / Painted (in-tool brush — adapted from Painting Lab)
Blend ModeReplace / Add / Subtract / Multiply / Screen / Overlay / Difference / Mask
Opacity01
Target FieldDensity / Temperature / VelocityXY / Fuel / ConcentrationU / ConcentrationV

The target field routing is the key feature — different sources can feed different sim fields simultaneously. A noise into Density + a painted shape into Temperature + a gradient into VelocityXY produces emergent results no single-source tool reaches.

Six named source presets ship in V1 (e.g., Cumulus, EmberShower, FlowField, Vortex, ReactionDiffusion, Erosion). One click loads a known-good source stack.

The pipeline is the processing chain. Up to N steps; each step’s output density field becomes the next step’s input. Velocity / pressure / temperature reset between steps so each operation gets a clean physical context.

Available processing modes:

ModeWhat it does
AdvectVelocity-driven displacement of density. Drives flow-map and smoke-trail look
LiquifyHigh-viscosity displacement — slow, dense fluid look
DiffuseDensity blur / spread
ErodeMask-style erosion — reduces density at edges
GrowMask-style dilation — expands density
RippleWave equation — circular / wavefront patterns
GeneratePure synthesis (reaction-diffusion / Turing patterns)

Six named pipeline presets ship — quick recipes like “Smoke Trail”, “Wear Mask”, “Voronoi Diffuse”, “Reaction Pattern”, “Wave Field”, “Erosion Field”. One click chains 2–4 steps with sensible defaults.

Post-Process Stack (middle panel — bottom)

Section titled “Post-Process Stack (middle panel — bottom)”

Screenshot 04 — Pipeline + Post-Process — Pipeline panel with 3 chained steps + Post-Process panel below with 2-3 ops, all visible together.

Non-destructive operations applied to the display buffer before export. Never writes back into the simulation fields — pure presentation pass.

OpWhat it does
NormalizeRescales values to fill the 0-1 range
LevelsBlack point / white point / midtone (gamma)
RemapCurve remap of input → output values
ContrastLinear contrast around midpoint
PowerGamma-style power curve
Invert1 - x
SharpenUnsharp mask
BlurGaussian blur
Edge DetectSobel / Laplacian edge isolation
Gradient RemapMaps grayscale through a UCurveLinearColor ramp

The live simulation viewport. Color-mapped visualization of the active field with pan + zoom (scroll-wheel to zoom, alt-drag to pan). Tiled preview overlay (2×2 / 3×3) for evaluating tileable flowmaps. Emitter glyph is draggable for repositioning. Obstacles render as solid overlays. Sim-field injection brushes (Temperature / Force / Vortex) let you paint into the live simulation.

SectionWhat it does
Emitter ShapePoint / Circle / Box
PositionDrag glyph or set by value
Size / Direction / Velocity / Fuel Rate / TemperatureSlider per field
ObstaclesList of placed Box / Circle obstacles. Add / remove / reposition
Display ModeMirrors the toolbar dropdown

Play / Pause / Reset / Scrub / frame counter / total-frames spinner. Status bar shows live FPS, VRAM usage, baked frame count, and bake-to-RAM progress.


UEQSynthAsset serializes:

  • Source StackTArray<FEQSynthSourceLayer> (up to 6, with type / blend / opacity / field routing)
  • PipelineTArray<FEQSynthPipelineStep> (chained processing modes + parameters)
  • Post-Process StackTArray<FEQSynthPostProcessStep> (non-destructive display ops)
  • Solver settings — grid resolution, all combustion + emitter parameters
  • Emitter + obstacles — shape / position / size / parameters
  • Color ramps — fire ramp + smoke ramp (UCurveLinearColor per asset)
  • Optional baked frame data — LZ4 / Zlib compressed for portable sharing

  1. Create the asset, open it
  2. Click a preset (Torch / Campfire / Candle / Explosion / Smoke Plume / Rocket Plume)
  3. Tweak buoyancy / turbulence / vorticity for the look you want
  4. ResetBake to RAM to record frames deterministically
  5. Export → Sprite Sheet → pick grid (4×4 / 6×6 / 8×8), resolution, stylization preset
  6. The exported atlas appears in the Content Browser, ready for Niagara

Screenshot 05 — Pyro preset playing — Canvas showing a Campfire preset mid-simulation with density field color-mapped in orange-yellow, status bar visible.

Synthesis workflow (composing a flowmap from scratch)

Section titled “Synthesis workflow (composing a flowmap from scratch)”
  1. Add a Noise source (DomainWarpedFBM) → Target Field: VelocityXY
  2. Add a Shape source (radial gradient) → Target Field: Density → Blend Mode: Multiply
  3. Add an Advect pipeline step (drives density via velocity field)
  4. Add a Diffuse step (smooths the result)
  5. Add a Normalize post-process op (rescales to 0-1)
  6. Bake → Export → Image Sequence (EXR for full precision)
  1. Set up a fire preset
  2. In the Obstacles panel, add Box obstacles
  3. Drag them on the canvas to force flow through narrow channels / under arches
  4. Bake + export — obstacles are baked into the simulation, not the export, so the result reflects them naturally

Screenshot 06 — Obstacles in action — Canvas showing fire flowing around a placed Box obstacle, flow visibly diverted around it.

Stylized export (same simulation, multiple looks)

Section titled “Stylized export (same simulation, multiple looks)”
  1. Bake the simulation once
  2. Click Export → pick Stylization Preset (Realistic / Cel-Shaded / Anime / Ink Wash / Pixel Art / Comic Book)
  3. Export
  4. Repeat with a different preset — same source frames, different visual treatment, no re-bake

FieldDefaultRange
Grid Resolution256×256128 / 256 / 512
Fuel Rate2.0010
Ignition Temperature0.301
Burn Rate0.401
Smoke Generation0.601
Buoyancy Strength1.505
Turbulence Intensity0.502
Vorticity Confinement0.301
Wind Angle0360
Wind Speed0.005
Dissipation0.0201
Cooling0.0501
Timestep0.016float
Jacobi Iterations401080
Total Sim Frames64int
Advection QualityMacCormackSemi-Lagrangian / MacCormack
FieldRange / Options
Layer count06
Source TypeNoise / Shape / Texture / Painted
Noise VariantsPerlin / Voronoi F1 / F2 / F1-F2 / DomainWarpedFBM
Blend ModeReplace / Add / Subtract / Multiply / Screen / Overlay / Difference / Mask
Opacity01
Target FieldDensity / Temperature / VelocityXY / Fuel / ConcentrationU / ConcentrationV
FieldDefaultOptions
FormatSprite SheetSprite Sheet / Image Sequence
Sprite Grid8×84×4 / 6×6 / 8×8
Output Resolution20481024 / 2048 / 4096
StylizationRealisticRealistic / Cel-Shaded / Anime / Ink Wash / Pixel Art / Comic Book / Custom
Storage ModeExport-OnlyExport-Only / Embedded (LZ4 / Zlib)
Channel MappingFire→R, Smoke→G, Temp→B, Alpha→Aconfigurable per channel

Asset persistence: every parameter, source layer, pipeline step, post-process op, and (optionally) the full baked frame payload lives inside the .uasset.


  • Sprite-sheet export produces a UTexture2D atlas in the Content Browser, immediately assignable to a Niagara emitter as a flipbook texture or to a Material as a SubUV sample.
  • Image-sequence export writes per-frame PNG / EXR to disk, suitable for compositing pipelines (Nuke, AE, Resolve) or reimport as a Media texture.
  • Embedded storage keeps the baked frames inside the .uasset (LZ4 / Zlib), so the asset is self-contained and portable across collaborators without a re-bake.
  • No runtime cost — EQSynth Lab is editor-only. The output texture has zero solver dependency at runtime.

  • Bake before exporting. The export pipeline reads from the recorded frame buffer, not the live simulation. You’ll get an empty / partial export if you skip Bake to RAM.
  • Density survives between pipeline steps; velocity does not. Each step starts with a fresh velocity field — design pipelines around that. Use Advect early (when velocity is fresh from sources) and Erode / Grow / Diffuse later (where they don’t depend on velocity).
  • Source target-field routing is the killer feature. Multiple sources writing to different fields simultaneously creates emergent looks impossible in single-source tools. Try noise → Velocity + shape → Density + gradient → Temperature.
  • Tiled preview is mandatory for tileable flowmaps. The 2×2 / 3×3 wrap overlay catches seam discontinuities while you’re authoring, not after you’ve exported and assigned the texture.
  • Stylization is non-destructive. Bake once, export with three different stylization presets — same source frames, three different deliverables.
  • Sub-256 grid resolution sacrifices obstacle fidelity. Box / Circle obstacles rasterize at grid scale; at 128×128 fine details disappear. 256×256+ for complex obstacle layouts.
  • Rocket Plume preset has a known buoyancy / velocity imbalance. Reduce buoyancy strength manually for elongated directional plumes — fix scheduled for polish pass.
  • Jacobi iterations under 20 produce visible divergence. Smoke drifting sideways unnaturally = pressure solver under-converged. Default of 40 is stable for most setups; raise toward 60-80 for high-accuracy work.

  • Flipbook Maker — Niagara capture-based flipbook authoring; EQSynth Lab is the procedural / simulation-based alternative
  • Painting Lab — paint custom source masks for the EQSynth source stack (Painted source type)
  • Niagara Profiler — profile the runtime cost of materials and emitters consuming EQSynth Lab outputs
  • Texture Channel Packer — pack EQSynth EXR exports into combined channel-packed textures
  • VAT Management Suite — VAT bakers and EQSynth Lab cover different VFX texture problems (geometry-cache vs flowmap / sprite-sheet); both feed Niagara

Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.