back  Return to list

GL_NV_texture_shader3
homeprevnext Name
      
    NV_texture_shader3  
  
homeprevnext Name Strings
  
    GL_NV_texture_shader3  
  
homeprevnext Contact
  
    Mark J. Kilgard, NVIDIA Corporation (mjk 'at' nvidia.com)  
  
homeprevnext Notice
  
    Copyright NVIDIA Corporation, 2001.  
  
homeprevnext IP Status
  
    NVIDIA Proprietary.  
  
homeprevnext Version
  
    NVIDIA Date: March 5, 2007  
    $Id: //sw/main/docs/OpenGL/specs/GL_NV_texture_shader3.txt#11 $  
  
homeprevnext Number
  
    265  
  
homeprevnext Dependencies
  
    Written based on the wording of the OpenGL 1.2.1 specification,  
    augmented by the NV_texture_shader and NV_texture_shader2 extension  
    specifications.  
  
    Requires support for the NV_texture_shader extension.  
  
    Requires support for the NV_texture_shader2 extension.  
  
homeprevnext Overview
  
    NV_texture_shader3 extends the NV_texture_shader functionality by  
    adding several new texture shader operations, extending several  
    existing texture shader operations, adding a new HILO8 internal  
    format, and adding new and more flexible re-mapping modes for dot  
    product and dependent texture shader operations.  
  
    See the NV_texture_shader extension for information about the  
    texture shader operational model.  
  
    The fourteen new texture shader operations are:  
  
    <offset textures>  
  
    24.  OFFSET_PROJECTIVE_TEXTURE_2D_NV - Transforms the signed (ds,dt)  
         components of a previous texture unit by a 2x2 floating-point  
         matrix and then uses the result to offset the stage's texture  
         coordinates for a 2D non-projective texture.  
  
    25.  OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV - Same as above except  
         the magnitude component of the previous texture unit result  
         scales the red, green, and blue components of the unsigned RGBA  
         texture 2D access.  
  
    26.  OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV - Similar to  
         OFFSET_TEXTURE_2D_NV except that the texture access is into a  
         rectangular non-projective texture.  
  
    27.  OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV - Similar to  
         OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV except that the texture  
         access is into a rectangular non-projective texture.  
  
    28.  OFFSET_HILO_TEXTURE_2D_NV - Similar to OFFSET_TEXTURE_2D_NV  
         but uses a (higher-precision) HILO base format texture rather  
         than a DSDT-type base format.  
  
    29.  OFFSET_HILO_TEXTURE_RECTANGLE_NV - Similar to  
         OFFSET_TEXTURE_RECTANGLE_NV but uses a (higher-precision)  
         HILO base format texture rather than a DSDT-type base format.  
  
    30.  OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV - Similar to  
         OFFSET_PROJECTIVE_TEXTURE_2D_NV but uses a (higher-precision)  
         HILO base format texture rather than a DSDT-type base format.  
  
    31.  OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV - Similar to  
         OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV but uses a  
         (higher-precision) HILO base format texture rather than a  
         DSDT-type base format.  
  
         (There are no "offset HILO texture scale" operations because  
         HILO textures have only two components with no third component  
         for scaling.)  
  
    <dependent textures>  
  
    32.  DEPENDENT_HILO_TEXTURE_2D_NV - Converts the hi and lo components  
         of a previous shader HILO result into an (s,t) texture coordinate  
         set to access a 2D non-projective texture.  
  
    33.  DEPENDENT_RGB_TEXTURE_3D_NV - Converts the red, green, and  
         blue components of a previous shader RGBA result into an (s,t,r)  
         texture coordinate set to access a 3D non-projective texture.  
  
    34.  DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV - Converts the red, green,  
         and blue components of a previous shader RGBA result into an  
         (s,t,r) texture coordinate set to access a cube map texture.  
  
    <dot product pass through>  
  
    35.  DOT_PRODUCT_PASS_THROUGH_NV - Computes a dot product in the  
         manner of the DOT_PRODUCT_NV operation and the result is [0,1]  
         clamped and smeared to generate the texture unit RGBA result.  
  
    <dot product textures>  
  
    36.  DOT_PRODUCT_TEXTURE_1D_NV - Computes a dot product in the manner  
         of the DOT_PRODUCT_NV operation and uses the result as the s  
         texture coordinate to access a 2D non-projective texture.  
  
    <dot product depth replace>  
  
    37.  DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV - Computes a dot product  
         in the manner of the DOT_PRODUCT_NV operation and the result  
         is [0,1] clamped and replaces the fragment's window-space  
         depth value.  The texture unit RGBA result is (0,0,0,0).  
  
    Two new internal texture formats have been added: HILO8_NV and  
    SIGNED_HILO8_NV.  These texture formats allow HILO textures to be  
    stored in half the space; still the filtering for these internal  
    texture formats is done with 16-bit precision.  
  
    One new unsigned RGBA dot product mapping mode (FORCE_BLUE_TO_ONE_NV)  
    forces the blue component to be 1.0 before computing a dot product.  
  
homeprevnext Issues
  
    Should a HILO8_NV internal format be added?  
  
      RESOLUTION:  Yes.  The HILO8_NV format allows HILO textures to  
      take up half the space (16-bit HILO8_NV versus 32-bit HILO16_NV).  
      Even though the texture is stored with 8-bit components, the  
      interpolated precision can be assumed to be 16-bit.  
  
    Should we generalize existing OFFSET_TEXTURE-style operations to  
    support HILO textures and projective texturing, or should we just  
    add more texture shader operations?  
  
      RESOLUTION:  Add more texture shader operations for each distinct  
      configuration.  
  
      NV_texture_shader had consistency rules for OFFSET_TEXTURE  
      operations that preclude consistency when used with HILO textures.  
      Consistency is a defined behavior that should stay defined even with  
      future extensions.  Adding specific new texture shader operation  
      for HILO textures avoids having to redefine the consistency rules  
      for DSDT-using OFFSET_TEXTURE operations.  
  
      Rather than add a separate state that decides when OFFSET_TEXTURE  
      is projective or not, we just add new operations.  
  
homeprevnext New Procedures and Functions
  
    None.  
  
homeprevnext New Tokens
  
    When the <target> and <pname> parameters of TexEnvf, TexEnvfv,  
    TexEnvi, and TexEnviv are TEXTURE_SHADER_NV and SHADER_OPERATION_NV  
    respectively, then the value of <param> or the value pointed to by  
    <params> may be:  
  
        OFFSET_PROJECTIVE_TEXTURE_2D_NV                0x8850  
        OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV          0x8851  
        OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV         0x8852  
        OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV   0x8853  
        OFFSET_HILO_TEXTURE_2D_NV                      0x8854  
        OFFSET_HILO_TEXTURE_RECTANGLE_NV               0x8855  
        OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV           0x8856  
        OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV    0x8857  
        DEPENDENT_HILO_TEXTURE_2D_NV                   0x8858  
        DEPENDENT_RGB_TEXTURE_3D_NV                    0x8859  
        DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV              0x885A  
        DOT_PRODUCT_PASS_THROUGH_NV                    0x885B  
        DOT_PRODUCT_TEXTURE_1D_NV                      0x885C  
        DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV            0x885D  
  
    Accepted by the <internalformat> parameter of TexImage1D, TexImage2D,  
    and TexImage3D:  
  
        HILO8_NV                                       0x885E  
        SIGNED_HILO8_NV                                0x885F  
  
    When the <target> and <pname> parameters of TexEnvf,  
    TexEnvfv, TexEnvi, and TexEnviv are TEXTURE_SHADER_NV and  
    RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV respectively, then the value  
    of <param> or the value pointed to by <params> may be:  
  
        FORCE_BLUE_TO_ONE_NV                           0x8860  
  
homeprevnext Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation)
  
     None  
  
homeprevnext Additions to Chapter 3 of the 1.2 Specification (Rasterization)
  
 --  Section 3.8 "Texturing"  
  
     Replace the third paragraph (amended by the NV_texture_shader  
     extension) with the following that includes new texture shader  
     references:  
  
     "The alternative to conventional texturing is the texture shaders  
     mechanism.  When texture shaders are enabled, each texture unit uses  
     one of thirty-seven texture shader operations.  Thirty-three of the  
     thirty-seven shader operations map an (s,t,r,q) texture coordinate  
     set to an RGBA color.  Of these, four texture shader operations  
     directly correspond to the 1D, 2D, 3D, and cube map conventional  
     texturing operations.  Depending on the texture shader operation, the  
     mapping from the (s,t,r,q) texture coordinate set to an RGBA color  
     may depend on the given texture unit's currently bound texture object  
     state and/or the results of previous texture shader operations.  
     The four remaining texture shader operations respectively provide  
     a fragment culling mechanism based on texture coordinates, a dot  
     product operation that computes a floating-point value for use by  
     subsequent texture shaders.  and two means to replace the fragment  
     depth value, The specifics of each texture shader operation are  
     described in section 3.8.12."  
  
 --  Section 3.8.1 "Texture Image Specification"  
  
     Add two more rows to table 3.16:  
  
Sized                          Base                  R    G    B    A    L    I    HI   LO   DS   DT   MAG  
Internal Format                Internal Format       bits bits bits bits bits bits bits bits bits bits bits  
------------------------------ --------------------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----  
HILO8_NV                       HILO                                                8    8  
SIGNED_HILO8_NV                HILO                                                8*   8*  
  
     Update this paragraph inserted by NV_texture_shader before the last  
     sentence in the fifth paragraph to read:  
  
     "The error INVALID_OPERATION is generated if the format is  
     HILO_NV and the internalformat is not one of HILO_NV, HILO16_NV,  
     HILO8_NV, SIGNED_HILO_NV, SIGNED_HILO16_NV, SIGNED_HILO8_NV;  
     or if the internalformat is one of HILO_NV, HILO16_NV, HILO8_NV,  
     SIGNED_HILO_NV, SIGNED_HILO16_NV, or SIGNED_HILO8_NV and the format  
     is not HILO_NV.  
  
 --  Section 3.8.2 "Alternate Texture Image Specification Commands"  
  
     In the second paragraph (describing CopyTexImage2D), change the  
     third to the last sentence (previously amended by NV_texture_shader) to:  
  
     "Parameters level, internalformat, and border are specified using the  
     same values, with the same meanings, as the equivalent arguments of  
     TexImage2D, except that internalformat may not be specified as 1, 2,  
     3, 4, HILO_NV, HILO16_NV, HILO8_NV, SIGNED_HILO_NV, SIGNED_HILO16_NV,  
     SIGNED_HILO8_NV, DSDT_NV, DSDT8_NV, DSDT_MAG_NV, DSDT8_MAG8_NV,  
     DSDT_MAG_INTENSITY_NV, or DSDT8_MAG8_INTENSITY8_NV."  
  
     In the third paragraph (describing CopyTexImage1D), change the second  
     to the last sentence (previously amended by NV_texture_shader) to:  
  
     "level, internalformat, and border are specified using the same  
     values, with the same meanings, as the equivalent arguments of  
     TexImage1D, except that internalformat may not be specified as 1, 2,  
     3, 4, HILO_NV, HILO16_NV, HILO8_NV, SIGNED_HILO_NV, SIGNED_HILO16_NV,  
     SIGNED_HILO8_NV, DSDT_NV, DSDT8_NV, DSDT_MAG_NV, DSDT8_MAG8_NV,  
     DSDT_MAG_INTENSITY_NV, or DSDT8_MAG8_INTENSITY8_NV."  
  
     Amend the following text inserted by NV_texture_shader after the  
     six paragraph to include the HILO8 and UNSIGNED_HILO8 internal  
     texture formats:  
  
     "CopyTexSubImage3D, CopyTexSubImage2D, and CopyTexSubImage1D  
     generate the error INVALID_OPERATION if the internal format of  
     the texture array to which the pixels are to be copied is one of  
     HILO_NV, HILO16_NV, HILO8_NV, SIGNED_HILO_NV, SIGNED_HILO16_NV,  
     SIGNED_HILO8_NV, DSDT_NV, DSDT8_NV, DSDT_MAG_NV, DSDT8_MAG8_NV,  
     DSDT_MAG_INTENSITY_NV, or DSDT8_MAG8_INTENSITY8_NV."  
  
 --  Section 3.8.13 "Texture Shaders"  
  
     Amend the designated paragraphs of the NV_texture_shader  
     specification to include discussion of new texture shader  
     operations.  
  
     1st paragraph (update number of operations):  
  
     "Each texture unit is configured with one of thirty-seven  
     texture shader operations.  Several texture shader operations  
     require additional state.  All per-texture shader stage state  
     is specified using the TexEnv commands with the target specified  
     as TEXTURE_SHADER_NV.  The per-texture shader state is replicated  
     per texture unit so the texture unit selected by ActiveTextureARB  
     determines which texture unit's environment is modified by TexEnv  
     calls."  
  
     3rd paragraph (add fourteen new texture shader operations):  
  
     "When TexEnv is called with the target of TEXTURE_SHADER_NV,  
     SHADER_OPERATION_NV may be set to one of NONE, TEXTURE_1D,  
     TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP_ARB, PASS_THROUGH_NV,  
     CULL_FRAGMENT_NV, OFFSET_TEXTURE_2D_NV, OFFSET_TEXTURE_2D_SCALE_NV,  
     OFFSET_TEXTURE_RECTANGLE_NV, OFFSET_TEXTURE_RECTANGLE_SCALE_NV,  
     DEPENDENT_AR_TEXTURE_2D_NV, DEPENDENT_GB_TEXTURE_2D_NV,  
     DOT_PRODUCT_NV, DOT_PRODUCT_DEPTH_REPLACE_NV,  
     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,  
     DOT_PRODUCT_TEXTURE_3D_NV, DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,  
     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,  
     DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV,  
     OFFSET_PROJECTIVE_TEXTURE_2D_NV,  
     OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV,  
     OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV,  
     OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV,  
     OFFSET_HILO_TEXTURE_2D_NV, OFFSET_HILO_TEXTURE_RECTANGLE_NV,  
     OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV,  
     OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV,  
     DEPENDENT_HILO_TEXTURE_2D_NV, DEPENDENT_RGB_TEXTURE_3D_NV,  
     DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV, DOT_PRODUCT_PASS_THROUGH_NV,  
     DOT_PRODUCT_TEXTURE_1D_NV, or DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV.  
     The semantics of each of these shader operations is described  
     in section 3.8.13.1.  Not every operation is supported in every  
     texture unit.  The restrictions for how these shader operations  
     can be configured in various texture units are described in section  
     3.8.13.2."  
  
     5th paragraph (add FORCE_BLUE_TO_ONE_NV):  
  
     "When TexEnv is called with the target of TEXTURE_SHADER_NV,  
     RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV may be set to one of  
     UNSIGNED_IDENTITY_NV, EXPAND_NORMAL_NV, or FORCE_BLUE_TO_ONE_NV.  
     This RGBA unsigned dot product mapping mode is used by the  
     DOT_PRODUCT_NV operation (see section 3.8.13.1.14) and other  
     operations that compute dot products."  
  
     3.8.13.1  Texture Shader Operations  
  
     Amend tables 3.A, 3.B, 3.C, and 3.D in the NV_texture_shader  
     specification to include these new entries:  
  
     Table 3.A:  
                                                                                                          texture shader  
texture shader operation i                    previous texture input     texture shader operation i-1     operation i-2     texture shader operation i+1  
============================================  =========================  ===============================  ================  ================================  
OFFSET_PROJECTIVE_TEXTURE_2D_NV               base internal texture      -                                -                 -  
                                               format must be one of  
                                               DSDT_NV, DSDT_MAG_NV, or  
                                               DSDT_MAG_INTENSITY_NV  
OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV         base internal texture      -                                -                 -  
                                               format must be either  
                                               DSDT_MAG_NV or  
                                               DSDT_MAG_INTENSITY_NV  
OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV        base internal texture      -                                -                 -  
                                               format must be one of  
                                               DSDT_NV, DSDT_MAG_NV, or  
                                               DSDT_MAG_INTENSITY_NV  
OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV  base internal texture      -                                -                 -  
                                               format must be either  
                                               DSDT_MAG_NV or  
                                               DSDT_MAG_INTENSITY_NV  
--------------------------------------------  -------------------------  -------------------------------  ----------------  --------------------------------  
OFFSET_HILO_TEXTURE_2D_NV                     base internal texture      -                                -                 -  
                                               format must be HILO  
OFFSET_HILO_TEXTURE_RECTANGLE_NV              base internal texture      -                                -                 -  
                                               format must be HILO  
OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV          base internal texture      -                                -                 -  
                                               format must be HILO  
OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV   base internal texture      -                                -                 -  
                                               format must be HILO  
--------------------------------------------  -------------------------  -------------------------------  ----------------  --------------------------------  
DEPENDENT_HILO_TEXTURE_2D_NV                  base internal texture      -                                -                 -  
                                               format must be HILO  
DEPENDENT_RGB_TEXTURE_3D_NV                   shader result type must    -                                -                 -  
                                               all be unsigned RGBA  
DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV             shader result type must    -                                -                 -  
                                               all be RGB or RGBA  
                                               (signed RGB components  
                                               are allowed)  
--------------------------------------------  -------------------------  -------------------------------  ----------------  --------------------------------  
DOT_PRODUCT_PASS_THROUGH_NV                   shader result type must    -                                -                 -  
                                               be one of signed HILO,  
                                               unsigned HILO, all  
                                               signed RGBA, or all  
                                               unsigned RGBA  
--------------------------------------------  -------------------------  -------------------------------  ----------------  --------------------------------  
DOT_PRODUCT_TEXTURE_1D_NV                     shader result type must    -                                -                 -  
                                               be one of signed HILO,  
                                               unsigned HILO, all  
                                               signed RGBA, or all  
                                               unsigned RGBA  
--------------------------------------------  -------------------------  -------------------------------  ----------------  --------------------------------  
DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV           shader result type must    -                                -                 -  
                                               be one of signed HILO,  
                                               unsigned HILO, all  
                                               signed RGBA, or all  
                                               unsigned RGBA   
--------------------------------------------  -------------------------  -------------------------------  ----------------  --------------------------------  
  
     Table 3.B:  
  
texture shader operation i                    texture unit i  
============================================  =======================================  
OFFSET_PROJECTIVE_TEXTURE_2D_NV               2D target must be consistent  
OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV         2D target must be consistent  
                                               and 2D texture target type must  
                                               be unsigned RGBA   
OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV        rectangle target must be consistent  
OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV  rectangle target must be consistent  
                                               and rectangle texture target type must  
                                               be unsigned RGBA   
--------------------------------------------  ---------------------------------------  
OFFSET_HILO_TEXTURE_2D_NV                     2D target must be consistent  
OFFSET_HILO_TEXTURE_RECTANGLE_NV              rectangle target must be consistent  
OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV          2D target must be consistent  
OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV   rectangle target must be consistent  
--------------------------------------------  ---------------------------------------  
DEPENDENT_HILO_TEXTURE_2D_NV                  2D target must be consistent  
DEPENDENT_RGB_TEXTURE_3D_NV                   3D target must be consistent  
DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV             cube map target must be consistent  
--------------------------------------------  ---------------------------------------  
DOT_PRODUCT_PASS_THROUGH_NV                   -  
--------------------------------------------  ---------------------------------------  
DOT_PRODUCT_TEXTURE_1D_NV                     1D target must be consistent  
--------------------------------------------  ---------------------------------------  
DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV           -  
--------------------------------------------  ---------------------------------------  
  
  
     Table 3.C:  
  
                                                            uses    uses    uses    uses             uses       offset    uses  
                                     texture                stage   stage   stage   previous  uses   offset     texture   const  
                                     coordinate  texture    result  result  result  texture   cull   texture    2D scale  eye  
texture shader operation i           set usage   target     i-1     i-2     i+1     input     modes  2D matrix  and bias  vector  
===================================  ==========  =========  ======  ======  ======  ========  =====  =========  ========  ======  
OFFSET_PROJECTIVE_TEXTURE_2D_NV      s,t,q       2D         -       -       -       y         -      y          -         -  
OFFSET_PROJECTIVE_-                  s,t,q       2D         -       -       -       y         -      y          y         -  
  TEXTURE_2D_SCALE_NV  
OFFSET_PROJECTIVE_-                  s,t,q       rectangle  -       -       -       y         -      y          -         -  
  TEXTURE_RECTANGLE_NV  
OFFSET_PROJECTIVE_-                  s,t,q       rectangle  -       -       -       y         -      y          y         -  
  TEXTURE_RECTANGLE_SCALE_NV  
-----------------------------------  ----------  ---------  ------  ------  ------  --------  -----  ---------  --------  ------  
OFFSET_HILO_TEXTURE_2D_NV            s,t         2D         -       -       -       y         -      y          -         -  
OFFSET_HILO_TEXTURE_RECTANGLE_NV     s,t         rectangle  -       -       -       y         -      y          -         -  
OFFSET_PROJECTIVE_-                  s,t,q       2D         -       -       -       y         -      y          -         -  
  HILO_TEXTURE_2D_NV  
OFFSET_PROJECTIVE_-                  s,t,q       rectangle  -       -       -       y         -      y          -         -  
  HILO_TEXTURE_RECTANGLE_NV  
-----------------------------------  ----------  ---------  ------  ------  ------  --------  -----  ---------  --------  ------  
DEPENDENT_HILO_TEXTURE_2D_NV         -           2D         -       -       -       y         -      -          -         -  
DEPENDENT_RGB_TEXTURE_3D_NV          -           3D         -       -       -       y         -      -          -         -  
DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV    -           cube map   -       -       -       y         -      -          -         -  
-----------------------------------  ----------  ---------  ------  ------  ------  --------  -----  ---------  --------  ------  
DOT_PRODUCT_PASS_THROUGH_NV          s,t,r       -          -       -       -       y         -      -          -         -  
-----------------------------------  ----------  ---------  ------  ------  ------  --------  -----  ---------  --------  ------  
DOT_PRODUCT_TEXTURE_1D_NV            s,t,r       1D         -       -       -       y         -      -          -         -  
-----------------------------------  ----------  ---------  ------  ------  ------  --------  -----  ---------  --------  ------  
DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV  s,t,r       -          -       -       -       y         -      -          -         -  
-----------------------------------  ----------  ---------  ------  ------  ------  --------  -----  ---------  --------  ------  
  
     Table 3.D:  
  
texture shader operation i         shader stage result type       shader stage result                  texture unit RGBA color result  
=================================  =============================  ===================================  ======================================  
OFFSET_TEXTURE_2D_NV               matches 2D target type         filtered 2D target texel             if 2D target texture type is RGBA,  
                                                                                                        filtered 2D target texel,  
                                                                                                        else (0,0,0,0)   
OFFSET_TEXTURE_2D_SCALE_NV         unsigned RGBA                  filtered 2D target texel             scaled filtered 2D target texel  
OFFSET_TEXTURE_RECTANGLE_NV        matches rectangle target type  filtered rectangle target texel      if rectangle target texture type is  
                                                                                                        RGBA, filtered rectangle target  
                                                                                                        texel, else (0,0,0,0)   
OFFSET_TEXTURE_RECTANGLE_SCALE_NV  unsigned RGBA                  filtered rectangle target texel      scaled filtered rectangle target texel  
OFFSET_PROJECTIVE_TEXTURE_2D_NV    matches 2D target type         filtered 2D target texel             if 2D target texture type is RGBA,  
                                                                                                        filtered 2D target texel,  
                                                                                                        else (0,0,0,0)   
OFFSET_PROJECTIVE_-                unsigned RGBA                  filtered 2D target texel             scaled filtered 2D target texel  
  TEXTURE_2D_SCALE_NV  
OFFSET_PROJECTIVE_-                matches rectangle target type  filtered rectangle target texel      if rectangle target texture type is  
  TEXTURE_RECTANGLE_NV                                                                                  RGBA, filtered rectangle target  
                                                                                                        texel, else (0,0,0,0)   
OFFSET_PROJECTIVE_-                unsigned RGBA                  filtered rectangle target texel      scaled filtered rectangle target texel  
  TEXTURE_RECTANGLE_SCALE_NV  
---------------------------------  -----------------------------  -----------------------------------  --------------------------------------  
DEPENDENT_HILO_TEXTURE_2D_NV       matches 2D target type         filtered 2D target texel             if 2D target texture type is RGBA,  
                                                                                                        filtered 2D target texel,  
                                                                                                        else (0,0,0,0)    
DEPENDENT_RGB_TEXTURE_3D_NV        matches 3D target type         filtered 3D target texel             if 3D target texture type is RGBA,  
                                                                                                        filtered 3D target texel,  
                                                                                                        else (0,0,0,0)    
DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV  matches cube map target type   filtered cube map target texel       if cube map target texture type is  
                                                                                                        RGBA,  filtered cube map target  
                                                                                                        texel, else (0,0,0,0)   
---------------------------------  -----------------------------  -----------------------------------  --------------------------------------  
DOT_PRODUCT_PASS_THROUGH_NV        unsigned RGBA                  (max(0,min(1,[s,t,r]dot[a,b,c])),    (max(0,min(1,[s,t,r]dot[a,b,c])),  
                                                                   max(0,min(1,[s,t,r]dot[a,b,c])),     max(0,min(1,[s,t,r]dot[a,b,c])),  
                                                                   max(0,min(1,[s,t,r]dot[a,b,c])),     max(0,min(1,[s,t,r]dot[a,b,c])),  
                                                                   max(0,min(1,[s,t,r]dot[a,b,c])))     max(0,min(1,[s,t,r]dot[a,b,c])))  
---------------------------------  -----------------------------  -----------------------------------  --------------------------------------  
DOT_PRODUCT_TEXTURE_1D_NV          matches 1D target type         filtered 1D target texel             if 1D target texture type is RGBA,  
                                                                                                        filtered 1D target texel,  
                                                                                                        else (0,0,0,0)    
---------------------------------  -----------------------------  -----------------------------------  --------------------------------------  
DOT_PRODUCT_-                      unsigned RGBA                  invalid                              (0,0,0,0)  
  AFFINE_DEPTH_REPLACE_NV  
---------------------------------  -----------------------------  -----------------------------------  --------------------------------------  
  
     3.8.13.1.14  Dot Product  
  
     Add this description of FORCE_BLUE_TO_ONE_NV after the description  
     of EXPAND_NORMAL_NV:  
  
     "When the RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV is  
     FORCE_BLUE_TO_ONE_NV, then the floating-point result for unsigned  
     RGBA components is computed by  
  
       result = s * Rprev + t * Gprev + r  
  
     where Rprev and Gprev are the (unsigned) red and green components  
     respectively of the previous texture unit's RGBA texture shader  
     result (the previous blue component can be assumed forced to 1.0  
     for the purposes of the dot product computation)."  
  
     3.8.13.1.21  Dot Product Depth Replace  
  
     Amend the paragraph meant to avoid multiple depth replaces to read:  
  
     "If any previous texture shader stage operation is  
     DOT_PRODUCT_DEPTH_REPLACE_NV or DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV  
     and that previous stage is consistent, then this texture shader  
     stage is not consistent.  (This eliminates the potential for two  
     stages to each be performing a depth replace operation.)"  
  
     Add the following new sections specifying new texture shader  
     operations:  
  
     Add the following new texture shader operation descriptions:  
  
     "3.8.13.1.24  Offset Projective Texture 2D  
  
     The OFFSET_PROJECTIVE_TEXTURE_2D_NV shader operation operates  
     identically to the OFFSET_TEXTURE_2D_NV shader operation except  
     that the perturbed texture coordinates s' and t' are computed with  
     floating-point math as follows:  
  
       s' = s/q + a1 * DSprev + a3 * DTprev  
       t' = t/q + a2 * DSprev + a4 * DTprev  
  
     Note the division of s and t by the current texture shader stage's  
     q texture coordinate.  
  
     3.8.13.1.25  Offset Projective Texture 2D Scale  
  
     The OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV shader operation operates  
     identically to the OFFSET_TEXTURE_2D_SCALE_NV shader operation except  
     that the perturbed texture coordinates s' and t' are computed with  
     floating-point math as follows:  
  
       s' = s/q + a1 * DSprev + a3 * DTprev  
       t' = t/q + a2 * DSprev + a4 * DTprev  
  
     Note the division of s and t by the current texture shader stage's  
     q texture coordinate.  
  
     3.8.13.1.26  Offset Projective Texture Rectangle  
  
     The OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV shader operation  
     operates identically to the OFFSET_TEXTURE_RECTANGLE_NV shader  
     operation except that the perturbed texture coordinates s' and t'  
     are computed with floating-point math as follows:  
  
       s' = s/q + a1 * DSprev + a3 * DTprev  
       t' = t/q + a2 * DSprev + a4 * DTprev  
  
     Note the division of s and t by the current texture shader stage's  
     q texture coordinate.  
  
     3.8.13.1.27  Offset Projective Texture Rectangle Scale  
  
     The OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV shader operation  
     operates identically to the OFFSET_TEXTURE_RECTANGLE_SCALE_NV shader  
     operation except that the perturbed texture coordinates s' and t'  
     are computed with floating-point math as follows:  
  
       s' = s/q + a1 * DSprev + a3 * DTprev  
       t' = t/q + a2 * DSprev + a4 * DTprev  
  
     Note the division of s and t by the current texture shader stage's  
     q texture coordinate.  
  
     3.8.13.1.28  Offset HILO Texture 2D  
  
     The OFFSET_HILO_TEXTURE_2D_NV texture shader operation uses the  
     transformed result of a previous texture shader stage to perturb  
     the current texture shader stage's (s,t) texture coordinates  
     (without a projective division by q).  The resulting perturbed  
     texture coordinates (s',t') are used to access the texture unit's 2D  
     texture object (as described in sections 3.8.4, 3.8.5, and 3.8.6).  
  
     The result of the texture access becomes both the shader result and  
     texture unit RGBA result (see table 3.E).  The type of the shader  
     result depends on the format type of the accessed texture.  
  
     The perturbed texture coordinates s' and t' are computed with  
     floating-point math as follows:  
  
       s' = s + a1 * HIprev + a3 * LOprev  
       t' = t + a2 * HIprev + a4 * LOprev  
  
     where a1, a2, a3, and a4 are the texture shader stage's  
     OFFSET_TEXTURE_MATRIX_NV values, and HIprev and LOprev are the  
     (signed) HI and LO components of a previous texture shader unit's  
     texture shader result specified by the current texture shader  
     stage's PREVIOUS_TEXTURE_INPUT_NV value.  
  
     If the texture unit's 2D texture object is not consistent, then  
     this texture shader stage is not consistent.  
  
     If the previous texture input texture object specified by the  
     current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     has a base internalformat that is not HILO with signed components,  
     then this texture shader stage is not consistent.  
  
     If the previous texture input texture shader operation specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is DOT_PRODUCT_NV, then this texture shader stage is not consistent.  
  
     If the previous texture input texture shader result specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is invalid, then this texture shader stage is not consistent.  
  
     If the previous texture input shader stage specified by the current  
     texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value is not  
     consistent, then this texture shader stage is not consistent.  
  
     If this texture shader stage is not consistent, it operates as if  
     it is the NONE operation.  
  
     3.8.13.1.29  Offset HILO Texture Rectangle  
  
     The OFFSET_HILO_TEXTURE_RECTANGLE_NV shader operation operates  
     identically to the OFFSET_HILO_TEXTURE_2D_NV shader operation except  
     that the rectangle texture target is accessed rather than the 2D  
     texture target.  
  
     If the texture unit's rectangle texture object (rather than the 2D  
     texture object) is not consistent, then this texture shader stage  
     is not consistent.  
  
     3.8.13.1.30  Offset Projective HILO Texture 2D  
  
     The OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV shader operation operates  
     identically to the OFFSET_HILO_TEXTURE_2D_NV shader operation except  
     that the perturbed texture coordinates s' and t' are computed with  
     floating-point math as follows:  
  
       s' = s/q + a1 * HIprev + a3 * LOprev  
       t' = t/q + a2 * HIprev + a4 * LOprev  
  
     Note the division of s and t by the current texture shader stage's  
     q texture coordinate.  
  
     3.8.13.1.31  Offset Projective HILO Texture Rectangle  
  
     The OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV shader operation  
     operates identically to the OFFSET_HILO_TEXTURE_RECTANGLE_NV shader  
     operation except that the perturbed texture coordinates s' and t'  
     are computed with floating-point math as follows:  
  
       s' = s/q + a1 * HIprev + a3 * LOprev  
       t' = t/q + a2 * HIprev + a4 * LOprev  
  
     Note the division of s and t by the current texture shader stage's  
     q texture coordinate.  
  
     3.8.13.1.32  Dependent HILO Texture 2D  
  
     The DEPENDENT_HILO_TEXTURE_2D_NV texture shader operation accesses  
     the texture unit's 2D texture object (as described in section  
     3.8.4, 3.8.5, and 3.8.6) using (HIprev, LOprev) for the 2D texture  
     coordinates where HIprev and LOprev are the are the hi and lo  
     components of a previous texture input's unsigned HILO texture  
     shader result specified by the current texture shader stage's  
     PREVIOUS_TEXTURE_INPUT_NV value.  The result of the texture access  
     becomes both the shader result and texture unit RGBA result (see  
     table 3.E).  The type of the shader result depends on the format  
     type of the accessed texture.  
  
     If the texture unit's 2D texture object is not consistent, then  
     this texture shader stage is not consistent.  
  
     If the previous texture input's texture shader result specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     has a texture shader result type other than HILO with unsigned  
     components, then this texture shader stage is not consistent.  
  
     If the previous texture input texture shader operation specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is DOT_PRODUCT_NV, then this texture shader stage is not consistent.  
  
     If the previous texture input texture shader result specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is invalid, then this texture shader stage is not consistent.  
  
     If the previous texture input shader stage specified by the current  
     texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value is not  
     consistent, then this texture shader stage is not consistent.  
  
     If this texture shader stage is not consistent, it operates as if  
     it is the NONE operation.  
  
     3.8.13.1.33  Dependent Texture 3D  
  
     The DEPENDENT_RGB_TEXTURE_3D_NV texture shader operation accesses  
     the texture unit's 3D texture object (as described in section  
     3.8.4, 3.8.5, and 3.8.6) using (Rprev, Gprev, Bprev) for the 3D  
     texture coordinates where Rprev, Gprev, and Bprev are the are the  
     red, green, and blue components of a previous texture input's RGBA  
     texture shader result specified by the current texture shader stage's  
     PREVIOUS_TEXTURE_INPUT_NV value.  The result of the texture access  
     becomes both the shader result and texture unit RGBA result (see  
     table 3.E).  The type of the shader result depends on the format  
     type of the accessed texture.  
  
     If the texture unit's 3D texture object is not consistent, then  
     this texture shader stage is not consistent.  
  
     If the previous texture input's texture shader result specified  
     by the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV  
     value has a texture shader result type other than RGBA (the  
     DSDT_MAG_INTENSITY_NV base internal format does not count as an  
     RGBA format type in this context), then this texture shader stage  
     is not consistent.    
  
     If the previous texture input's texture shader result specified  
     by the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV  
     value has a texture shader result type of RGBA but any of the  
     RGBA components are signed, then this texture shader stage is not  
     consistent.  
  
     If the previous texture input texture shader operation specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is DOT_PRODUCT_NV, then this texture shader stage is not consistent.  
  
     If the previous texture input texture shader result specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is invalid, then this texture shader stage is not consistent.  
  
     If the previous texture input shader stage specified by the current  
     texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value is not  
     consistent, then this texture shader stage is not consistent.  
  
     If this texture shader stage is not consistent, it operates as if  
     it is the NONE operation.  
  
     3.8.13.1.34  Dependent Texture Cube Map  
  
     The DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV texture shader operation  
     accesses the texture unit's cube map texture object (as described  
     in section 3.8.4, 3.8.5, and 3.8.6) using (s',t',r').  
  
     When the RGB components of the previous texture input's RGBA texture  
     shader result are all unsigned, s', t', and r' are computed as:  
  
       s' = 2*(Rprev - 0.5)  
       t' = 2*(Gprev - 0.5)  
       r' = 2*(Bprev - 0.5)  
  
     When the RGB components of the previous texture input's RGBA texture  
     shader result are all signed, s', t', and r' are computed as:  
  
       s' = Rprev  
       t' = Gprev  
       r' = Bprev  
  
     where Rprev, Gprev, and Bprev are the are the red, green,  
     and blue components of a previous texture input's RGBA texture  
     shader result specified by the current texture shader stage's  
     PREVIOUS_TEXTURE_INPUT_NV value.  The result of the texture access  
     becomes both the shader result and texture unit RGBA result (see  
     table 3.E).  The type of the shader result depends on the format  
     type of the accessed texture.  
  
     If the texture unit's cube map texture object is not consistent,  
     then this texture shader stage is not consistent.  
  
     If the previous texture input's texture shader result specified  
     by the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV  
     value has a texture shader result type other than RGBA (the  
     DSDT_MAG_INTENSITY_NV base internal format does not count as an  
     RGBA format type in this context), then this texture shader stage  
     is not consistent.    
  
     If the previous texture input texture shader operation specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is DOT_PRODUCT_NV, then this texture shader stage is not consistent.  
  
     If the previous texture input texture shader result specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is invalid, then this texture shader stage is not consistent.  
  
     If the previous texture input shader stage specified by the current  
     texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value is not  
     consistent, then this texture shader stage is not consistent.  
  
     If this texture shader stage is not consistent, it operates as if  
     it is the NONE operation.  
  
     3.8.13.1.35  Dot Product Pass Through  
  
     The DOT_PRODUCT_PASS_THROUGH_NV texture shader operation converts a  
     dot product result dotC into an RGBA color result (x,x,x,x) where  
     x is dotC clamped to [0,1].  The texture shader result and texture  
     unit RGBA result of this operation are both  
     assigned the clamped RGBA color result.  
  
     dotC is the floating-point dot product result from the current  
     texture shader stage.  dotC is computed in the identical manner  
     used to compute the floating-point result of the DOT_PRODUCT_NV  
     texture shader described in section 3.8.13.1.14.  
  
     This operation in no way depends on any of the texture unit's  
     texture objects.  
  
     3.8.13.1.36  Dot Product Texture 1D  
  
     The DOT_PRODUCT_TEXTURE_1D_NV texture shader operation accesses the  
     texture unit's 1D texture object (as described in sections 3.8.4,  
     3.8.5, and 3.8.6) using dotC for the 1D texture coordinate.  
     The result of the texture access becomes both the shader result and  
     texture unit RGBA result (see table 3.E).  The type of the shader  
     result depends on the format type of the accessed texture.  
  
     dotC is the floating-point dot product result from the current  
     texture shader stage.  dotC is computed in the identical manner  
     used to compute the floating-point result of the DOT_PRODUCT_NV  
     texture shader described in section 3.8.13.1.14.  
  
     If the previous texture input texture object specified by the  
     current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value has  
     a format type other than RGBA or HILO (the DSDT_MAG_INTENSITY_NV  
     base internal format does not count as an RGBA format type in this  
     context), then this texture shader stage is not consistent.    
  
     If the previous texture input texture shader operation specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is DOT_PRODUCT_NV, then this texture shader stage is not consistent.  
  
     If the previous texture input texture shader result specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is invalid, then this texture shader stage is not consistent.  
  
     If the previous texture input shader stage specified by the current  
     texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value is not  
     consistent, then this texture shader stage is not consistent.  
  
     If the texture unit's 1D texture object is not consistent, then  
     this texture shader stage is not consistent.  
  
     If this texture shader stage is not consistent, it operates as if  
     it is the NONE operation.  
  
     3.8.13.1.37  Dot Product Affine Depth Replace  
  
     The DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV texture shader operation  
     replaces the incoming fragments depth (in window coordinates, after  
     polygon offset and before conversion to fixed-point, i.e. in the  
     [0,1] range) with a new depth value.  The new depth is computed  
     as follows:  
  
       depth = dotC  
  
     dotC is the floating-point dot product result from the current  
     texture shader stage.  dotC is computed in the identical manner  
     used to compute the floating-point result of the DOT_PRODUCT_NV  
     texture shader described in section 3.8.13.1.14.  Note that there  
     is no divide to project the depth value as is the case with the  
     projective DOT_PRODUCT_DEPTH_REPLACE_NV operation.  
  
     If the new depth value is outside of the range of the near and far  
     depth range values, the fragment is rejected.  
  
     The texture unit RGBA result generated is always (0,0,0,0).  
     The texture shader result is invalid.  
  
     If the previous texture input texture object specified by the  
     current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value has  
     a format type other than RGBA or HILO (the DSDT_MAG_INTENSITY_NV  
     base internal format does not count as an RGBA format type in this  
     context), then this texture shader stage is not consistent.    
  
     If the previous texture input texture shader operation specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is DOT_PRODUCT_NV, then this texture shader stage is not consistent.  
  
     If the previous texture input texture shader result specified by  
     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value  
     is invalid, then this texture shader stage is not consistent.  
  
     If the previous texture input shader stage specified by the current  
     texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value is not  
     consistent, then this texture shader stage is not consistent.  
  
     If any previous texture shader stage operation is  
     DOT_PRODUCT_DEPTH_REPLACE_NV or DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV  
     and that previous stage is consistent, then this texture shader  
     stage is not consistent.  (This eliminates the potential for two  
     stages to each be performing a depth replace operation.)  
  
     If this texture shader stage is not consistent, it operates as if  
     it is the NONE operation.  
  
     This operation in no way depends on any of the texture unit's  
     texture objects."  
  
     3.8.13.2  Texture Shader Restrictions  
  
     Amend the first two paragraphs in this section to include the new  
     texture shader operations:  
  
     "There are various restrictions on possible texture shader  
     configurations.  These restrictions are described in this section.  
  
     The error INVALID_OPERATION occurs if the SHADER_OPERATION_NV  
     parameter for texture unit 0 is assigned one of  
     OFFSET_TEXTURE_2D_NV, OFFSET_TEXTURE_2D_SCALE_NV,  
     OFFSET_TEXTURE_RECTANGLE_NV, OFFSET_TEXTURE_RECTANGLE_SCALE_NV,  
     DEPENDENT_AR_TEXTURE_2D_NV, DEPENDENT_GB_TEXTURE_2D_NV,  
     DOT_PRODUCT_NV, DOT_PRODUCT_DEPTH_REPLACE_NV,  
     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,  
     DOT_PRODUCT_TEXTURE_3D_NV, DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,  
     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,  
     DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV,  
     OFFSET_PROJECTIVE_TEXTURE_2D, OFFSET_PROJECTIVE_TEXTURE_2D_SCALE,  
     OFFSET_PROJECTIVE_TEXTURE_RECTANGLE,  
     OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE, OFFSET_HILO_TEXTURE_2D,  
     OFFSET_HILO_TEXTURE_RECTANGLE, OFFSET_HILO_PROJECTIVE_TEXTURE_2D,  
     OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE, DEPENDENT_HILO_TEXTURE_2D,  
     DEPENDENT_RGB_TEXTURE_3D, DEPENDENT_RGB_TEXTURE_CUBE_MAP,  
     DOT_PRODUCT_PASS_THROUGH, DOT_PRODUCT_TEXTURE_1D, or  
     DOT_PRODUCT_AFFINE_DEPTH_REPLACE.  Each of these texture shaders  
     requires a previous texture shader result that is not possible for  
     texture unit 0.  Therefore these shaders are disallowed for texture  
     unit 0."  
  
     3.8.13.3  Required State  
  
     Amend the first paragraph in this section to account for the 9 new  
     texture shader operations and the new "dot product third component"  
     state:  
  
     "The state required for texture shaders consists of a single bit to  
     indicate whether or not texture shaders are enabled, a vector of  
     three floating-point values for the constant eye vector, and n sets  
     of per-texture unit state where n is the implementation-dependent  
     number of supported texture units.  The set of per-texture unit  
     texture shader state consists of the thirty-seven-valued integer  
     indicating the texture shader operation, four two-valued integers  
     indicating the cull modes, an integer indicating the previous texture  
     unit input, a two-valued integer indicating the RGBA unsigned dot  
     product mapping mode, a 2x2 floating-point matrix indicating the  
     texture offset transform, a floating-point value indicating the  
     texture offset scale, a floating-point value indicating the texture  
     offset bias, and a bit to indicate whether or not the texture shader  
     stage is consistent."  
  
homeprevnext Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and the Frame Buffer)
  
     None  
  
homeprevnext Additions to Chapter 5 of the 1.2 Specification (Special Functions)
  
     None  
  
homeprevnext Additions to Chapter 6 of the 1.2 Specification (State and State Requests)
  
     None  
  
homeprevnext Additions to the GLX Specification
  
     None  
  
homeprevnext Dependencies on other specifications
  
     Same as the NV_texture_shader extension.  
  
homeprevnext Errors
  
     INVALID_OPERATION is generated when TexImage1D, TexImage2D,  
     or TexImage3D are called and the format is HILO_NV and the  
     internalformat is not one of HILO_NV, HILO8_NV, HILO16_NV,  
     SIGNED_HILO_NV, SIGNED_HILO8_NV, SIGNED_HILO16_NV; or if  
     the internalformat is one of HILO_NV, HILO8_NV, HILO16_NV,  
     SIGNED_HILO_NV, SIGNED_HILO8_NV or SIGNED_HILO16_NV and the format  
     is not HILO_NV.  
  
     INVALID_OPERATION is generated when CopyTexImage2D, CopyTexImage1D,  
     CopyTexSubImage3D, CopyTexSubImage2D, or CopyTexSubImage1D is called  
     and the internal format of the texture array to which the pixels are  
     to be copied is one of HILO_NV, HILO8_NV, HILO16_NV, SIGNED_HILO_NV,  
     SIGNED_HILO8_NV, SIGNED_HILO16_NV, DSDT_NV, DSDT8_NV, DSDT_MAG_NV,  
     DSDT8_MAG8_NV, DSDT_MAG_INTENSITY_NV, or DSDT8_MAG8_INTENSITY8_NV.  
  
     INVALID_OPERATION is generated when TexEnv is called and the  
     SHADER_OPERATION_NV parameter for texture unit 0 is assigned  
     one of OFFSET_TEXTURE_2D_NV, OFFSET_TEXTURE_2D_SCALE_NV,  
     OFFSET_TEXTURE_RECTANGLE_NV, OFFSET_TEXTURE_RECTANGLE_SCALE_NV,  
     DEPENDENT_AR_TEXTURE_2D_NV, DEPENDENT_GB_TEXTURE_2D_NV,  
     DOT_PRODUCT_NV, DOT_PRODUCT_DEPTH_REPLACE_NV,  
     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,  
     DOT_PRODUCT_TEXTURE_3D_NV, DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,  
     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV.  
     DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV,  
     OFFSET_PROJECTIVE_TEXTURE_2D_NV,  
     OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV,  
     OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV,  
     OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV,  
     OFFSET_HILO_TEXTURE_2D_NV, OFFSET_HILO_TEXTURE_RECTANGLE_NV,  
     OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV,  
     OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV,  
     DEPENDENT_HILO_TEXTURE_2D_NV, DEPENDENT_RGB_TEXTURE_3D_NV,  
     DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV, DOT_PRODUCT_PASS_THROUGH_NV,  
     DOT_PRODUCT_TEXTURE_1D_NV, or DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV."  
  
homeprevnext New State
  
UPDATE lines in Table 6.TextureShaders.  
  
Get Value                Type    Get Command  Initial Value         Description          Sec     Attribute  
-----------------------  ------  -----------  --------------------  -------------------  ------  ---------  
SHADER_OPERATION_NV      TxZ37   GetTexEnviv  NONE                  Texture shader       3.8.13  texture  
                                                                    operation  
RGBA_UNSIGNED_-          TxZ3    GetTexEnviv  UNSIGNED_IDENTITY_NV  Texture shader RGBA  3.8.13  texture  
  DOT_PRODUCT_MAPPING_NV                                            dot product mapping  
  
* SHADER_OPERATION_NV: Z21 in NV_texture_shader (and Z23 in  
  NV_texture_shader2) is now Z37 with NV_texture_shader3.  
  
* RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV: Z2 in NV_texture_shader is now  
  Z3 with NV_texture_shader3.  
  
[ The "Tx" type prefix means that the state is per-texture unit. ]  
  
[ The "Zn" type is an n-valued integer where n is the  
  implementation-dependent number of texture units supported.]  
  
New Implementation State  
  
     None  
  
homeprevnext Revision History
  
     November 15, 2001 - document that depth replace is after polygon  
     offset.  
  
     June 5, 2002 - Driver implementations before this date incorrectly  
     swap the HI and LO components of GL_HILO8_NV and GL_SIGNED_HILO8_NV  
     textures.  Drivers after this date have fixed the problem and match  
     the specified behavior.  
  
     March 5, 2007 - Corrected some enum names.  
  
  
Valid XHTML 1.1! Valid CSS! Last update: November 14, 2006.
Cette page doit être lue avec un navigateur récent respectant le standard XHTML 1.1.