basic tone mapping

Issue #22 closed
Alessandro Padovani created an issue

UPDATE. IMPORTANT PLEASE READ

Thomas, actually I am not sure about tone mapping and the hdri intensity. That is, diffuse materials and lights, including emission, seem to match fine with tone mapping and 1/2 hdri. On the other side when I do tests with translucency and sss it seems it match fine with full hdri.

May be we simply can't match the iray tone mapping and the best option is the filmic view with medium high contrast to match translucency and the middle tones. But overexposure effects including rim lights will be dimmed this way.

Or may be the iray translucency has a different power factor than cycles. This would force to use an add shader to double the cycles translucency power and revise the translucency equations. But I don't like this solution too much either.

I am sure about the point light boost though that’s point 3, since it happens in iray too thus it's independent from tone mapping. So please fix it.

If you don't mind I'll leave this issue open for now since it gives interesting material to think about and may be some contributor will jump in to help better.

END UPDATE.

tested with daz studio 4.12.0.86, blender 2.82, plugin commit 044dc16

This is related to #20 but I'm opening a new issue for better handling.

1. Tone Mapping

Q1. What's tone mapping and why we should care ?
A1. A rendered image is defined by linear colors representing real light frequencies. The monitor can reproduce only a subset of those colors that's srgb colors. Well tone mapping is how a rendering engine maps the linear colors to the srgb colors. This is done by using a transfer function.

Q2. But we have a pbr engine. Isn't it supposed to get a realistic image for us ?
A2. Well yes and no. A pbr engine is rather designed to behave as a real camera. With a camera we can have overexposed or underexposed images or color dominancy depending on the camera settings and light conditions. The same happens with tone mapping.

So to better compare iray with cycles we need to somewhat match tone mapping too. Now below there's a simple scene I used for the purpose. There’s the G1F together with an emissive sphere and a standard srgb check. First iray then cycles with the standard and filmic views provided by the color manager. In iray there's environment intensity = 3. We can see that while iray is overexposed, the filmic view deals nicely with the extra light. The standard view gets the same iray behavior and it's overexposed.

That's because the filmic view maps the whole linear range to the srgb space thus practically adapting to light the same as the human eyes do. So to get in blender the iray default tone mapping we can't use the filmic view and we have to use the standard view instead.

From more tests I got some settings in cycles to match iray fine enough. Please note that tone mapping here is limited to the default settings in iray where the user only changes the exposure value. This is a common case but doesn't cover all the possible settings. So I'd rather leave this information to anyone interested, it's not meant to be implemented. But it's a start.

# this matches the default iray tone mapping
cycles view transform = standard
cycles look = medium high contrast
cycles gamma = 1.2

# this matches the iray exposure
cycles exposure = 13 - iray exposure value

2. HDRI Intensity

I never verified the hdri conversion assuming it was a basic thing that goes straightforward. With the tone mapping tests above it came out that the hdri intensity in cycles is double than iray.

cycles hdri strenght = iray environment intensity value * environment map value / 2
cycles hdri color space = linear

Below an example where I tone mapped cycles to match iray. First iray, then cycles fixed with the equation above and the tone mapping settings, then cycles with the old plugin settings. We can see that using in cycles the same hdri exposure of iray doesn’t work and we have to half it to get the same light.

3. Point Lights Intensity

I also had some confusion about the point light intensity. Always for the filmic view reason explained above. Below we can see a point light vs a 0.1 cm sphere light both in iray. They have the same luminous flux but the point light clearly gets a boost.

By using a low intensity hdri as reference for the point light I also was able to get a better boost factor, that's 3x instead of 5x. I'd set this as cycles strenght in this case so to have coherence in the cycles power conversion. Below an example first iray then cycles 3x and 5x. We can see that the 3x boost factor does better than the old 5x.

iray light type = point light or linear point light
iray photometric mode = on
iray light geometry = point

cycles lamp = point
cycles size = 0
cycles power = iray luminous flux / 15000
cycles strenght = 3
cycles color = iray color

Comments (13)

  1. Thomas Larsson repo owner

    I’m confused. I thought we removed the x 5 factor in Blender 2.8x entirely. Should it now be raised to 3?

    Also, the factor is only added for point lights, but the attached file contains a sphere light. Sphere and cylinder lights are currently converted to point lights in Blender, but currently not with a factor.

  2. Alessandro Padovani reporter

    Sorry Thomas it’s my fault. I get confused too when dealing with tone mapping and testing lights. And thank you for the fast reply.

    Yes the point light has a 3x factor in iray.

    The other lights are ok and don’t need to be changed.

    We can see it in iray by using a very small sphere light (to approximate the point light) with the same luminous flux as the point light. We have to boost the sphere light by 3 to match the point light. So this is independent from tone mapping and/or cycles itself. It’s a iray thing.

  3. Log in to comment