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