Skip to main content
added 193 characters in body
Source Link
troy_s
  • 12.3k
  • 2
  • 37
  • 76

Edit: Note this is an ancient answer, pre-Filmic Blender. The TL; DR version is that you must always pixel manage everything. Do not turn transforms off, and appropriately tag your buffers.

Edit: Note this is an ancient answer, pre-Filmic Blender. The TL; DR version is that you must always pixel manage everything. Do not turn transforms off, and appropriately tag your buffers.

added 119 characters in body
Source Link
troy_s
  • 12.3k
  • 2
  • 37
  • 76

In addition to the chromaticities of the primary lights, we also have what is known as a tone response curve or transfer curvetransfer function, sometimes erroneously called "gamma." This is a term that describes how the values relate to each other in intensity, where the ground truth is a radiometrically linear quantity of light in relation to a scene or a display’s output. 0.8 in our example above tells us absolutely nothing about how intense the value is in relation to the other values because we don't really know anything about the encoding system used ornor how the values relate to each othertransfer function is defined.

To solve the above issues, we need more information than purely the relative RGB data. We need to communicate what the values actually mean in relation to some known standards or ratios. If we know what the colours of the primary RGB lights are in absolute terms, what the tone response / transfer curvefunction ratios are for the data, and some other aspects, we could call that combination of variables a colour space; an encapsulation of a bunch of additional data not communicated with the relative RGB encoded data.

sRGB is one such creature. sRGB has very clearly defined absolute chromaticities defined for each of the red, green, blue channels, as well as a defined white point. It also includes specifications for the transfer curvefunction. These facets allow us to 'decode' the RGB values in an image and properly communicate their intention and handling through a pipeline.

Real world physics is pretty simple when it comes to math. One unit of light plus one unit of light is, in shockingly, two units of light. Energies operate in a linear fashion, and as such, they behave very rationally.

sRGB on the other hand, for various historical reasons and circumstances, is a non-linear colour space. That is, the tone response / transfer curvefunction portion of the colour space is bent in such a way that the values are not linearly related. 0.4 plus 0.4 in sRGB is not twice the radiometric amount of light! To see a quick visual effect of this non-linear nasty math, fill up a background in your favorite imaging application of full green and full blue for a cyan colour. Now take a fuzzy fully red brush and paint across it. See the nasty fringing? That is a result of bad and broken math due to a nonlinear reference space.

In addition to the chromaticities of the primary lights, we also have what is known as a tone response curve or transfer curve, sometimes erroneously called "gamma." This is a term that describes how the values relate to each other in intensity. 0.8 in our example above tells us absolutely nothing about how intense the value is because we don't really know anything about the encoding system used or how the values relate to each other.

To solve the above issues, we need more information than purely the relative RGB data. We need to communicate what the values actually mean in relation to some known standards or ratios. If we know what the colours of the primary RGB lights are in absolute terms, what the tone response / transfer curve ratios are for the data, and some other aspects, we could call that combination of variables a colour space; an encapsulation of a bunch of additional data not communicated with the relative RGB encoded data.

sRGB is one such creature. sRGB has very clearly defined absolute chromaticities defined for each of the red, green, blue channels, as well as a defined white point. It also includes specifications for the transfer curve. These facets allow us to 'decode' the RGB values in an image and properly communicate their intention and handling through a pipeline.

Real world physics is pretty simple when it comes to math. One unit of light plus one unit of light is, shockingly, two units of light. Energies operate in a linear fashion, and as such, they behave very rationally.

sRGB on the other hand, for various historical reasons and circumstances, is a non-linear colour space. That is, the tone response / transfer curve portion of the colour space is bent in such a way that the values are not linearly related. 0.4 plus 0.4 in sRGB is not twice the amount of light! To see a quick visual effect of this non-linear nasty math, fill up a background in your favorite imaging application of full green and full blue for a cyan colour. Now take a fuzzy fully red brush and paint across it. See the nasty fringing? That is a result of bad and broken math due to a nonlinear reference space.

In addition to the chromaticities of the primary lights, we also have what is known as a transfer function, sometimes erroneously called "gamma." This is a term that describes how the values relate to each other in intensity, where the ground truth is a radiometrically linear quantity of light in relation to a scene or a display’s output. 0.8 in our example above tells us absolutely nothing about how intense the value is in relation to the other values because we don't really know anything about the encoding system used nor how the transfer function is defined.

To solve the above issues, we need more information than purely the relative RGB data. We need to communicate what the values actually mean in relation to some known standards or ratios. If we know what the colours of the primary RGB lights are in absolute terms, what the transfer function ratios are for the data, and some other aspects, we could call that combination of variables a colour space; an encapsulation of a bunch of additional data not communicated with the relative RGB encoded data.

sRGB is one such creature. sRGB has very clearly defined absolute chromaticities defined for each of the red, green, blue channels, as well as a defined white point. It also includes specifications for the transfer function. These facets allow us to 'decode' the RGB values in an image and properly communicate their intention and handling through a pipeline.

Real world physics is pretty simple when it comes to math. One unit of light plus one unit of light is, in shockingly, two units of light. Energies operate in a linear fashion, and as such, they behave very rationally.

sRGB on the other hand, for various historical reasons and circumstances, is a non-linear colour space. That is, the transfer function portion of the colour space is bent in such a way that the values are not linearly related. 0.4 plus 0.4 in sRGB is not twice the radiometric amount of light! To see a quick visual effect of this non-linear nasty math, fill up a background in your favorite imaging application of full green and full blue for a cyan colour. Now take a fuzzy fully red brush and paint across it. See the nasty fringing? That is a result of bad and broken math due to a nonlinear reference space.

Update with context of answer.
Source Link
troy_s
  • 12.3k
  • 2
  • 37
  • 76

Addendum

This answer was provided in the context of the default set of transformations present in Blender. The answer tackles "Should there be a transform between the scene referred data and the display referred output?" abstract question. To this end, the answer is provided in that context. If this is of interest, researching the various transforms that can be used to elevate scene referred rendering and imagery would be useful. There's more than a few of those out there now...

Addendum

This answer was provided in the context of the default set of transformations present in Blender. The answer tackles "Should there be a transform between the scene referred data and the display referred output?" abstract question. To this end, the answer is provided in that context. If this is of interest, researching the various transforms that can be used to elevate scene referred rendering and imagery would be useful. There's more than a few of those out there now...

added 546 characters in body
Source Link
troy_s
  • 12.3k
  • 2
  • 37
  • 76
Loading
Source Link
troy_s
  • 12.3k
  • 2
  • 37
  • 76
Loading