• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    ATI_texture_float
4
5Name Strings
6
7    GL_ATI_texture_float
8
9Contact
10
11    Rob Mace, AMD (rob.mace 'at' amd.com)
12
13Status
14
15    Complete.
16
17Version
18
19    Last Modified Date: November 4, 2006
20    Revision: 5
21
22Number
23
24    280
25
26Dependencies
27
28    OpenGL 1.1 or EXT_texture is required.
29
30    The extension is written against the OpenGL 1.3 Specification.
31
32
33Overview
34
35    This extension adds texture internal formats with 32 and 16 bit
36    floating-point components.  The 32 bit floating-point components
37    are in the standard IEEE float format.  The 16 bit floating-point
38    components have 1 sign bit, 5 exponent bits, and 10 mantissa bits.
39    Floating-point components are clamped to the limits of the range
40    representable by their format.
41
42
43Issues
44
45    1. Should we expose a GL_FLOAT16_ATI pixel type so that the 16 bit
46       float textures can be directly loaded?
47
48       RESOLUTION:  This will be exposed in a separate extension.
49
50
51New Procedures and Functions
52
53   None
54
55
56New Tokens
57
58    Accepted by the <internalFormat> parameter of TexImage1D,
59    TexImage2D, and TexImage3D:
60
61        RGBA_FLOAT32_ATI                 0x8814
62        RGB_FLOAT32_ATI                  0x8815
63        ALPHA_FLOAT32_ATI                0x8816
64        INTENSITY_FLOAT32_ATI            0x8817
65        LUMINANCE_FLOAT32_ATI            0x8818
66        LUMINANCE_ALPHA_FLOAT32_ATI      0x8819
67        RGBA_FLOAT16_ATI                 0x881A
68        RGB_FLOAT16_ATI                  0x881B
69        ALPHA_FLOAT16_ATI                0x881C
70        INTENSITY_FLOAT16_ATI            0x881D
71        LUMINANCE_FLOAT16_ATI            0x881E
72        LUMINANCE_ALPHA_FLOAT16_ATI      0x881F
73
74
75
76Additions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL
77Operation)
78
79    Add a new Section 2.1.2, (p. 6):
80
81      2.1.2  16 Bit Floating-Point
82
83      A 16 bit floating-point number has 1 sign bit (s), 5 exponent
84      bits (e), and 10 mantissa bits (m).  The value (v) of a 16 bit
85      floating-point number is determined by the following pseudo code:
86
87        if (e != 0)
88            v = (-1)^s * 2^(e-15) * 1.m  # normalized
89        else if (f == 0)
90            v = (-1)^s * 0               # zero
91        else
92            v = (-1)^s * 2^(e-14) * 0.m  # denormalized
93
94      It is acceptable for an implementation to treat denormalized 16 bit
95      floating-point numbers as zero.
96
97      There are no NAN or infinity values for 16 bit floating-point.
98
99
100Additions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization)
101
102    Section 3.8.1, (p. 116), change the last sentence on the page to:
103
104      Each R, G, B, and A value so generated is clamped based on the
105      component type in the <internalFormat>.  Fixed-point components
106      are clamped to [0, 1].  Floating-point components are clamped
107      to the limits of the range representable by their format.  32
108      bit floating- point components are in the standard IEEE float
109      format.  16 bit floating-point components have 1 sign bit, 5
110      exponent bits, and 10 mantissa bits.
111
112    Section 3.8.1, (p. 119), add the following to table 3.16:
113
114      Sized                       Base             R    G    B    A    L    I
115      Internal Format             Internal Format bits bits bits bits bits bits
116      --------------------------- --------------- ---- ---- ---- ---- ---- ----
117      RGBA_FLOAT32_ATI            RGBA            f32  f32  f32  f32
118      RGB_FLOAT32_ATI             RGB             f32  f32  f32
119      ALPHA_FLOAT32_ATI           ALPHA                          f32
120      INTENSITY_FLOAT32_ATI       INTENSITY                                f32
121      LUMINANCE_FLOAT32_ATI       LUMINANCE                           f32
122      LUMINANCE_ALPHA_FLOAT32_ATI LUMINANCE_ALPHA                f32  f32
123      RGBA_FLOAT16_ATI            RGBA            f16  f16  f16  f16
124      RGB_FLOAT16_ATI             RGB             f16  f16  f16
125      ALPHA_FLOAT16_ATI           ALPHA                          f16
126      INTENSITY_FLOAT16_ATI       INTENSITY                                f16
127      LUMINANCE_FLOAT16_ATI       LUMINANCE                           f16
128      LUMINANCE_ALPHA_FLOAT16_ATI LUMINANCE_ALPHA                f16  f16
129
130
131Additions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment
132Operations and the Frame Buffer)
133
134    None
135
136
137Additions to Chapter 5 of the OpenGL 1.3 Specification (Special
138Functions)
139
140    None
141
142
143Additions to Chapter 6 of the OpenGL 1.3 Specification (State and
144State Requests)
145
146    None
147
148
149Errors
150
151    None
152
153
154New State
155
156    None
157
158
159New Implementation Dependent State
160
161    None
162
163
164Revision History
165
166   Date: 11/4/2006
167   Revision: 5
168      - Updated contact info after ATI/AMD merger.
169
170   Date: 12/4/2002
171   Revision: 4
172      - Added Section 2.1.2 16 Bit Floating-Point.
173
174   Date: 9/11/2002
175   Revision: 3
176      - Changed description of float clamping to be consistent with
177        WGL_ATI_pixel_format_float.
178
179   Date: 9/6/2002
180   Revision: 2
181      - Changed unsigned integer components to fixed-point components.
182      - Resolved GL_FLOAT16_ATI issue.
183      - Cleaned up typos.
184
185   Date: 8/18/2002
186   Revision: 1
187      - First draft for circulation.
188