Once the plates were cleaned and the robot renders were finalized, all shots entered the compositing stage – where CG and live action were merged into one unified photographic world.
The compositing process was built around a multi-layered EXR pipeline, ensuring full control over lighting, materials, and grading.
Render Pipeline
All renders were produced in Redshift and Cycles, depending on the type of shot and lighting complexity.
Redshift was used for hero close-ups and high-dynamic scenes requiring complex reflections, while Cycles handled wider environmental frames and faster look-dev previews.
Both engines were unified under the same ACEScg color workflow to guarantee consistent tone and exposure across the entire film.
Each render was delivered as 32-bit EXR sequences, containing over 12 individual AOVs (beauty, diffuse, specular, reflection, refraction, shadow, emission, GI, ambient occlusion, cryptomatte, and Z-depth).
Lighting & AOV Control
The key to realism was maintaining physical light balance between the CG robot and the plate.
Using the AOV structure, we could fine-tune every lighting component in comp – adjusting intensity, softness, and specular ratios without re-rendering.
Key integration passes:
- Diffuse & GI — matched to ambient bounce from the Bangkok alley.
- Specular & Reflection — manually graded to mimic sun reflections and bright sky sources.
- Shadow & Contact Layers — subtle wrap shadows integrated into real plate geometry.
- Emission — from LED eyes and head panels, contributing to environmental light bounce.
Every light layer was treated as a photographic exposure — adjusted in comp, not baked in render.
Color & Depth Integration
To ensure seamless blending between CG and live-action, each shot was color-matched in ACEScg, with final compositing done in linear space. Z-depth and cryptomatte data were used for camera defocus, fog, and selective grading. Atmospheric passes added subtle humidity, light bloom, and diffusion to match Bangkok’s environment.
Engine Balancing
Although Redshift and Cycles produce slightly different highlight roll-offs, we standardized tone curves through custom LUTs, ensuring both renders matched seamlessly in Nuke. This made it possible to mix engines within a single sequence — a rare but efficient approach that gave us the flexibility to render quickly without visual inconsistency.
It didn’t matter which engine rendered the robot — the light, tone, and texture always spoke the same visual language.
Result
The compositing process elevated the CG integration from technical to cinematic — every reflection, every bounce, and every layer behaved like it belonged to the same lens.
Each frame was composited to feel photographed, not rendered.


