Compositing Nodes
Key for Colour Accuracy and Realism
Key for Colour Accuracy and Realism
One of the most important goals in Product Visualization is to deliver accurate brand colours in our renders while also achieving the most realistic look possible. Most professionals end up doing some degree of post-processing or colour correction, but in this post I’d like to share a few explorations I’ve done in my workflow that might help others better understand and navigate this balance.
Since April 2024, CG Cookie released an article about how to achieve vibrant colours using AgX in Blender. They also introduced a paid plug-in that supports this workflow. I highly recommend reading or watching it (here’s the article), although the plug-in can slow down render times and, of course, it adds a cost.
In May 2024 Blender released Khronos PBR Neutral, and this may seems to be a game changer... but it is?
AGX / None
AGX / Punchy
Khronos PBR Neutral / None
Now, when it comes to tone mapping, we might wonder: if Khronos PBR Neutral gives us output sRGB colours that match the input sRGB base colours more faithfully, why not just use it and be done?
Well, here’s the thing: while Khronos indeed preserves colour fidelity (meaning the rendered colours closely match the original sRGB inpu), AgX still wins in terms of realism. The way AgX handles the gradient between light and shadow feels much closer to how light behaves in real life. Using Khronos alone can make it harder to achieve realistic-looking metals and glass.
In short:
AgX gives more cinematic and realistic light behavior, but sacrifices some colour accuracy.
Khronos preserves colour accuracy but can look flatter or more "CGI" in some cases.
AGX / None
AGX / Punchy
Khronos PBR Neutral / None
Even when switching to the AgX Punchy look, you’re primarily adjusting contrast and not addressing the core limitation of AgX regarding colour fidelity. While the AgX view transform excels at tone mapping for cinematic purposes (managing highlight roll-off and shadow compression), it does so at the cost of accurate sRGB colour reproduction. In contrast, Khronos PBR Neutral prioritizes accurate colour matching, which is critical in product visualization and advertising, where colour precision is non-negotiable.
AGX / Punchy
Khronos PBR Neutral / None
In a direct comparison between the two, AgX tends to retain more subtle detail in metal reflections, whereas Khronos often clips highlights, leading to overexposed or less nuanced reflections.
Khronos PBR Neutral / None
Raw+ColComp. + Exp.Gamma After
Raw+ColComp. + Exp.Gamma Before
Raw
Raw + Composition Nodes
Agx / Punchy + Comp. + DiffCol Mix
Raw + Composition + DiffCol Mix
Filmic
Agx / None
Agx / Punchy
Agx / Punchy + Color Correction
Standard
I created a total of 12 test renders, revisiting Blender’s default tone mappings - AgX, Khronos, Standard, and Filmic - and also developing some custom configurations. Some of these experiments did not achieve accurate colour reproduction, especially when trying to match brand colours (see Raw + Composition + DiffCol Mix 😬) .
To preserve Khronos-level colour fidelity and retain the natural light falloff similar to AgX, I found that working with the Raw tone mapping as a base was necessary. This gives you full control in the compositing phase, allowing you to correct colours manually without tone mapping interfering.
Khronos PBR Neutral / None
Agx / None
Raw + Compositor
Raw + Color Cor. + Exp. and Gamma Before
As you’ll see in the comparisons, most of the experiments successfully achieved the light falloff and shadow gradients similar to AgX. In the following sections, I’ll explain the node setups and techniques used to reach those results.
When rendering with the Raw view transform, the image bypasses any colour space conversion, it’s intended for technical inspection rather than final output. That means you'll need to manually handle the colour space transformations in the compositor.
In this setup, I used the Raw view transform in the render settings, and then in the compositor, I added two “Convert Colorspace” nodes:
from Linear Rec.709 > to AgX Base sRGB
from Linear Rec.709 > to Khronos PBR Neutral sRGB
After the conversions, I fed both outputs into a Color Mix node, set to Color blending mode. This mode blends the hue and saturation of the Khronos result with the value (lightness) from AgX. The idea is that you preserve AgX’s dynamic range and light falloff, while restoring the colour spectrum of Khronos.
The result is an image that looks more realistic in terms of lighting and reflections, while keeping brand-accurate colours.
Khronos PBR Neutral / None
Raw + Composition Nodes
⚠️ But there’s a catch...
Using AgX Base sRGB (equivalent to AgX – None in the render settings) results in very flat contrast, especially in the black and shadow regions. The tones can appear dull or washed out, making the render feel unfinished.
This led to further experimentation to bring back the richness and visual punch we expect from an AgX render.
I didn’t want to get lost building a complex node tree just to recover the punchy contrast of AgX. Since my main goal was preserving the brand’s original colours, I started thinking: What if I just mixed the diffuse colour pass back into the final render?
Test One:
Rendered with AgX Punchy
Used the Diffuse Color pass
Combined using a Color Mix node set to Color blend mode
The result?
It actually brought back noticeable saturation across the render — more vibrant than a standard AgX Punchy render. While it didn’t match Khronos’ colour fidelity exactly, it offered a good balance between realism and colour richness.
Test Two:
Rendered in Raw mode
Converted to AgX Base sRGB using ColorSpace Conversion
Mixed with Diffuse Color using the same Color blend mode
This one wasn’t accurate in a traditional sense, but surprisingly effective in a different way. The colours became hyper vibrant, even reaching neon-like levels that neither Khronos nor default AgX could produce. It’s clearly not for every project, but it hints at creative potential — especially for stylised or futuristic visuals.
Agx / Punchy
Agx / Punchy + Comp. + DiffCol Mix
Raw + Composition + DiffCol Mix
I went back to the original Raw render setup where I used two Convert Colorspace nodes (AgX Base sRGB and Khronos PBR Neutral sRGB), blended using Color Mix (Color mode).
This time, I wanted to test what would happen if I added Exposure and Gamma adjustments to the node tree. I tried two variations:
Exposure + Gamma before the AgX conversion node
Exposure + Gamma after the AgX conversion node
In terms of colour, both methods produced similar results.
However, when it comes to values, there was a noticeable difference:
When exposure and gamma adjustments were applied before the AgX conversion, the light tones were better preserved, and the shadows gained more depth and punch.
When applied after the conversion, the image looked overexposed in the highlights.
This small tweak ended up being very powerful: it helped retain the realism and roll-off from AgX, while reinforcing the contrast needed for product visualization, especially in black and metallic surfaces.
Khronos PBR Neutral / None
Raw+ColComp. + Exp.Gamma Before
Raw+ColComp. + Exp.Gamma After
But the real question is: did we achieve the perfect result?
Well… not 100%. 🧐
I rendered each yellow square from the colour chart, and the truth is: no two yellows looked exactly the same. The node setups using Raw view transform were definitely the closest in terms of both realism and colour processing, but even then, some variation remained.
Khronos PBR Neutral / None
Raw + Color Correction + Exposure and Gamma After
Raw + Composition Nodes\
Raw + Color Correction + Exposure and Gamma Before
Agx / Punchy + Color Correction
Raw + Comp DiffCol
Agx / Punchy
Agx / Punchy + Comp DiffCol
In the end, we probably won’t escape some level of post-production and retouching. Especially when strict brand colour accuracy is required.
Even Khronos, for all its RGB precision, struggles to cover the full range of colours we see in print or real-world materials. Since it's RGB-based, it naturally struggles to replicate CMYK-like colour appearances, particularly in the more saturated or pastel ranges.
Still, this study feels like a step forward a way to bring creative flexibility and improved colour accuracy into product rendering workflows without sacrificing the natural realism we get from AgX.