blob: 9a0652789d51b88e2cf03c7e5b5dbc57ae901665 [file] [log] [blame]
Name
ATI_texture_float
Name Strings
GL_ATI_texture_float
Contact
Rob Mace, AMD (rob.mace 'at' amd.com)
Status
Complete.
Version
Last Modified Date: November 4, 2006
Revision: 5
Number
280
Dependencies
OpenGL 1.1 or EXT_texture is required.
The extension is written against the OpenGL 1.3 Specification.
Overview
This extension adds texture internal formats with 32 and 16 bit
floating-point components. The 32 bit floating-point components
are in the standard IEEE float format. The 16 bit floating-point
components have 1 sign bit, 5 exponent bits, and 10 mantissa bits.
Floating-point components are clamped to the limits of the range
representable by their format.
Issues
1. Should we expose a GL_FLOAT16_ATI pixel type so that the 16 bit
float textures can be directly loaded?
RESOLUTION: This will be exposed in a separate extension.
New Procedures and Functions
None
New Tokens
Accepted by the <internalFormat> parameter of TexImage1D,
TexImage2D, and TexImage3D:
RGBA_FLOAT32_ATI 0x8814
RGB_FLOAT32_ATI 0x8815
ALPHA_FLOAT32_ATI 0x8816
INTENSITY_FLOAT32_ATI 0x8817
LUMINANCE_FLOAT32_ATI 0x8818
LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
RGBA_FLOAT16_ATI 0x881A
RGB_FLOAT16_ATI 0x881B
ALPHA_FLOAT16_ATI 0x881C
INTENSITY_FLOAT16_ATI 0x881D
LUMINANCE_FLOAT16_ATI 0x881E
LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
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.8.1, (p. 116), change the last sentence on the page to:
Each R, G, B, and A value so generated is clamped based on the
component type in the <internalFormat>. Fixed-point components
are clamped to [0, 1]. Floating-point components are clamped
to the limits of the range representable by their format. 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.
Section 3.8.1, (p. 119), add the following to table 3.16:
Sized Base R G B A L I
Internal Format Internal Format bits bits bits bits bits bits
--------------------------- --------------- ---- ---- ---- ---- ---- ----
RGBA_FLOAT32_ATI RGBA f32 f32 f32 f32
RGB_FLOAT32_ATI RGB f32 f32 f32
ALPHA_FLOAT32_ATI ALPHA f32
INTENSITY_FLOAT32_ATI INTENSITY f32
LUMINANCE_FLOAT32_ATI LUMINANCE f32
LUMINANCE_ALPHA_FLOAT32_ATI LUMINANCE_ALPHA f32 f32
RGBA_FLOAT16_ATI RGBA f16 f16 f16 f16
RGB_FLOAT16_ATI RGB f16 f16 f16
ALPHA_FLOAT16_ATI ALPHA f16
INTENSITY_FLOAT16_ATI INTENSITY f16
LUMINANCE_FLOAT16_ATI LUMINANCE f16
LUMINANCE_ALPHA_FLOAT16_ATI LUMINANCE_ALPHA f16 f16
Additions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment
Operations and the Frame Buffer)
None
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
Errors
None
New State
None
New Implementation Dependent State
None
Revision History
Date: 11/4/2006
Revision: 5
- Updated contact info after ATI/AMD merger.
Date: 12/4/2002
Revision: 4
- Added Section 2.1.2 16 Bit Floating-Point.
Date: 9/11/2002
Revision: 3
- Changed description of float clamping to be consistent with
WGL_ATI_pixel_format_float.
Date: 9/6/2002
Revision: 2
- Changed unsigned integer components to fixed-point components.
- Resolved GL_FLOAT16_ATI issue.
- Cleaned up typos.
Date: 8/18/2002
Revision: 1
- First draft for circulation.