In keeping with their goal of true cinematic shading
NVIDIA have taken colour precision to a whole new level. The
slightly condescending picture below shows how, if you didn't
already know, more colours make for smoother transitions.
But there's more to the colour equation than the
number of colours available. The human eye is far more sensitive
to brightness levels (luminance sensitivity) than it is to colour
(spectral sensitivity) as it has some 120 million light sensitive
"rod" cells compared to only around 7 million colour
sensitive "cone" cells.
In the diagram above we can see how increasing
the intensity of a rendered image using a linear format isn't
accurately reflected in the displayed image (right). Doubling
the intensity doesn't actually result in a pixel that is twice
as bright when displayed on current CRT and LCD monitors due
to the differences in sensitivity between the human eye and
computer displays.
But by automatically applying a form of "gamma
compensation" (center) to the image intensity values before
they reach the display NVIDIA are able to correct gamma so that
a doubling of the intensity at the rendering stage translates
to a doubling of intensity at the display stage. This gives
a more accurate and predictable result and avoids the need for
programmers to constantly switch gamma space.
Full Studio-Quality Color :
The GeForceFX offers true 64 and 128bit colour
from end to end through its FP16 and FP32 floating point formats.
No piling 96bit colour data into a 128bit frame buffer and passing
it off as 128bit colour on this chip (I'm mentioning no names),
the whole colour pipeline handles full 128bit data in its native
form throughout. To better balance application requirements
developers are able to flip-flop back and forth between 64bit
and 128bit colour within the application dependent on their
needs at any given stage. For instance, some actions such as
indexing into a high-resolution texture can only be optimally
accomplished using a 32-bit floating-points format. If the texture
is larger than 1024 x 1024 (210
x 210, requiring at least 10 mantissa
bits per texture coordinate), the developer needs FP32 to access
all of the data.
Another benefit of such high colour precision
comes in the form of what's known as "Overflow" and
"Underflow". If we imagine a scenario where 8 bits
are used to define a scene. This gives a range of numbers between
0 and 255 (28). If using this format
were to add 130 and 130 together the answer would be 4 rather
than 260 because the total basically spills over the upper limit
and begins from the start again. The reason the answer isn't
"5" is because zero is counted. If we considered negative
numbers as well, the 8 bits would still be used to represent
256 values, but the range would change. We would now be able
to represent 128 to 127, with the uppermost bit representing
whether the number was positive or negative. When particularly
large numbers are added or subtracted there's the dire possibility
that positive numbers could become negative and negatives positive.
Dynamic Range :
By increasing precision a scene can be rendered
using a wider range of intensities than was previously possible.
Photographers are all too aware of the problems of limited dynamic
range whereby the problem is do you expose for the highlights
and lose all detail in the shadows or do you expose for the
shadows and have the highlights "burn out" on you?
Prior to the GeForceFX scenes with a high dynamic range were
prone to an anomaly known as "clamping" which in simple
terms gave an incorrect rendering of the required scene due
to limitations in intensity precision. Here's NVIDIA's explanation
of the problem " To understand this artifact, consider
the following example. A developer has two light sources that
he would like to average. Each source has an intensity of .6
on a normalized scale of zero to one. Since the precision ceiling
is 1.0, adding the two light sources .6 + .6 would result in
a value of 1.2, which is then clamped to 1.0. Dividing this
clamped value then gives an average light value of .5. The actual
desired result is .6. While simplistic in nature, this example
illustrates a common dynamic range situation where clamping
(overflow) prevents the derivation of a correct result."
Overly Dark Scene
Overly Bright Scene
Normal Contrast Scene
Rippling water with reflections and refractions needs
high
precision for better visual quality and freedom from
constraints and limitations.