Make ColorCorrectionEffect unclipped

As a Roblox developer, it’s currently impossible to correctly colour grade scenes with bright highlights or dark shadows.

ColorCorrectionEffect currently clips colours that are brighter or darker than the screen can display.

Consider this example with bright sunlight incident upon an object.

Applying a TintColor of 64, 255, 64 makes the scene green, but notice how the missing detail in the highlights is still lost. The film does not correctly saturate to white, giving the colour correction a highly artificial feel.

For a better reference of what this should look like, I crudely emulated a proper colour correction effect by overlaying a Glass part with 0.5 transparency and the same tint colour. Similarly to the TintColor property, this should multiply the scene colours, but because it is happening before tonemapping, it is able to retain the detail in the highlights and give a much more natural result.

This method is unfortunately not viable because the Glass shader introduces other artifacts such as stretching due to refraction, lack of support for transparent objects, and unwanted specular reflections.

So, I’d like to request that ColorCorrectionEffect should have a property determining whether it is applied pre-tonemap (HDR) or post-tonemap (SDR).

Besides more natural looking colour correction, this would unlock better (basic) colour temperature adjustments, more natural HDR-aware crossfades, and the ability to restore details in highlights and shadows as part of the post-process pipeline.

40 Likes

Sloppy color correction in movies nuking the whitepoint is something I am unable to ignore anymore, I would love for this to be avoidable in Roblox. For environment art purposes, it makes the difference between the effect breaking immersion versus feeling integrated into the world.

5 Likes