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 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 . 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.