15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ATI_envmap_bumpmap
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ATI_envmap_bumpmap
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Dan Ginsburg, AMD (dan.ginsburg 'at' amd.com)
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciVersion
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    Date: 11/04/2006
175bd8deadSopenharmony_ci    Revision: 1.02
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciNumber
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    244
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciDependencies
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    EXT_texture_env_combine is required by this extension.
265bd8deadSopenharmony_ci    ARB_multitexture is required by this extension.
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ciOverview
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci    This extension adds environment mapped bump mapping (EMBM) to the GL.
315bd8deadSopenharmony_ci    The method exposed by this extension is to use a dependent texture
325bd8deadSopenharmony_ci    read on a bumpmap (du,dv) texture to offset the texture coordinates
335bd8deadSopenharmony_ci    read into a map on another texture unit.  This (du,dv) offset is also 
345bd8deadSopenharmony_ci    rotated through a user-specified rotation matrix to get the texture 
355bd8deadSopenharmony_ci    coordinates into the appropriate space.
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    A new texture format is introduced in order for specifying the (du,dv)
385bd8deadSopenharmony_ci    bumpmap texture.  This map represents -1 <= du,dv <= 1 offsets to
395bd8deadSopenharmony_ci    be applied to the texture coordinates used to read into the base
405bd8deadSopenharmony_ci    map.  Additionally, the (du,dv) offsets are transformed by a rotation
415bd8deadSopenharmony_ci    matrix that this extension allows the user to specify.  Further, a 
425bd8deadSopenharmony_ci    new color operation is added to EXT_texture_env_combine to specify 
435bd8deadSopenharmony_ci    both that bumpmapping is enabled and which texture unit to apply 
445bd8deadSopenharmony_ci    the bump offset to.  
455bd8deadSopenharmony_ci    
465bd8deadSopenharmony_ciIssues
475bd8deadSopenharmony_ci    
485bd8deadSopenharmony_ci    None known.
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ciNew Procedures and Functions
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    void TexBumpParameter[i|f]vATI(enum pname, TYPE *param)
535bd8deadSopenharmony_ci
545bd8deadSopenharmony_ci    void GetTexBumpParameter[i|f]vATI(enum pname, TYPE *param)
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ciNew Tokens
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    Accepted by the <pname> parameter of TexBumpParameter[i|f]vATI
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ci        BUMP_ROT_MATRIX_ATI            0x8775
615bd8deadSopenharmony_ci    
625bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetTexBumpParameter[i|f]vATI
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci        BUMP_ROT_MATRIX_ATI                
655bd8deadSopenharmony_ci        BUMP_ROT_MATRIX_SIZE_ATI       0x8776
665bd8deadSopenharmony_ci        BUMP_NUM_TEX_UNITS_ATI         0x8777
675bd8deadSopenharmony_ci        BUMP_TEX_UNITS_ATI             0x8778
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ci    Accepted by the <format> parameter of GetTexImage and TexImage2D
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ci        DUDV_ATI                       0x8779
725bd8deadSopenharmony_ci	DU8DV8_ATI                     0x877A
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ci    Accepted by the <components> parameter of TexImage2D
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci        DUDV_ATI
775bd8deadSopenharmony_ci	DU8DV8_ATI
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci    Accepted by the <params> parameter of TexEnvf, TexEnvi, TexEnvfv,
805bd8deadSopenharmony_ci    and TexEnviv when the <pname> parameter value is COMBINE_RGB_EXT
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci        BUMP_ENVMAP_ATI                0x877B
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci    Accepted by the <pname> parameter of TexEnvf, TexEnvi, TexEnvfv,
855bd8deadSopenharmony_ci    and TexEnviv when the <target> parameter value is TEXTURE_ENV
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ci        BUMP_TARGET_ATI                0x877C
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci    Accepted by the <params> parameter of TexEnvf, TexEnvi, TexEnvfv,
905bd8deadSopenharmony_ci    and TexEnviv when the <pname> parameter value is BUMP_TARGET_ATI    
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ci        TEXTURE0_ARB
935bd8deadSopenharmony_ci        TEXTURE1_ARB
945bd8deadSopenharmony_ci        TEXTURE2_ARB
955bd8deadSopenharmony_ci        TEXTURE3_ARB
965bd8deadSopenharmony_ci        TEXTURE4_ARB
975bd8deadSopenharmony_ci        TEXTURE5_ARB
985bd8deadSopenharmony_ci        TEXTURE6_ARB
995bd8deadSopenharmony_ci        TEXTURE7_ARB
1005bd8deadSopenharmony_ci        TEXTURE8_ARB
1015bd8deadSopenharmony_ci        TEXTURE9_ARB
1025bd8deadSopenharmony_ci        TEXTURE10_ARB
1035bd8deadSopenharmony_ci        TEXTURE11_ARB
1045bd8deadSopenharmony_ci        TEXTURE12_ARB
1055bd8deadSopenharmony_ci        TEXTURE13_ARB
1065bd8deadSopenharmony_ci        TEXTURE14_ARB
1075bd8deadSopenharmony_ci        TEXTURE15_ARB
1085bd8deadSopenharmony_ci        TEXTURE16_ARB
1095bd8deadSopenharmony_ci        TEXTURE17_ARB
1105bd8deadSopenharmony_ci        TEXTURE18_ARB
1115bd8deadSopenharmony_ci        TEXTURE19_ARB
1125bd8deadSopenharmony_ci        TEXTURE20_ARB
1135bd8deadSopenharmony_ci        TEXTURE21_ARB
1145bd8deadSopenharmony_ci        TEXTURE22_ARB
1155bd8deadSopenharmony_ci        TEXTURE23_ARB
1165bd8deadSopenharmony_ci        TEXTURE24_ARB
1175bd8deadSopenharmony_ci        TEXTURE25_ARB
1185bd8deadSopenharmony_ci        TEXTURE26_ARB
1195bd8deadSopenharmony_ci        TEXTURE27_ARB
1205bd8deadSopenharmony_ci        TEXTURE28_ARB
1215bd8deadSopenharmony_ci        TEXTURE29_ARB
1225bd8deadSopenharmony_ci        TEXTURE30_ARB
1235bd8deadSopenharmony_ci        TEXTURE31_ARB
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.2.1 Specification (Operation):
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ci    None
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization)
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    - (p.144, Table 3.15) Add row to table:
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci    "Base Internal Format            RGBA Values      Internal Components
1355bd8deadSopenharmony_ci     --------------------            -----------      -------------------
1365bd8deadSopenharmony_ci     DUDV_ATI                        undefined        U,V"
1375bd8deadSopenharmony_ci
1385bd8deadSopenharmony_ci    - (p. 155, Table 3.16) Add rows to table, add last two columns:
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci    "Sized               Base             R    G    B    A    L    I    U    V
1415bd8deadSopenharmony_ci     Internal Format     Internal Format  bits bits bits bits bits bits bits bits
1425bd8deadSopenharmony_ci     ---------------     ---------------  ---- ---- ---- ---- ---- ---- ---- ----
1435bd8deadSopenharmony_ci     DU8DV8_ATI          DUDV_ATI                                       8    8"
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    - (p. 136 Table 3.18) Add Row:
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci    "Base               REPLACE            MODULATE
1485bd8deadSopenharmony_ci     Internal Format    Texture Function   Texture Function
1495bd8deadSopenharmony_ci     ---------------    ----------------   ----------------
1505bd8deadSopenharmony_ci     DUDV_ATI           undefined          undefined"
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci    - (p. 137 Table 3.19) Add Row:
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci    "Base               DECAL              BLEND
1555bd8deadSopenharmony_ci     Internal Format    Texture Function   Texture Function
1565bd8deadSopenharmony_ci     ---------------    ----------------   ----------------
1575bd8deadSopenharmony_ci     DUDV_ATI           undefined          undefined"
1585bd8deadSopenharmony_ci
1595bd8deadSopenharmony_ci	
1605bd8deadSopenharmony_ci        Table 3.23: Correspondence of texture components to source
1615bd8deadSopenharmony_ci        components for COMBINE_RGB_EXT and COMBINE_ALPHA_EXT arguments"
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    - (p.138, add new section 3.8.11)
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci    "3.8.11 Texture Bump Parameters
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci    The parameters for environment mapped bump mapping are set through
1685bd8deadSopenharmony_ci    the entry point:
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci       void TexBumpParameter[i|f]vATI(enum pname, TYPE *param)
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ci    When pname is BUMP_ROT_MATRIX_ATI, the rotation matrix applied to
1735bd8deadSopenharmony_ci    each (du, dv) coordinate read from the bumpmap is specified
1745bd8deadSopenharmony_ci    (see section 3.8.9 on environment mapped bump mapping).  The size 
1755bd8deadSopenharmony_ci    of the rotation matrix can vary across implementations (to allow for 
1765bd8deadSopenharmony_ci    future expansion with support for offsets to more than just two 
1775bd8deadSopenharmony_ci    coordinates).  This size can be queried for using:
1785bd8deadSopenharmony_ci
1795bd8deadSopenharmony_ci       void GetTexBumpParamter[i|f]vATI(enum pname, TYPE *param)
1805bd8deadSopenharmony_ci
1815bd8deadSopenharmony_ci    with pname as BUMP_ROT_MATRIX_SIZE_ATI.  This returns the number
1825bd8deadSopenharmony_ci    of entries in the BUMP_ROT_MATRIX.  When pname is BUMP_NUM_TEX_UNITS_ATI,
1835bd8deadSopenharmony_ci    the number of texture units that support bump mapping is returned.  
1845bd8deadSopenharmony_ci    Given this, an array of supported texture units that support bumpmapping 
1855bd8deadSopenharmony_ci    can be queried.  When pname is BUMP_TEX_UNITS_ATI, an array of size 
1865bd8deadSopenharmony_ci    BUMP_NUM_TEX_UNITS_ATI is returned in which each element is one of the 
1875bd8deadSopenharmony_ci    valid texture units (TEXTURE0_ARB, TEXTURE1_ARB, etc.)."
1885bd8deadSopenharmony_ci 
1895bd8deadSopenharmony_ci   - After Table 3.20 in EXT_texture_env_combine:
1905bd8deadSopenharmony_ci
1915bd8deadSopenharmony_ci   "In addition, a special-case COMBINE_RGB_EXT function exists for performing
1925bd8deadSopenharmony_ci    environment mapped bump mapping.  This function does not behave as 
1935bd8deadSopenharmony_ci    the standard combine functions.  Instead, it specifies that the given
1945bd8deadSopenharmony_ci    texture unit has a bumpmap which will be used to offset the texture coordinate
1955bd8deadSopenharmony_ci    reads onto another unit.
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci    The texture unit which the bumpmap will bump is specified by setting the
1985bd8deadSopenharmony_ci    BUMP_TARGET_ATI to be a valid texture unit.  
1995bd8deadSopenharmony_ci
2005bd8deadSopenharmony_ci    Environment mapped bump mapping then works as follows:
2015bd8deadSopenharmony_ci
2025bd8deadSopenharmony_ci    The (du,dv) offset map specified on the texture unit with BUMP_ENVMAP_ATI
2035bd8deadSopenharmony_ci    will be used to offset the texture coordinates read into the map on the
2045bd8deadSopenharmony_ci    BUMP_TARGET_ATI unit.  The (du,dv) texel will be fetched from the bumpmap
2055bd8deadSopenharmony_ci    at the texture coordinate specified for the bumpmap.  This (du,dv) texel
2065bd8deadSopenharmony_ci    will then be rotated through the BUMP_ROT_MATRIX:
2075bd8deadSopenharmony_ci
2085bd8deadSopenharmony_ci      du' = du * Rot[00] + dv * Rot[01]
2095bd8deadSopenharmony_ci      dv' = du * Rot[10] + dv * Rot[11]
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ci    (du',dv') will then be used to offset the (u,v) coordinates used to read
2125bd8deadSopenharmony_ci    into the texture on BUMP_TARGET_ATI:
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci      u = u + du'
2155bd8deadSopenharmony_ci      v = v + dv'
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ci    These final coordinates are then used to fetch from the texture on 
2185bd8deadSopenharmony_ci    BUMP_TARGET_ATI."
2195bd8deadSopenharmony_ci
2205bd8deadSopenharmony_ci     
2215bd8deadSopenharmony_ci    - Change to table 3.23 in EXT_texture_env_combine:
2225bd8deadSopenharmony_ci    
2235bd8deadSopenharmony_ci    "Base Internal Format		RGB Values	Alpha Value
2245bd8deadSopenharmony_ci     --------------------		----------	-----------
2255bd8deadSopenharmony_ci     ALPHA                              0,  0,  0       At
2265bd8deadSopenharmony_ci     LUMINANCE                          Lt, Lt, Lt      1
2275bd8deadSopenharmony_ci     LUMINANCE_ALPHA                    Lt, Lt, Lt      At
2285bd8deadSopenharmony_ci     INTENSITY                          It, It, It      It
2295bd8deadSopenharmony_ci     RGB                                Rt, Gt, Bt      1
2305bd8deadSopenharmony_ci     RGBA                               Rt, Gt, Bt      At
2315bd8deadSopenharmony_ci     DUDV_ATI                           0, 0, 0         1
2325bd8deadSopenharmony_ci    "
2335bd8deadSopenharmony_ci
2345bd8deadSopenharmony_ci
2355bd8deadSopenharmony_ci
2365bd8deadSopenharmony_ciAdditions to Chapter 4:
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    None
2395bd8deadSopenharmony_ci
2405bd8deadSopenharmony_ciAdditions to Chapter 5:
2415bd8deadSopenharmony_ci
2425bd8deadSopenharmony_ci    None
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ciAdditions to Chapter 6:
2455bd8deadSopenharmony_ci
2465bd8deadSopenharmony_ci    None
2475bd8deadSopenharmony_ci
2485bd8deadSopenharmony_ciAdditions to the GLX Specification
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ci    None
2515bd8deadSopenharmony_ci
2525bd8deadSopenharmony_ci
2535bd8deadSopenharmony_ciGLX Protocol
2545bd8deadSopenharmony_ci
2555bd8deadSopenharmony_ci    None
2565bd8deadSopenharmony_ci
2575bd8deadSopenharmony_ciDependencies on EXT_point_parameters
2585bd8deadSopenharmony_ci
2595bd8deadSopenharmony_ci    
2605bd8deadSopenharmony_ciErrors
2615bd8deadSopenharmony_ci    
2625bd8deadSopenharmony_ci    INVALID_ENUM if TexBumpParameter[i|f]vATI is called with pname not equal to
2635bd8deadSopenharmony_ci       BUMP_ROT_MATRIX_ATI.
2645bd8deadSopenharmony_ci
2655bd8deadSopenharmony_ci    INVALID_ENUM if GetTexBumpParameter[i|f]vATI is called with pname not equal
2665bd8deadSopenharmony_ci       to BUMP_ROT_MATRIX_ATI, BUMP_ROT_MATRIX_SIZE_ATI, BUMP_NUM_TEX_UNITS_ATI,
2675bd8deadSopenharmony_ci       or BUMP_TEX_UNITS_ATI.
2685bd8deadSopenharmony_ci
2695bd8deadSopenharmony_ci    INVALID_VALUE if the combineRGB function is set on a unit not supported as
2705bd8deadSopenharmony_ci       queried with BUMP_TEX_UNITS_ATI.
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ciNew State
2735bd8deadSopenharmony_ci
2745bd8deadSopenharmony_ci    Get Value                   Get Command           Type     Minimum Value  Description
2755bd8deadSopenharmony_ci    ---------                   -----------           ----     -------------  -----------
2765bd8deadSopenharmony_ci    BUMP_ROT_MATRIX_ATI         GetTexBumpParameterfv n x F    -              Bump rotation matrix on current unit
2775bd8deadSopenharmony_ci    BUMP_ROT_MATRIX_SIZE_ATI    GetTexBumpParameteriv Z+       4              Bump rotation matrix size
2785bd8deadSopenharmony_ci    BUMP_NUM_TEX_UNITS_ATI      GetTexBumpParameteriv Z+       1              Number of bump texture units
2795bd8deadSopenharmony_ci    BUMP_TEX_UNITS_ATI          GetTexBumpParameteriv n x Z+   -              Supported bump texture units  
2805bd8deadSopenharmony_ci  
2815bd8deadSopenharmony_ci
2825bd8deadSopenharmony_ciNew Implementation Dependent State
2835bd8deadSopenharmony_ci
2845bd8deadSopenharmony_ci    None
2855bd8deadSopenharmony_ci
2865bd8deadSopenharmony_ci
2875bd8deadSopenharmony_ciRevision History
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ci   Date: 11/4/2006
2905bd8deadSopenharmony_ci   Revision: 1.02
2915bd8deadSopenharmony_ci      - Updated contact info after ATI/AMD merger.
2925bd8deadSopenharmony_ci
2935bd8deadSopenharmony_ci   Date: 1/09/2003
2945bd8deadSopenharmony_ci   Revision: 1.01
2955bd8deadSopenharmony_ci      - Added an error condition.
2965bd8deadSopenharmony_ci
2975bd8deadSopenharmony_ci   Date: 8/21/2001
2985bd8deadSopenharmony_ci   Revision: 1.0
2995bd8deadSopenharmony_ci      - First release.
3005bd8deadSopenharmony_ci
301