back  Return to list

homeprevnext Name
homeprevnext Name Strings
homeprevnext Notice
    Copyright NVIDIA Corporation, 1999, 2000.  
homeprevnext Version
    NVIDIA Date: March 1, 2001  
    $Date: 2001/03/01 $ $Revision: #11 $  
    $Id: //sw/main/docs/OpenGL/specs/GL_EXT_texture_lod_bias.txt#11 $  
homeprevnext Number
homeprevnext Dependencies
    Written based on the wording of the OpenGL 1.2 specification.  
    Affects ARB_multitexture.  
homeprevnext Overview
    OpenGL computes a texture level-of-detail parameter, called lambda  
    in the GL specification, that determines which mipmap levels and  
    their relative mipmap weights for use in mipmapped texture filtering.  
    This extension provides a means to bias the lambda computation  
    by a constant (signed) value.  This bias can provide a way to blur  
    or pseudo-sharpen OpenGL's standard texture filtering.  
    This blurring or pseudo-sharpening may be useful for special effects  
    (such as depth-of-field effects) or image processing techniques  
    (where the mipmap levels act as pre-downsampled image versions).  
    On some implementations, increasing the texture lod bias may improve  
    texture filtering performance (at the cost of texture bluriness).  
    The extension mimics functionality found in Direct3D.  
homeprevnext Issues
    Should the texture LOD bias be settable per-texture object or  
    per-texture stage?  
      RESOLUTION:  Per-texture stage.  This matches the Direct3D  
      semantics for texture lod bias.  Note that this differs from  
      the semantics of SGI's SGIX_texture_lod_bias extension that  
      has the biases per-texture object.  
      This also allows the same texture object to be used by two different  
      texture units for different blurring.  This is useful for  
      extrapolating detail between various levels of detail in a  
      mipmapped texture.  
      For example, you can extrapolate texture detail with  
      ARB_multitexture and EXT_texture_env_combine by computing  
        (B0 - B2) * 2 + B2  
      where B0 is a non-biased texture (normal sharpness) and B2 is  
      the same texture but bias by 2 levels-of-detail (fairly blurry).  
      This has the effect of increasing the high-frequency information  
      in the texture.  There are immediate Earth Sciences and medical  
      imaging applications for this technique.  
      Per-texture stage control of the LOD bias is also useful for  
      allowing an application to control overall texture bluriness.  
      This can be used in games to simulate disorientation (note that  
      only textures will blur, not edges).  It can also be used to  
      globally control texturing performance.  An application may be  
      able to sustain a constant frame rate by avoiding texture fetch  
      stalls by using slightly blurrier textures.  
    How does EXT_texture_lod_bias differ from SGIX_texture_lod bias?  
      EXT_texture_lod_bias adds a bias to lambda.  The  
      SGIX_texture_lod_bias extension changes the computation of rho (the  
      log2 of which is lambda).  The SGIX extension provides separate  
      biases in each texture dimension.  The EXT extension does not  
      provide an "directionality" in the LOD control.  
    Does the texture lod bias occur before or after the TEXTURE_MAX_LOD  
    and TEXTURE_MIN_LOD clamping?  
      RESOLUTION:  BEFORE.  This allows the texture lod bias to still  
      be clamped within the max/min lod range.  
    Does anything special have to be said to keep the biased lambda value  
    from being less than zero or greater than the maximum number of  
    mipmap levels?  
      RESOLUTION:  NO.  The existing clamping in the specification  
      handles these situations.  
    The texture lod bias is specified to be a float.  In practice, what  
    sort of range is assumed for the texture lod bias?  
      RESOLUTION:  The MAX_TEXTURE_LOD_BIAS_EXT implementation constant  
      advertises the maximum absolute value of the supported texture  
      lod bias.  The value is recommended to be at least the maximum  
      mipmap level supported by the implementation.  
    The texture lod bias is specified to be a float.  In practice, what  
    sort of precision is assumed for the texture lod bias?  
      RESOLUTION;  This is implementation dependent.  Presumably,  
      hardware would implement the texture lod bias as a fractional bias  
      but the exact fractional precision supported is implementation  
      dependent.  At least 4 fractional bits is recommended.  
homeprevnext New Procedures and Functions
homeprevnext New Tokens
    Accepted by the <target> parameters of GetTexEnvfv, GetTexEnviv,  
    TexEnvi, TexEnvf, Texenviv, and TexEnvfv:  
        TEXTURE_FILTER_CONTROL_EXT          0x8500  
    When the <target> parameter of GetTexEnvfv, GetTexEnviv, TexEnvi,  
    TexEnvf, TexEnviv, and TexEnvfv is TEXTURE_FILTER_CONTROL_EXT, then  
    the value of <pname> may be:  
        TEXTURE_LOD_BIAS_EXT                0x8501  
    Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,  
    GetFloatv, and GetDoublev:  
        MAX_TEXTURE_LOD_BIAS_EXT            0x84FD  
homeprevnext Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation)
homeprevnext Additions to Chapter 3 of the 1.2 Specification (Rasterization)
 --  Section 3.8.5 "Texture Minification"  
     Change the first formula under "Scale Factor and Level of Detail" to read:  
     "The choice is governed by a scale factor p(x,y), the level of detail  
     parameter lambda(x,y), defined as  
                 lambda'(x,y) = log2[p(x,y)] + lodBias  
     where lodBias is the texture unit's (signed) texture lod bias parameter  
     (as described in Section 3.8.9) clamped between the positive and negative  
     values of the implementation defined constant MAX_TEXTURE_LOD_BIAS_EXT."  
 --  Section 3.8.9 "Texture Environments and Texture Functions"  
     Change the first paragraph to read:  
     "The command  
        void TexEnv{if}(enum target, enum pname, T param);  
        void TexEnv{if}v(enum target, enum pname, T params);  
     sets parameters of the texture environment that specifies how texture  
     values are interepreted when texturing a fragment or sets per-texture  
     unit texture filtering parameters.  The possible target parameters  
     are TEXTURE_ENV or TEXTURE_FILTER_CONTROL_EXT.  ...  When target is  
     TEXTURE_ENV, the possible environment parameters are TEXTURE_ENV_MODE  
     the only possible texture filter parameter is TEXTURE_LOD_BIAS_EXT.  
     TEXTURE_LOD_BIAS_EXT is set to a signed floating point value that  
     is used to bias the level of detail parameter, lambda, as described  
     in Section 3.8.5."  
     Add a final paragraph at the end of the section:  
     "The state required for the per-texture unit filtering parameters  
     consists of one floating-point value."  
homeprevnext Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and the Frame Buffer)
homeprevnext Additions to Chapter 5 of the 1.2 Specification (Special Functions)
homeprevnext Additions to Chapter 6 of the 1.2 Specification (State and State Requests)
 --  Section 6.1.3 "Texture Environments and Texture Functions"  
     Change the third sentence of the third paragraph to read:  
     "The env argument to GetTexEnv must be either TEXTURE_ENV or  
homeprevnext Additions to the GLX Specification
homeprevnext Errors
     INVALID_ENUM is generated when TexEnv is called with a <pname> of  
     TEXTURE_FILTER_PARAMETER_EXT and the value of <param> or what is pointed  
     to by <params> is not TEXTURE_LOD_BIAS_EXT.  
homeprevnext New State
(table 6.14, p204) add the entry:  
Get Value                 Type   Get Command  Initial Value     Description      Sec     Attribute  
-----------------------   ----   -----------  --------------    ---------------  -----   ---------  
TEXTURE_LOD_BIAS_EXT      R      GetTexEnvfv  0.0               Biases texture   3.8.9    texture  
                                                                level of detail  
(When ARB_multitexture is supported, the TEXTURE_LOD_BIAS_EXT state is per-texture unit.)  
New Implementation State  
(table 6.24, p214) add the following entries:  
Get Value                    Type    Get Command   Minimum Value   Description         Sec     Attribute  
--------------------------   ----    -----------   -------------   -----------------   ------  --------------  
MAX_TEXTURE_LOD_BIAS_EXT     R+      GetFloatv     4.0             Maximum             3.8.9   -  
                                                                   absolute texture  
                                                                   lod bias  
homeprevnext Revision History
    6/2/00 - add spec language to allow GetTexEnv to accept  
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.