KhronosGroup / ToneMapping

A collection of tone mappers for the display of 3D graphics
Apache License 2.0
49 stars 0 forks source link

Piecewise display encoding vs Pure Power #1

Closed Joegenco closed 4 months ago

Joegenco commented 4 months ago

https://github.com/KhronosGroup/ToneMapping/blob/42a0c99f77f7e2df32ab23d05972ac2d4557e709/PBR_Neutral/config.ocio#L52C1-L64C1

OCIO config defines a piecewise encoding function for the display. Although this is commonly used in such configs like ACES, it wrongly assumes that consumer and proffesional displays use an piecewise inverse power function.

Huge majority of contemporary displays use inverse pure power function instead. This should be just a 2.2 power for sRGB.

elalish commented 4 months ago

Thank you, that sounds reasonable. Also probably a nearly imperceptible change as well.

Joegenco commented 4 months ago

I wouldnt say that its imperceptible.

Here are some comparisons for you. Assuming Linear Rec709 rendering space. All going trough Khronos Neutral.

Piecewise Textures and Piecewise Display: KhronosNatural-PiecewiseTextures-PiecewiseDisplay image

Piecewise Textures and Pure Power Display: KhronosNatural-PiecewiseTextures-PurePowerDisplay image

PurePower Textures and Pure Power Display: KhronosNatural-PurePowerTextures-PurePowerDisplay image


Difference between using piecewise textures and purepower assumed textures is minimal, but display changes drastically. However I'd say piecewise textures vs pure power IS significant on certain situations. Mind you all lights "colorpicking" also changes when "textures" power interpretation changes too.

A-B them yourself to see exacly the change. Pretty important when claiming "Neutral PBR" rendering. (If there can be such thing)

Also you could do some digging regarding contemprorary displays "inverse power functions" and not trust what Im claiming here. Its hard to find much data about how manufacturers implement the inverse function, but theres some out there alongside great research from Filmlight.