# Production Goal
The lava for the Fire Dungeon had to read well from gameplay distance, keep a strong "hot core + cooled crust" look up close, and stay performant in real-time.
# Pipeline Overview
We split the effect into 3 layers:
- Motion data from Houdini (flow direction + masks)
- Procedural textures from Substance Designer (magma, crust, emissive breakup)
- Runtime shader + VFX in Unreal Engine 5 (flow, edge foam, heat pulse, sparks)
# Houdini: Flow Authoring
In Houdini, we built guide curves around the gate and terrain channels, then generated a low-cost lava motion field instead of simulating heavy final meshes.
- Sim source: terrain collision + guide velocity + noise turbulence
- Export maps: flow direction (RG), speed mask, edge mask, foam mask
- Authoring resolution: 1024 tile set for hero areas, 512 for secondary strips
This gave us art-directable motion with predictable cost in engine.
# Substance Designer: Lava Material System
- Substance Designer* was used to build the lava material set as reusable, tileable graphs:
- Magma Base: large-to-small shape breakup, directional streaking
- Cooled Crust: crack network with height-driven edge wear
- Emissive Mask: crack cores + pulsing hotspots
- Auxiliary Maps: roughness, height, normal, AO
Key reason we used Designer: easy non-destructive iteration (crack width, hotspot density, color balance) while keeping seamless tiles.
# Unreal Engine 5: Shader + VFX Integration
In Unreal Engine 5, the lava was driven by a spline-friendly material setup:
- Flowmap UV distortion from Houdini vectors
- Dual-panner blend (slow base + faster detail) to avoid obvious looping
- Fresnel + depth fade for edge readability
- Emissive pulse controlled by speed and noise mask
- Vertex color channels for local art direction (heat, crust, foam intensity)
Niagara was used for secondary effects: embers, light smoke wisps, and occasional splash bursts at impact points.
# Optimization Notes
- We avoided runtime fluid sims and relied on map-driven motion.
- Material complexity was kept in one master + a few lightweight instances.
- Emissive intensity and Niagara count were distance-scaled to reduce overdraw.
- Texture usage was packed where possible to keep memory pressure lower.
# Practical Result
This workflow gave us stable frame-time behavior and strong readability in both close-up shots and gameplay camera distances. It was also easy for artists to tune without re-exporting heavy geometry.