Back to the OpenGL extension cross reference

GL_ATI_envmap_bumpmap


Name


    ATI_envmap_bumpmap

Name Strings


    GL_ATI_envmap_bumpmap

Contact


    Dan Ginsburg, ATI Research (dginsbur 'at' ati.com)


Version


    Date: 1/09/2003
Revision: 1.01

Number


    244

Dependencies


    EXT_texture_env_combine is required by this extension.
ARB_multitexture is required by this extension.

Overview


    This extension adds environment mapped bump mapping (EMBM) to the GL.
The method exposed by this extension is to use a dependent texture
read on a bumpmap (du,dv) texture to offset the texture coordinates
read into a map on another texture unit. This (du,dv) offset is also
rotated through a user-specified rotation matrix to get the texture
coordinates into the appropriate space.

A new texture format is introduced in order for specifying the (du,dv)
bumpmap texture. This map represents -1 <= du,dv <= 1 offsets to
be applied to the texture coordinates used to read into the base
map. Additionally, the (du,dv) offsets are transformed by a rotation
matrix that this extension allows the user to specify. Further, a
new color operation is added to EXT_texture_env_combine to specify
both that bumpmapping is enabled and which texture unit to apply
the bump offset to.

Issues


    None known.

New Procedures and Functions


    void TexBumpParameter[i|f]vATI(enum pname, TYPE *param)

void GetTexBumpParameter[i|f]vATI(enum pname, TYPE *param)

New Tokens


    Accepted by the <pname> parameter of TexBumpParameter[i|f]vATI

BUMP_ROT_MATRIX_ATI 0x8775

Accepted by the <pname> parameter of GetTexBumpParameter[i|f]vATI

BUMP_ROT_MATRIX_ATI
BUMP_ROT_MATRIX_SIZE_ATI 0x8776
BUMP_NUM_TEX_UNITS_ATI 0x8777
BUMP_TEX_UNITS_ATI 0x8778

Accepted by the <format> parameter of GetTexImage and TexImage2D

DUDV_ATI 0x8779
DU8DV8_ATI 0x877A

Accepted by the <components> parameter of TexImage2D

DUDV_ATI
DU8DV8_ATI

Accepted by the <params> parameter of TexEnvf, TexEnvi, TexEnvfv,
and TexEnviv when the <pname> parameter value is COMBINE_RGB_EXT

BUMP_ENVMAP_ATI 0x877B

Accepted by the <pname> parameter of TexEnvf, TexEnvi, TexEnvfv,
and TexEnviv when the <target> parameter value is TEXTURE_ENV

BUMP_TARGET_ATI 0x877C

Accepted by the <params> parameter of TexEnvf, TexEnvi, TexEnvfv,
and TexEnviv when the <pname> parameter value is BUMP_TARGET_ATI

TEXTURE0_ARB
TEXTURE1_ARB
TEXTURE2_ARB
TEXTURE3_ARB
TEXTURE4_ARB
TEXTURE5_ARB
TEXTURE6_ARB
TEXTURE7_ARB
TEXTURE8_ARB
TEXTURE9_ARB
TEXTURE10_ARB
TEXTURE11_ARB
TEXTURE12_ARB
TEXTURE13_ARB
TEXTURE14_ARB
TEXTURE15_ARB
TEXTURE16_ARB
TEXTURE17_ARB
TEXTURE18_ARB
TEXTURE19_ARB
TEXTURE20_ARB
TEXTURE21_ARB
TEXTURE22_ARB
TEXTURE23_ARB
TEXTURE24_ARB
TEXTURE25_ARB
TEXTURE26_ARB
TEXTURE27_ARB
TEXTURE28_ARB
TEXTURE29_ARB
TEXTURE30_ARB
TEXTURE31_ARB


Additions to Chapter 2 of the OpenGL 1.2.1 Specification (Operation):


    None

Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization)


    - (p.144, Table 3.15) Add row to table:

"Base Internal Format RGBA Values Internal Components
-------------------- ----------- -------------------
DUDV_ATI undefined U,V"

- (p. 155, Table 3.16) Add rows to table, add last two columns:

"Sized Base R G B A L I U V
Internal Format Internal Format bits bits bits bits bits bits bits bits
--------------- --------------- ---- ---- ---- ---- ---- ---- ---- ----
DU8DV8_ATI DUDV_ATI 8 8"

- (p. 136 Table 3.18) Add Row:

"Base REPLACE MODULATE
Internal Format Texture Function Texture Function
--------------- ---------------- ----------------
DUDV_ATI undefined undefined"

- (p. 137 Table 3.19) Add Row:

"Base DECAL BLEND
Internal Format Texture Function Texture Function
--------------- ---------------- ----------------
DUDV_ATI undefined undefined"


Table 3.23: Correspondence of texture components to source
components for COMBINE_RGB_EXT and COMBINE_ALPHA_EXT arguments"

- (p.138, add new section 3.8.11)

"3.8.11 Texture Bump Parameters

The parameters for environment mapped bump mapping are set through
the entry point:

void TexBumpParameter[i|f]vATI(enum pname, TYPE *param)

When pname is BUMP_ROT_MATRIX_ATI, the rotation matrix applied to
each (du, dv) coordinate read from the bumpmap is specified
(see section 3.8.9 on environment mapped bump mapping). The size
of the rotation matrix can vary across implementations (to allow for
future expansion with support for offsets to more than just two
coordinates). This size can be queried for using:

void GetTexBumpParamter[i|f]vATI(enum pname, TYPE *param)

with pname as BUMP_ROT_MATRIX_SIZE_ATI. This returns the number
of entries in the BUMP_ROT_MATRIX. When pname is BUMP_NUM_TEX_UNITS_ATI,
the number of texture units that support bump mapping is returned.
Given this, an array of supported texture units that support bumpmapping
can be queried. When pname is BUMP_TEX_UNITS_ATI, an array of size
BUMP_NUM_TEX_UNITS_ATI is returned in which each element is one of the
valid texture units (TEXTURE0_ARB, TEXTURE1_ARB, etc.)."

- After Table 3.20 in EXT_texture_env_combine:

"In addition, a special-case COMBINE_RGB_EXT function exists for performing
environment mapped bump mapping. This function does not behave as
the standard combine functions. Instead, it specifies that the given
texture unit has a bumpmap which will be used to offset the texture coordinate
reads onto another unit.

The texture unit which the bumpmap will bump is specified by setting the
BUMP_TARGET_ATI to be a valid texture unit.

Environment mapped bump mapping then works as follows:

The (du,dv) offset map specified on the texture unit with BUMP_ENVMAP_ATI
will be used to offset the texture coordinates read into the map on the
BUMP_TARGET_ATI unit. The (du,dv) texel will be fetched from the bumpmap
at the texture coordinate specified for the bumpmap. This (du,dv) texel
will then be rotated through the BUMP_ROT_MATRIX:

du' = du * Rot[00] + dv * Rot[01]
dv' = du * Rot[10] + dv * Rot[11]

(du',dv') will then be used to offset the (u,v) coordinates used to read
into the texture on BUMP_TARGET_ATI:

u = u + du'
v = v + dv'

These final coordinates are then used to fetch from the texture on
BUMP_TARGET_ATI."


- Change to table 3.23 in EXT_texture_env_combine:

"Base Internal Format RGB Values Alpha Value
-------------------- ---------- -----------
ALPHA 0, 0, 0 At
LUMINANCE Lt, Lt, Lt 1
LUMINANCE_ALPHA Lt, Lt, Lt At
INTENSITY It, It, It It
RGB Rt, Gt, Bt 1
RGBA Rt, Gt, Bt At
DUDV_ATI 0, 0, 0 1
"



Additions to Chapter 4:


    None

Additions to Chapter 5:


    None

Additions to Chapter 6:


    None

Additions to the GLX Specification


    None


GLX Protocol


    None

Dependencies on EXT_point_parameters


    

Errors


    INVALID_ENUM if TexBumpParameter[i|f]vATI is called with pname not equal to
BUMP_ROT_MATRIX_ATI.

INVALID_ENUM if GetTexBumpParameter[i|f]vATI is called with pname not equal
to BUMP_ROT_MATRIX_ATI, BUMP_ROT_MATRIX_SIZE_ATI, BUMP_NUM_TEX_UNITS_ATI,
or BUMP_TEX_UNITS_ATI.

INVALID_VALUE if the combineRGB function is set on a unit not supported as
queried with BUMP_TEX_UNITS_ATI.

New State


    Get Value                   Get Command           Type     Minimum Value  Description
--------- ----------- ---- ------------- -----------
BUMP_ROT_MATRIX_ATI GetTexBumpParameterfv n x F - Bump rotation matrix on current unit
BUMP_ROT_MATRIX_SIZE_ATI GetTexBumpParameteriv Z+ 4 Bump rotation matrix size
BUMP_NUM_TEX_UNITS_ATI GetTexBumpParameteriv Z+ 1 Number of bump texture units
BUMP_TEX_UNITS_ATI GetTexBumpParameteriv n x Z+ - Supported bump texture units


New Implementation Dependent State


    None


Revision History


   Date: 1/09/2003
Revision: 1.01
- Added an error condition.

Date: 8/21/2001
Revision: 1.0
- First release.

Implementation Support


   List of OpenGL implementations supporting the GL_ATI_envmap_bumpmap extension

Original File


   Original text file for the GL_ATI_envmap_bumpmap extension


Page generated on Sun Nov 20 18:40:26 2005