WGL_ATI_pixel_format_float |
WGL_ATI_pixel_format_float
WGL_ATI_pixel_format_float
Rob Mace, ATI Research (mace 'at' ati.com)
Complete.
Last Modified Date: December 4, 2002
Revision: 5
278
WGL_ARB_pixel_format is required.
This extension is written against the OpenGL 1.3 Specification.
This extension adds pixel formats with floating-point RGBA color
components.
The size of each float components is specified using the same
WGL_RED_BITS_ARB, WGL_GREEN_BITS_ARB, WGL_BLUE_BITS_ARB and
WGL_ALPHA_BITS_ARB pixel format attributes that are used for
defining the size of fixed-point components. 32 bit floating-
point components are in the standard IEEE float format. 16 bit
floating-point components have 1 sign bit, 5 exponent bits,
and 10 mantissa bits.
In standard OpenGL RGBA color components are normally clamped to
the range [0,1]. The color components of a float buffer are
clamped to the limits of the range representable by their format.
1. Should we expose a GL_FLOAT16_ATI pixel type?
RESOLUTION: This will be exposed in a separate extension.
New Procedures and Functions |
None
Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev:
RGBA_FLOAT_MODE_ATI 0x8820
COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
Accepted as a value in the <piAttribIList> and <pfAttribFList>
parameter arrays of wglChoosePixelFormatARB, and returned in the
<piValues> parameter array of wglGetPixelFormatAttribivARB, and the
<pfValues> parameter array of wglGetPixelFormatAttribfvARB:
WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
Additions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL Operation) |
Add a new Section 2.1.2, (p. 6):
2.1.2 16 Bit Floating-Point
A 16 bit floating-point number has 1 sign bit (s), 5 exponent
bits (e), and 10 mantissa bits (m). The value (v) of a 16 bit
floating-point number is determined by the following pseudo code:
if (e != 0)
v = (-1)^s * 2^(e-15) * 1.m # normalized
else if (f == 0)
v = (-1)^s * 0 # zero
else
v = (-1)^s * 2^(e-14) * 0.m # denormalized
It is acceptable for an implementation to treat denormalized 16 bit
floating-point numbers as zero.
There are no NAN or infinity values for 16 bit floating-point.
Additions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization) |
Section 3.6.4, (p. 92), Add to figure 3.7 a block to "final
conversion" for "RGBA float pixel data out" that says "clamp
to float format range".
Section 3.6.4, (p. 102), change the first paragraph of the "Final
Conversion" to:
For a color index, final conversion consists of masking the bits
of the index to the left of the binary point by 2^n - 1, where n
is the number of bits in an index buffer. For RGBA components the
conversion is based on whether the components in the destination
color buffer are fixed-point or floating-point. For fixed-point
destination buffers components are clamped to [0,1]. The resulting
values are converted to fixed-point according to the rules given in
section 2.13.9 (Final Color Processing). For floating-point
destination buffers components are clamped to the limits of the
range representable by the destination format.
Additions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment Operations and the Frame Buffer) |
Chapter 4 Introduction, (p. 156), change the first line of the third
paragraph to:
Color buffers consist of either unsigned integer color indices,
RGB and optionally A unsigned integer values, of RGBA floating-
point values.
Section 4.1.7, (p. 162), change the third paragraph of the page to:
Fixed-point destination (framebuffer) components and source
(fragment) components are taken to be values represented according
to the scheme given in section 2.13.9 (Final Color Processing).
Floating-point destination and source components are taken as is.
Constant color components are taken to be floating-point values.
Section 4.1.7, (p. 163), change the forth line of the second paragraph
of "Using BlendFunc" to:
If destination color components are fixed-point, each floating-
point value in this quadruplet is clamped to [0,1] and converted
back to a fixed-point value in the manner described in section
2.13.9.
Section 4.1.8, (p. 165), insert after the first sentence:
Dithering has no effect if the destination color buffer components
are floating-point.
Section 4.1.9, (p. 165), insert after the first sentence:
Logical operation has no effect if the destination color buffer
components are floating-point.
Section 4.2.3, (p. 170), change the third paragraph to:
void ClearColor(float r, float g, float b, float a);
sets the clear value for the color buffers in RGBA mode. When
clearing a fixed-point color buffer each of the specified
components is clamped to [0; 1] and converted to fixed-point
according to the rules of section 2.13.9. When clearing a
floating-point color buffer the specified components are not
clamped.
Section 4.3.2, (p. 176), change the "Conversion of RGBA values" to:
This step applies only if the GL is in RGBA mode, and then only
if format is neither STENCIL INDEX nor DEPTH COMPONENT. The R,
G, B, and A values form a group of elements. When reading from a
fixed-point color buffer each element is taken to be a fixed-point
value in [0; 1] with m bits, where m is the number of bits in the
corresponding color component of the selected buffer (see
section 2.13.9).
Section 4.3.2, (p. 177), change the second paragraph of the "Final
Conversion" to:
For a fixed-point RGBA color buffer, each component is first
clamped to [0,1]. For floating-point RGBA color buffer, components
are not clamped if the <type> is FLOAT, clamped to [0,1] if the
<type> is unsigned, and clamped to [-1,1] if the <type> is signed.
After clamping the appropriate conversion formula from table 4.7
is applied to the component.
Additions to Chapter 5 of the OpenGL 1.3 Specification (Special Functions) |
None
Additions to Chapter 6 of the OpenGL 1.3 Specification (State and State Requests) |
None
Additions to the GLX Specification |
This specification is written for WGL.
This specification is written for WGL.
Additions to the WGL Specification |
Modify the values accepted by WGL_PIXEL_TYPE_ARB to:
WGL_PIXEL_TYPE_ARB
The type of pixel data. This can be set to WGL_TYPE_RGBA_ARB,
WGL_TYPE_RGBA_FLAOT_ARB, or WGL_TYPE_COLORINDEX_ARB.
Dependencies on WGL_ARB_pixel_format |
The WGL_ARB_pixel_format extension must be used to determine a
pixel format with float components.
Dependencies on WGL_ARB_extensions_string |
Because this extension is a WGL extension, it is not included in
the GL_EXTENSIONS string. Its existence can be determined with
the WGL_ARB_extensions_string extension.
None
(table 6.19, p227) modify COLOR_CLEAR_VALUE and add
COLOR_CLEAR_UNCLAMPED_VALUE:
Get Value Type Get Command Initial Value Description Section Attribute
------------------------------- ----- ----------- ------------- ------------------ ------- ------------
COLOR_CLEAR_VALUE C GetFloatv 0,0,0,0 Color buffer clear 4.2.3 color-buffer
value (RGBA mode)
clamped to [0,1]
COLOR_CLEAR_UNCLAMPED_VALUE_ATI 4 x R GetFloatv 0,0,0,0 Color buffer clear 4.2.3 color-buffer
value (RGBA mode)
unclamped
(table 6.28, p236) add the following entry:
Get Value Type Get Command Minimum Value Description Section Attribute
-------------------- ----- ------------ ------------- --------------- -------- ----------
RGBA_FLOAT_MODE_ATI B GetBooleanv - True if RGBA 2.7 -
components are
floats
New Implementation Dependent State |
None
Date: 12/4/2002
Revision: 5
- Added Section 2.1.2 16 Bit Floating-Point.
Date: 9/12/2002
Revision: 4
- Fixed typo, CLEAR_COLOR_VALUE is really COLOR_CLEAR_VALUE.
Date: 9/11/2002
Revision: 3
- Added enum numbers to New Tokens.
- Added CLEAR_COLOR_UNCLAMPED_VALUE_ATI and defined behavior of
CLEAR_COLOR_VALUE.
- Added description of change to figure 3.7.
- Clarified float clamping in section 3.6.4.
Date: 9/9/2002
Revision: 2
- Changed wording of how float clamping is described in Overview.
Date: 9/6/2002
Revision: 1
- First draft for circulation.
| | Last update: November 14, 2006. Cette page doit être lue avec un navigateur récent respectant le standard XHTML 1.1. |