Over exposured light color is calculated wrong


I just noticed that the Unreal engine calculates the color of light wrong.

If I make a light source 100% red - the overexposured area should stay red, no matter how bright the light is. However, the light shifts to a more yellow-ish color, and then to a white color. In real life this wouldn’t happen, because there’s absolutely no information in the green and blue channel.

The same goes for blue, but here it shifts to magenta, before turning white:

Green also seems to shift to yellow and then white:

This breaks the illusion of photo-realism a lot.
For the record, this is how it’s supposed to look like:

Hope this is something you guys can look in to, so that it’s easier to achieve photo-realistic results in the future =)

This is correct behaviour.
The Tonemapper was exchanged in 4.15 which results in a more cinematic image.
There’s a console command which disables the cinematic tonemapper and turns on the old tonemapper.

It’s “by design”. UE4 uses ACES tonemapper. Use r.tonemapperfilm 0 to disable it.
And it’s considered by many users as an issue, since Epic stated that old tonemapper will be removed in future.

Okay, thanks for feedback! =) I checked out the tonemapper you guy’s talked about. I’m wondering, if you use a high end camera with this tonemapper, and shine a laser light into that camera, with a wavelength that only affects the red sensors; would the glare really look white in the center then? For me this sounds a bit weird, because then they have to artificially add some green and blue color on top of the red - if the red color is strong enough. Is this really the case?

**@JohanBogeberg](**It will be. But cause for that is completely different. It’s caused by pixel pool overflow.
Matrices work as a device that converting light in to electric charge. Matrix bus constantly flushing the charge (that makes you actual image data). If it can’t do it fast enough a large charge will accumulate, due to small size of the pixel charge may leak to neighbor pixels, that would cause bloom and if matrix is RGB - whitening. It won’t happen on split beam recorders, but afaik there are not many of those exist (Panasonic made those IIRC).

Well that’s some really interesting info! Thanks for correcting me with new knowledge. I did some image searches with red, green and blue laser to see this effect. Even though I don’t know if their wavelengths overlap two color-sensors in the camera used, it would never be able to overlap all 3 sensors. And it does indeed seems like the source is getting white. However, it does seems like every image where I find this effect, the white is only visible in the source where the light intensity is extremely high relative to the secondary light rays. But in Unreal, the white color appears on a very low light intensity as well. Is this something to do with the light attenuation to do perhaps? Is an omni light in Unreal following the inverse square law, or is this tweaked for performance reasons?

My impression is that the ACES tonemapper is designed to make it so the image resembles that taken by film, and so the ‘incorrect’ appearance of film is the desired appearance of ACES. It’s a photorealistic tonemapper, not a realistic tonemapper.

Unfortunately, this seems to come at the sacrifice of SRGB. Rendering in the tonemapper won’t use the full SRGB gamut… [0,0,1] raw is drawn on screen as [3,0,225], and I’m fairly sure you can’t get it any more blue than that, at least without an HDR screen.

This is indeed correct behavior. I have been encountering it in offline rendering in years. The key habit here is to realize that there are no 100% saturated colors in the real world. It’s kind of similar rule to albedo, where you should never use absolute blacks or 100% whites when it comes to PBR shading. If you are after heavily stylized look, then you can indeed revert to the old tone mapper, however from my experience, these PBR rules only rarely interfere even with stylized scenes… It generally just looks more natural to the human eye :slight_smile:

Simply, just try to avoid 100% saturated colors for anything, mainly in lights and materials.

BTW it’s not just “incorrect appearance of film”… It’s general response of vast majority of cameras… not just movie cameras and their films. Just search “red laser pointer” on google images, and you will see that every single photo of a red laser glow will have this exact effect. You won’t find a single photo that has just even flat red glow, unless it’s photoshopped in for product shot.