back  Return to list

GL_EXT_shadow_funcs
homeprevnext Name
  
    EXT_shadow_funcs  
  
homeprevnext Name Strings
  
    GL_EXT_shadow_funcs  
  
homeprevnext Contact
  
    Mark J. Kilgard (mjk 'at' nvidia.com)  
  
homeprevnext Status
  
    Complete  
  
homeprevnext Version
  
    Last Modified Date:  $Date: 2002/03/22 $  
    NVIDIA Revision:  $Revision: #5 $  
  
homeprevnext Number
  
    267  
  
homeprevnext Dependencies
  
    OpenGL 1.1 is required.  
    ARB_depth_texture is required.  
    ARB_shadow is required.  
    This extension is written against the OpenGL 1.3 Specification.   
  
homeprevnext Overview
  
    This extension generalizes the GL_ARB_shadow extension to support all  
    eight binary texture comparison functions rather than just GL_LEQUAL  
    and GL_GEQUAL.  
  
homeprevnext IP Status
  
    None.  
  
homeprevnext Issues
  
    (1) What should this extension be called?  
  
      RESOLUTION: EXT_shadow_funcs.  The extension adds new texture  
      compare (shadow) comparison functions to ARB_shadow.  
  
    (2) Are there issues with GL_EQUAL and GL_NOTEQUAL?  
  
      The GL_EQUAL mode (and GL_NOTEQUAL) may be difficult to obtain  
      well-defined behavior from. This is because there is no guarantee  
      that the divide done by the shadow mapping r/q division is going  
      to exactly match the z/w perspective divide and depth range scale  
      & bias used to generate depth values.  Perhaps it can work in a  
      well-defined manner in orthographic views or if you can guarantee  
      that the texture hardware's r/q is computed with the same hardware  
      used to compute z/w (NVIDIA's NV_texture_shader extension can  
      provide such a guarantee).  
  
      Similiarly, GL_LESS and GL_GREATER or only different from GL_LEQUAL  
      and GL_GEQUAL respectively by a single unit of depth precision  
      which may make the difference between these modes very subtle.  
  
homeprevnext New Procedures and Functions
  
    None  
  
homeprevnext New Tokens
  
    None  
  
homeprevnext Additions to Chapter 2 of the 1.3 Specification (OpenGL Operation)
  
    None  
  
homeprevnext Additions to Chapter 3 of the 1.3 Specification (Rasterization)
  
    Section 3.8.4, Texture Parameters, p. 133, update table 3.19 with the  
    following new legal values for TEXTURE_COMPARE_FUNC_ARB:  
  
        Name                        Type  Legal Values  
        --------------------------  ----  -------------------------------  
        TEXTURE_COMPARE_FUNC_ARB    enum  LEQUAL, GEQUAL, LESS, GREATER,  
                                          EQUAL, NOTEQUAL, ALWAYS, NEVER  
  
    After section 3.8.12, Texture Environments and Texture Functions,  
    p. 149, update the texture compare pseudo-code in section 3.8.13.1  
    (as added by ARB_shadow):  
  
        if TEXTURE_COMPARE_MODE_ARB = NONE  
  
            r = Dt  
  
        else if TEXTURE_COMPARE_MODE_ARB = COMPARE_R_TO_TEXTURE_ARB  
  
            if TEXTURE_COMPARE_FUNC_ARB = LEQUAL  
  
                 { 1.0,  if R <= Dt  
             r = {  
                 { 0.0,  if R > Dt  
      
            else if TEXTURE_COMPARE_FUNC_ARB = GEQUAL  
      
                 { 1.0,  if R >= Dt  
             r = {  
                 { 0.0,  if R < Dt  
      
            else if TEXTURE_COMPARE_FUNC_ARB = LESS  
      
                 { 1.0,  if R < Dt  
             r = {  
                 { 0.0,  if R >= Dt  
      
            else if TEXTURE_COMPARE_FUNC_ARB = GREATER  
      
                 { 1.0,  if R > Dt  
             r = {  
                 { 0.0,  if R <= Dt  
      
            else if TEXTURE_COMPARE_FUNC_ARB = EQUAL  
      
                 { 1.0,  if R == Dt  
             r = {  
                 { 0.0,  if R != Dt  
      
            else if TEXTURE_COMPARE_FUNC_ARB = NOTEQUAL  
      
                 { 1.0,  if R != Dt  
             r = {  
                 { 0.0,  if R == Dt  
      
            else if TEXTURE_COMPARE_FUNC_ARB = ALWAYS  
      
             r = 1.0  
      
            else if TEXTURE_COMPARE_FUNC_ARB = NEVER  
      
             r = 0.0  
  
            endif  
  
            if DEPTH_TEXTURE_MODE_ARB = LUMINANCE  
      
                Lt = r  
      
            else if DEPTH_TEXTURE_MODE_ARB = INTENSITY  
      
                It = r  
      
            else if DEPTH_TEXTURE_MODE_ARB = ALPHA  
      
                At = r  
      
            endif  
  
        endif  
  
homeprevnext Additions to Chapter 4 of the 1.3 Specification (Per-Fragment Operations and the Frame Buffer)
  
    None  
  
homeprevnext Additions to Chapter 5 of the 1.3 Specification (Special Functions)
  
    None  
  
homeprevnext Additions to Chapter 6 of the 1.3 Specification (State and State Requests)
  
    None  
  
homeprevnext Additions to the GLX Specification
  
    None  
  
homeprevnext Errors
  
    INVALID_ENUM is generated if TexParameter[if][v] parameter <pname>  
    is TEXTURE_COMPARE_FUNC_ARB and parameter <param> is not one of  
    LEQUAL, GEQUAL, LESS, GREATER, EQUAL, NOTEQUAL, ALWAYS, or NEVER.  
  
homeprevnext New State
  
    In table 6.16, Texture Objects, p. 224, add the following:  
  
    Get Value                   Type  Get Command           Initial Value  Description     Sec.   Attribute  
    --------------------------  ----  --------------------  -------------  --------------  -----  ---------  
    TEXTURE_COMPARE_FUNC_ARB    Z_8   GetTexParameter[if]v  LEQUAL         compare func    3.8.13 texture  
  
homeprevnext New Implementation Dependent State
  
    None  
  
homeprevnext Revision History
  
    None  
  
NV20 Implementation Details  
  
    NV20 (GeForce3 and Quadro DCC) will fallback to software rasterization  
    if two or more texture units have distinct TEXTURE_COMPARE_FUNC_ARB  
    settings that are not opposites (eg, GL_EQUAL and GL_NOTEQUAL).  
    This is not an issue on NV25 (GeForce4 and Quadro4).  
    This is not an issue on NV25 (GeForce4 and Quadro4).  
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.