back  Return to list

GL_NV_texture_compression_vtc
homeprevnext Name
  
    NV_texture_compression_vtc  
  
homeprevnext Name Strings
  
    GL_NV_texture_compression_vtc  
  
homeprevnext Contact
  
    Matt Craighead, NVIDIA Corporation (mcraighead 'at' nvidia.com)  
  
homeprevnext Notice
  
    Copyright NVIDIA Corporation, 2000, 2001, 2004.  
  
homeprevnext IP Status
  
    NVIDIA Proprietary.  
  
homeprevnext Version
  
    NVIDIA Date: April 20, 2004  
    $Date$ $Revision$  
    $Id: //sw/main/docs/OpenGL/specs/GL_NV_texture_compression_vtc.txt#3 $  
  
homeprevnext Number
  
    228  
  
homeprevnext Dependencies
  
    Written based on the wording of the OpenGL 1.2.1 specification.  
  
    ARB_texture_compression is required.  
  
    EXT_texture_compression_s3tc is required.  
  
homeprevnext Overview
  
    This extension adds support for the VTC 3D texture compression  
    formats, which are analogous to the S3TC texture compression formats,  
    with the addition of some retiling in the Z direction.  VTC has the  
    same compression ratio as S3TC and uses 4x4x1, 4x4x2, or 4x4x4  
    blocks.  
  
homeprevnext Issues
  
    *   Should the enumerants' (1) values and (2) names be reused from  
        the S3TC extension?  
  
        RESOLVED: Yes and yes.  There is such a close correspondence  
        between the formats that introducing new values or names would  
        serve no purpose.  
  
    *   Should the block alignment restrictions differ in any way from  
        the block alignment restrictions in the S3TC extension?  
  
        RESOLVED: No, except for the addition of the Z-direction block  
        alignment restriction for CompressedTexSubImage3D, which is  
        analogous to the X and Y restrictions.  
  
homeprevnext New Procedures and Functions
  
    None.  
  
homeprevnext New Tokens
  
    Accepted by the <internalformat> parameter of TexImage3D and  
    CompressedTexImage3DARB and the <format> parameter of  
    CompressedTexSubImage2DARB:  
  
        COMPRESSED_RGB_S3TC_DXT1_EXT                   0x83F0  
        COMPRESSED_RGBA_S3TC_DXT1_EXT                  0x83F1  
        COMPRESSED_RGBA_S3TC_DXT3_EXT                  0x83F2  
        COMPRESSED_RGBA_S3TC_DXT5_EXT                  0x83F3  
  
homeprevnext Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation)
  
    None.  
  
homeprevnext Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization)
  
    Modify the paragraph added to the end of the TexSubImage discussion  
    (page 123) by EXT_texture_compression_s3tc to say:  
  
    "If the internal format of the texture image being modified is  
    COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT,  
    COMPRESSED_RGBA_S3TC_DXT3_EXT, or COMPRESSED_RGBA_S3TC_DXT5_EXT, the  
    texture is stored using one of several S3TC or VTC compressed texture  
    image formats.  Such images are easily edited along 4x4 texel  
    boundaries, so the limitations on TexSubImage2D, TexSubImage3D,  
    CopyTexSubImage2D, and CopyTexSubImage3D parameters are relaxed.  
    These commands will result in an INVALID_OPERATION error only if one  
    of the following conditions occurs:  
  
        * <width> is not a multiple of four or equal to TEXTURE_WIDTH.  
        * <height> is not a multiple of four or equal to TEXTURE_HEIGHT.  
        * <xoffset> or <yoffset> is not a multiple of four."  
  
    Modify the paragraph added to Section 3.8.2 "Alternate Image  
    Specification" at the end of the CompressedTexImage section by  
    EXT_texture_compression_s3tc to say:  
  
    "If <internalformat> is COMPRESSED_RGB_S3TC_DXT1_EXT,  
    COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT, or  
    COMPRESSED_RGBA_S3TC_DXT5_EXT, the compressed texture is stored using  
    one of several S3TC or VTC compressed texture image formats.  The  
    S3TC texture compression algorithm supports only 2D images without  
    borders, while the VTC texture compression algorithm supports only  
    3D images without borders.  CompressedTexImage1DARB produces an  
    INVALID_ENUM error if <internalformat> is an S3TC/VTC format.  
    CompressedTexImage2DARB and CompressedTexImage3DARB will produce an  
    INVALID_OPERATION error if <border> is non-zero."  
  
    Modify the paragraph added to Section 3.8.2 "Alternate Image  
    Specification" at the end of the CompressedTexSubImage section by  
    EXT_texture_compression_s3tc to say:  
  
    "If the internal format of the texture image being modified is  
    COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT,  
    COMPRESSED_RGBA_S3TC_DXT3_EXT, or COMPRESSED_RGBA_S3TC_DXT5_EXT, the  
    texture is stored using one of several S3TC or VTC compressed texture  
    image formats.  Since these algorithms support only 2D and 3D images,  
    CompressedTexSubImage1DARB produces an INVALID_ENUM error if <format>  
    is an S3TC/VTC format.  Since S3TC/VTC images are easily edited along  
    4x4 and 4x4x4 texel boundaries, the limitations on  
    CompressedTexSubImage2D and CompressedTexSubImage3D are relaxed.  
    CompressedTexSubImage2D and CompressedTexSubImage3D will result in an  
    INVALID_OPERATION error only if one of the following conditions  
    occurs:  
  
        * <width> is not a multiple of four or equal to TEXTURE_WIDTH.  
        * <height> is not a multiple of four or equal to TEXTURE_HEIGHT.  
        * <depth> is not a multiple of four or equal to TEXTURE_DEPTH.  
        * <xoffset>, <yoffset>, or <zoffset> is not a multiple of four."  
  
homeprevnext Additions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment Operations and the Frame Buffer)
  
    None.  
  
homeprevnext Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions)
  
    None.  
  
homeprevnext Additions to Chapter 6 of the OpenGL 1.2.1 Specification (State and State Requests)
  
    None.  
  
homeprevnext Additions to Appendix A of the OpenGL 1.2.1 Specification (Invariance)
  
    None.  
  
homeprevnext GLX Protocol
  
    None.  
  
homeprevnext Errors
  
    The INVALID_ENUM error that was generated by CompressedTexImage3DARB  
    if <internalformat> is COMPRESSED_RGB_S3TC_DXT1_EXT,  
    COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT, or  
    COMPRESSED_RGBA_S3TC_DXT5_EXT no longer occurs.  
  
    INVALID_OPERATION is generated by CompressedTexImage3DARB if  
    <internalformat> is COMPRESSED_RGB_S3TC_DXT1_EXT,  
    COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT, or  
    COMPRESSED_RGBA_S3TC_DXT5_EXT and <border> is not equal to zero.  
  
    The INVALID_ENUM error that was generated by  
    CompressedTexSubImage3DARB if <format> is  
    COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT,  
    COMPRESSED_RGBA_S3TC_DXT3_EXT, or COMPRESSED_RGBA_S3TC_DXT5_EXT no  
    longer occurs.  
  
    INVALID_OPERATION is generated by TexSubImage3D or  
    CopyTexSubImage3D if INTERNAL_FORMAT is COMPRESSED_RGB_S3TC_DXT1_EXT,  
    COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT, or  
    COMPRESSED_RGBA_S3TC_DXT5_EXT and any of the following apply: <width>  
    is not a multiple of four or equal to TEXTURE_WIDTH; <height> is not  
    a multiple of four or equal to TEXTURE_HEIGHT; <xoffset> or <yoffset>  
    is not a multiple of four.  
  
    INVALID_OPERATION is generated by CompressedTexSubImage3D  
    if INTERNAL_FORMAT is COMPRESSED_RGB_S3TC_DXT1_EXT,  
    COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT,  
    or COMPRESSED_RGBA_S3TC_DXT5_EXT and any of the following apply:  
    <width> is not a multiple of four or equal to TEXTURE_WIDTH; <height>  
    is not a multiple of four or equal to TEXTURE_HEIGHT; <depth> is not  
    a multiple of four or equal to TEXTURE_DEPTH; <xoffset> <yoffset>,  
    or <zoffset> is not a multiple of four.  
  
    See also errors in the GL_ARB_texture_compression and  
    GL_EXT_texture_compression_s3tc specifications.  
  
homeprevnext New State
  
    None.  
  
homeprevnext Appendix
  
    VTC Compressed Texture Image Formats  
  
    Each VTC compression format is similar to a corresponding S3TC  
    compression format, but where an S3TC block encodes a 4x4 block of  
    texels, a VTC block encodes a 4x4x1, 4x4x2, or 4x4x4 block of texels.  
    If the depth of the image is four or greater, 4x4x4 blocks are used,  
    and if the depth is 1 or 2, 4x4x1 or 4x4x2 blocks are used.  
  
    The size in bytes of a VTC image with dimensions w, h, and d is:  
  
        ceil(w/4) * ceil(h/4) * d * blocksize,  
  
    where blocksize is the size of an analogous 4x4 S3TC block and is  
    either 8 or 16 bytes.  
  
    The block containing a texel at location (x,y,z) starts at an offset  
    inside the image of:  
  
        blocksize * min(d,4) * (floor(x/4) +  
                                ceil(w/4) * (floor(y/4) +  
                                             ceil(h/4) * floor(z/4)))  
  
    bytes.  
  
    A 4x4x1 block of each of the four formats is stored in exactly the  
    same way that a 4x4 block of the analogous S3TC format is stored.  
  
    A 4x4x2 or 4x4x4 block is stored as two or four consecutive 4x4  
    blocks of the analogous S3TC format, one for each layer inside the  
    block.  For example, a 4x4x2 DXT1 block consists of 16 bytes in  
    total.  The first 8 bytes encode the texels at locations (0,0,0)  
    through (3,3,0), and the second 8 bytes encode the texels at  
    locations (0,0,1) through (3,3,1).  
  
    For definitions of the S3TC formats, please refer to the  
    EXT_texture_compression_s3tc specification.  
  
homeprevnext Revision History
  
    April 20, 2004 - Relax restrictions on depth and zoffset for  
    CopyTexSubImage3D and TexSubImage3D commands.  Previous restrictions  
    required 1) the image level's depth to be 1 for CopyTexSubImage3D to  
    work (making the command useless in practice) and 2) the depth and  
    zoffset for TexSubImage3D to be a multiple 4.  If these restrictions  
    were violated, an INVALID_OPERATION error was documented to be  
    generated.  NVIDIA Release 60 drivers after April 20, 2004 relax  
    these restrictions.  Note the restrictions on CompressedTexSubImage3D  
    that depth and zoffset must be multiples of 4 still exist because the  
    VTC block is a 3D 4x4x4 block (or 4x4x2 and 4x4x1 in the end cases).  
  
  
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.