6.1 - Framebuffer sRGB
Here we reach a new chapter that makes us discover the new features of this video card: all that deals with the
framebuffer object. Although this notion is not yet a part of the OpenGL specification, it became some fetish
functionality for programmers who wish to make some "render to texture", because by doing so we ensure the best
performances. The color buffer format can now be a sRGB one thanks to the EXT_framebuffer_sRGB extension.
Just a recall: the sRGB format is an IEC normalized format which characterizes the displays' non linear nature,
especially in poorly enlightened rooms. Fundamentally, it is a 2.2 gamma correction.
6.2 - 32-bits Float Z-Buffer
EXT_packed_depth_stencil is an extension which allows a 24 bits storage on 32 bits for the Z-Buffer and 8 bits
for the stencil buffer in a texture. With the GeForce 8800, there is in addition the NV_depth_buffer_float which contains
a new format that makes it possible to store on 64 bits, a 32 bits Z-Buffer and an 8 bits stencil buffer, which makes
24 unused bits. Let's clarify that the reason of such an extension, except the fact that less memory is
wasted, is to have a Z-Buffer coded on floating numbers.
6.3 - Coverage Sample AntiAliasing
The GeForce 8800 brings a new antialiasing mode called CSAA (Coverage Sample AntiAliasing) that uses an array of
Boolean (for example 16 per pixel for the CSAA 16x) to determine a percentage of the final pixel overlap. In order to
support this functionality in the render-to-texture mode, we have the NV_framebuffer_multisample_coverage extension.
6.4. Render targets blending
To end with this render-to-texture subject, we've got the GL_EXT_draw_buffers2 extension which completes the GL_ARB_draw_buffers.
The point is to allow writing in several color buffers from a fragment shader. This functionality is often known
as "Render To Target" (RTT) which is the foundation of the "deferred shader" approach. GL_EXT_draw_buffers2 allows assigning different
color masks for each one of the chromatic buffer. Moreover, it allows to enable or not the blending for each target, although the
function and the blending equation remain the same for all the chromatic buffers. Talking about chromatic buffers is excessive
because the idea of the deferred shaders is to use for example one of the additional target to store the normals.
The intention is respectable with this extension, but there is yet a lot to do. Nevertheless, a programmable
blending in the next future remains topical.