• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    ATI_envmap_bumpmap
4
5Name Strings
6
7    GL_ATI_envmap_bumpmap
8
9Contact
10
11    Dan Ginsburg, AMD (dan.ginsburg 'at' amd.com)
12
13
14Version
15
16    Date: 11/04/2006
17    Revision: 1.02
18
19Number
20
21    244
22
23Dependencies
24
25    EXT_texture_env_combine is required by this extension.
26    ARB_multitexture is required by this extension.
27
28Overview
29
30    This extension adds environment mapped bump mapping (EMBM) to the GL.
31    The method exposed by this extension is to use a dependent texture
32    read on a bumpmap (du,dv) texture to offset the texture coordinates
33    read into a map on another texture unit.  This (du,dv) offset is also
34    rotated through a user-specified rotation matrix to get the texture
35    coordinates into the appropriate space.
36
37    A new texture format is introduced in order for specifying the (du,dv)
38    bumpmap texture.  This map represents -1 <= du,dv <= 1 offsets to
39    be applied to the texture coordinates used to read into the base
40    map.  Additionally, the (du,dv) offsets are transformed by a rotation
41    matrix that this extension allows the user to specify.  Further, a
42    new color operation is added to EXT_texture_env_combine to specify
43    both that bumpmapping is enabled and which texture unit to apply
44    the bump offset to.
45
46Issues
47
48    None known.
49
50New Procedures and Functions
51
52    void TexBumpParameter[i|f]vATI(enum pname, TYPE *param)
53
54    void GetTexBumpParameter[i|f]vATI(enum pname, TYPE *param)
55
56New Tokens
57
58    Accepted by the <pname> parameter of TexBumpParameter[i|f]vATI
59
60        BUMP_ROT_MATRIX_ATI            0x8775
61
62    Accepted by the <pname> parameter of GetTexBumpParameter[i|f]vATI
63
64        BUMP_ROT_MATRIX_ATI
65        BUMP_ROT_MATRIX_SIZE_ATI       0x8776
66        BUMP_NUM_TEX_UNITS_ATI         0x8777
67        BUMP_TEX_UNITS_ATI             0x8778
68
69    Accepted by the <format> parameter of GetTexImage and TexImage2D
70
71        DUDV_ATI                       0x8779
72	DU8DV8_ATI                     0x877A
73
74    Accepted by the <components> parameter of TexImage2D
75
76        DUDV_ATI
77	DU8DV8_ATI
78
79    Accepted by the <params> parameter of TexEnvf, TexEnvi, TexEnvfv,
80    and TexEnviv when the <pname> parameter value is COMBINE_RGB_EXT
81
82        BUMP_ENVMAP_ATI                0x877B
83
84    Accepted by the <pname> parameter of TexEnvf, TexEnvi, TexEnvfv,
85    and TexEnviv when the <target> parameter value is TEXTURE_ENV
86
87        BUMP_TARGET_ATI                0x877C
88
89    Accepted by the <params> parameter of TexEnvf, TexEnvi, TexEnvfv,
90    and TexEnviv when the <pname> parameter value is BUMP_TARGET_ATI
91
92        TEXTURE0_ARB
93        TEXTURE1_ARB
94        TEXTURE2_ARB
95        TEXTURE3_ARB
96        TEXTURE4_ARB
97        TEXTURE5_ARB
98        TEXTURE6_ARB
99        TEXTURE7_ARB
100        TEXTURE8_ARB
101        TEXTURE9_ARB
102        TEXTURE10_ARB
103        TEXTURE11_ARB
104        TEXTURE12_ARB
105        TEXTURE13_ARB
106        TEXTURE14_ARB
107        TEXTURE15_ARB
108        TEXTURE16_ARB
109        TEXTURE17_ARB
110        TEXTURE18_ARB
111        TEXTURE19_ARB
112        TEXTURE20_ARB
113        TEXTURE21_ARB
114        TEXTURE22_ARB
115        TEXTURE23_ARB
116        TEXTURE24_ARB
117        TEXTURE25_ARB
118        TEXTURE26_ARB
119        TEXTURE27_ARB
120        TEXTURE28_ARB
121        TEXTURE29_ARB
122        TEXTURE30_ARB
123        TEXTURE31_ARB
124
125
126Additions to Chapter 2 of the OpenGL 1.2.1 Specification (Operation):
127
128    None
129
130Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization)
131
132    - (p.144, Table 3.15) Add row to table:
133
134    "Base Internal Format            RGBA Values      Internal Components
135     --------------------            -----------      -------------------
136     DUDV_ATI                        undefined        U,V"
137
138    - (p. 155, Table 3.16) Add rows to table, add last two columns:
139
140    "Sized               Base             R    G    B    A    L    I    U    V
141     Internal Format     Internal Format  bits bits bits bits bits bits bits bits
142     ---------------     ---------------  ---- ---- ---- ---- ---- ---- ---- ----
143     DU8DV8_ATI          DUDV_ATI                                       8    8"
144
145    - (p. 136 Table 3.18) Add Row:
146
147    "Base               REPLACE            MODULATE
148     Internal Format    Texture Function   Texture Function
149     ---------------    ----------------   ----------------
150     DUDV_ATI           undefined          undefined"
151
152    - (p. 137 Table 3.19) Add Row:
153
154    "Base               DECAL              BLEND
155     Internal Format    Texture Function   Texture Function
156     ---------------    ----------------   ----------------
157     DUDV_ATI           undefined          undefined"
158
159
160        Table 3.23: Correspondence of texture components to source
161        components for COMBINE_RGB_EXT and COMBINE_ALPHA_EXT arguments"
162
163    - (p.138, add new section 3.8.11)
164
165    "3.8.11 Texture Bump Parameters
166
167    The parameters for environment mapped bump mapping are set through
168    the entry point:
169
170       void TexBumpParameter[i|f]vATI(enum pname, TYPE *param)
171
172    When pname is BUMP_ROT_MATRIX_ATI, the rotation matrix applied to
173    each (du, dv) coordinate read from the bumpmap is specified
174    (see section 3.8.9 on environment mapped bump mapping).  The size
175    of the rotation matrix can vary across implementations (to allow for
176    future expansion with support for offsets to more than just two
177    coordinates).  This size can be queried for using:
178
179       void GetTexBumpParamter[i|f]vATI(enum pname, TYPE *param)
180
181    with pname as BUMP_ROT_MATRIX_SIZE_ATI.  This returns the number
182    of entries in the BUMP_ROT_MATRIX.  When pname is BUMP_NUM_TEX_UNITS_ATI,
183    the number of texture units that support bump mapping is returned.
184    Given this, an array of supported texture units that support bumpmapping
185    can be queried.  When pname is BUMP_TEX_UNITS_ATI, an array of size
186    BUMP_NUM_TEX_UNITS_ATI is returned in which each element is one of the
187    valid texture units (TEXTURE0_ARB, TEXTURE1_ARB, etc.)."
188
189   - After Table 3.20 in EXT_texture_env_combine:
190
191   "In addition, a special-case COMBINE_RGB_EXT function exists for performing
192    environment mapped bump mapping.  This function does not behave as
193    the standard combine functions.  Instead, it specifies that the given
194    texture unit has a bumpmap which will be used to offset the texture coordinate
195    reads onto another unit.
196
197    The texture unit which the bumpmap will bump is specified by setting the
198    BUMP_TARGET_ATI to be a valid texture unit.
199
200    Environment mapped bump mapping then works as follows:
201
202    The (du,dv) offset map specified on the texture unit with BUMP_ENVMAP_ATI
203    will be used to offset the texture coordinates read into the map on the
204    BUMP_TARGET_ATI unit.  The (du,dv) texel will be fetched from the bumpmap
205    at the texture coordinate specified for the bumpmap.  This (du,dv) texel
206    will then be rotated through the BUMP_ROT_MATRIX:
207
208      du' = du * Rot[00] + dv * Rot[01]
209      dv' = du * Rot[10] + dv * Rot[11]
210
211    (du',dv') will then be used to offset the (u,v) coordinates used to read
212    into the texture on BUMP_TARGET_ATI:
213
214      u = u + du'
215      v = v + dv'
216
217    These final coordinates are then used to fetch from the texture on
218    BUMP_TARGET_ATI."
219
220
221    - Change to table 3.23 in EXT_texture_env_combine:
222
223    "Base Internal Format		RGB Values	Alpha Value
224     --------------------		----------	-----------
225     ALPHA                              0,  0,  0       At
226     LUMINANCE                          Lt, Lt, Lt      1
227     LUMINANCE_ALPHA                    Lt, Lt, Lt      At
228     INTENSITY                          It, It, It      It
229     RGB                                Rt, Gt, Bt      1
230     RGBA                               Rt, Gt, Bt      At
231     DUDV_ATI                           0, 0, 0         1
232    "
233
234
235
236Additions to Chapter 4:
237
238    None
239
240Additions to Chapter 5:
241
242    None
243
244Additions to Chapter 6:
245
246    None
247
248Additions to the GLX Specification
249
250    None
251
252
253GLX Protocol
254
255    None
256
257Dependencies on EXT_point_parameters
258
259
260Errors
261
262    INVALID_ENUM if TexBumpParameter[i|f]vATI is called with pname not equal to
263       BUMP_ROT_MATRIX_ATI.
264
265    INVALID_ENUM if GetTexBumpParameter[i|f]vATI is called with pname not equal
266       to BUMP_ROT_MATRIX_ATI, BUMP_ROT_MATRIX_SIZE_ATI, BUMP_NUM_TEX_UNITS_ATI,
267       or BUMP_TEX_UNITS_ATI.
268
269    INVALID_VALUE if the combineRGB function is set on a unit not supported as
270       queried with BUMP_TEX_UNITS_ATI.
271
272New State
273
274    Get Value                   Get Command           Type     Minimum Value  Description
275    ---------                   -----------           ----     -------------  -----------
276    BUMP_ROT_MATRIX_ATI         GetTexBumpParameterfv n x F    -              Bump rotation matrix on current unit
277    BUMP_ROT_MATRIX_SIZE_ATI    GetTexBumpParameteriv Z+       4              Bump rotation matrix size
278    BUMP_NUM_TEX_UNITS_ATI      GetTexBumpParameteriv Z+       1              Number of bump texture units
279    BUMP_TEX_UNITS_ATI          GetTexBumpParameteriv n x Z+   -              Supported bump texture units
280
281
282New Implementation Dependent State
283
284    None
285
286
287Revision History
288
289   Date: 11/4/2006
290   Revision: 1.02
291      - Updated contact info after ATI/AMD merger.
292
293   Date: 1/09/2003
294   Revision: 1.01
295      - Added an error condition.
296
297   Date: 8/21/2001
298   Revision: 1.0
299      - First release.
300
301