Name

    AMD_texture_texture4

Name Strings

    GL_AMD_texture_texture4

Contact

    Bill Licea-Kane, AMD ( Bill.Licea-Kane 'at' amd.com )

Contributors

    Pierre Boudier
    Eric Boumaour
    Alex Chalfin
    Nick Haemel    
    Evan Hart
    Bill Licea-Kane
    Benj Lipchak
    Lijun Qu

Status

    Complete

Version

    Last Modified Date: Mar 6, 2009
    Revision: 6

Number

    362

Dependencies

    OpenGL 1.1 is required. 

    The extension is written against the OpenGL 2.0 Specification.

    The extension is written against the OpenGL Shading Language V 1.20
    Specification.

    This extension interacts with EXT_texture_anisotropic.


Overview

    This extension adds new shading language built-in texture functions
    to the shading language.

    These texture functions may be used to access one component textures.

    The texture4 built-in function returns a texture value derived from
    a 2x2 set of texels in the image array of level levelbase is selected.
    These texels are selected in the same way as when the value of
    TEXTURE_MIN_FILTER is LINEAR, but instead of these texels being
    filtered to generate the texture value, the R, G, B and A texture values
    are derived directly from these four texels.

IP Status

    No known claims.

New Procedures and Functions

   None

New Tokens

   None

Additions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL
Operation)

   None

Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization)

    Add to section 3.8.8 (P. 174, Prior to "And for a one-dimensional texture"):

    "For a texture4 built-in function (see OpenGL Shading Language), a 2x2 set
    of texels in the image array of level levelbase is selected.  These
    texels are selected in the same way as when the value of TEXTURE_MIN_FILTER
    is LINEAR, but instead of these texels being filtered to generate the
    texture value, the R, G, B and A texture values are derived directly 
    from these four texels,

        TauR = Taui0j1                                            (3.26a)
        TauG = Taui1j1
        TauB = Taui1j0
        TauA = Taui0j0

     ___________________________________________________________________
     |                                                                 |
     |   1.0  +---+---+---+---+---+---+---+---+                        |
     |       7|   |   |   |   |   |   |   |   |                        |
     |        +---+---+---+---+---+---+---+---+                        |
     |       6|   |   |   |   |   | R | G |   |                        |
     |        +---+---+---+---+---+---+---+---+                        |
     |       5|   |   |   |   |   | A | B |   |                        |
     |        +---+---+---+---+---+---+---+---+                        |
     |       4|   |   |   |   |   |   |   |   |                        |
     |        +---+---+---+---+---+---+---+---+                        |
     |       3|   |   |   |   |   |   |   |   |                        |
     |        +---+---+---+---+---+---+---+---+                        |
     |       2|   |   |   |   |   |   |   |   |                        |
     |        +---+---+---+---+---+---+---+---+                        |
     |       1|   |   |   |   |   |   |   |   |                        |
     |        +---+---+---+---+---+---+---+---+                        |
     |       0|   |   |   |   |   |   |   |   |                        |
     |   0.0  +---+---+---+---+---+---+---+---+                        |
     |          0   1   2   3   4   5   6   7                          |
     |       0.0                             1.0                       |
     |                                                                 |
     |  Figure 3.10a.  An example of an 8x8 texture image and the      |
     |  components returned for texture4.                              |
     |                                                                 |
     |_________________________________________________________________|


    To achieve this packing, the use of texture4 is
    restricted to textures with a single component base internal format of
    ALPHA, DEPTH_COMPONENT, INTENSITY, or LUMINANCE and cannot be used
    with a three-dimensional texture (see section 3.8.10)."

    Add to caption of Table 3.21 (p. 184)

     "If the texture4 built-in function is used to access a sampler, 
     texture source components are derived as if the Texture Base
     Internal Format is RGBA.

    Add to Section 3.11.2, Shader Execution, Texture Access
    (p. 195) Prior to paragraph beginning "If a fragment shader uses a sampler..."
 
    Texture4 lookups must be consistent with the texture state; the 
    results of the texture4 lookup are undefined if:
 
       - The base internal format of the texture not one of ALPHA,
         DEPTH_COMPONENT, INTENSITY, or LUMINANCE. 

       - The wrap modes is not either CLAMP_TO_EDGE or REPEAT.

Additions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment
Operations and the Frame Buffer)

    None

Additions to Chapter 5 of the OpenGL 2.0 Specification (Special
Functions)

    None

Additions to Chapter 6 of the OpenGL 2.0 Specification (State and
State Requests)

    None

Additions to Chapter 1 of the OpenGL Shading Language 1.20 Specification
(Introduction)

Additions to Chapter 2 of the OpenGL Shading Language 1.20 Specification
(Overview of OpenGL Shading)

Additions to Chapter 3 of the OpenGL Shading Language 1.20 Specification
(Basics)

Additions to Chapter 4 of the OpenGL Shading Language 1.20 Specification
(Variables and Types)

Additions to Chapter 5 of the OpenGL Shading Language 1.20 Specification
(Operators and Expressions)

Additions to Chapter 6 of the OpenGL Shading Language 1.20 Specification
(Statements and Structure)

Additions to Chapter 7 of the OpenGL Shading Language 1.20 Specification
(Built-in Variables)

Additions to Chapter 8 of the OpenGL Shading Language 1.20 Specification
(Built-in Functions)

    Add to 8.7, Texture Lookup Functions
    (p. 85) prior to paragraph beginning "In all functions below..."
 
    Add to 8.7, Texture Lookup Functions,
    (p. 85) to the texture built-in function table:
 
    Syntax
    vec4 texture4( sampler2D sampler, vec2 coord)
    Description
    Use the texture coordinate coord to do a texture lookup
    in the 2D texture currently bound to sampler, and return 
    the four nearest (unfiltered) texels.

Additions to Chapter 9 of the OpenGL Shading Language 1.20 Specification
(Shading Language Grammar)

Additions to Chapter 10 of the OpenGL Shading Language 1.20 
Specification (Issues)

Errors

    None.

New State

    None.

New Implementation Dependent State

    None

Interactions with EXT_texture_filter_anisotropic

    Texture4 is not an area filter.  No LOD calculations are performed
    and only texels in the baselevel can be returned.

    Therefore, for the texture4 built-in function the preferred implementation 
    would sample four texels even if TEXTURE_MAX_ANISOTROPY_EXT is greater than 1.0.

Issues

    1)  How is this related to ATI_texture_nearest_four?

    ATI_texture_nearest_four only set texture filter state.

    This extension adds built-in functions to the shading language
    that will fetch four texels from the baselevel.

    2)  What about extending this to allow texture4 fetches from
    RG, RGB, and RGBA textures?

    Resolution - defer.  This extension only fetches from one component
    textures.

    3)  What about the use of this extension with fixed function?

    Resolution - The built-in functions are added to the shading 
    language only.  There is no ability to fetch four texels in 
    fixed function.

    4)  What naming convention do we use for the new texture built-in 
    functions?

    Resolution - Even though this extension is written against
    OpenGL Shading Language 1.20, we use the naming convention
    for OpenGL Shading Language 1.30.

    5)  Should we add built-in texture functions for:
    * Fetch4 with Absolute LOD?
    * Fetch4 with Relative LOD?
    * Fetch4 with coordinate offsets?
    * Fetch4 with compare?

    Resolved - No.

    6)  If the texture is not a single component, or if the
    wrap modes are not clamp_to_edge or repeat, is the texture
    treated as incomplete, or are the values returned by the
    texture4 built-in undefined?
 
    Unresolved.  This draft makes them undefined.

    7)  Can both texture *AND* texture4 built-in functions 
    sample from the same sampler in a shader?

    No.

Revision History:

   Date: 03/06/2008
   Revision: 6 (wwlk)
       Remove redundant <CR><LF>s (Apple v Microsoft)

   Date: 03/04/2008
   Revision: 5 (wwlk)
       General cleanup for posting to registry.

   Date: 01/15/2009
   Revision: 4 (wwlk)
       Updated IP Status.

   Date: 06/24/2008
   Revision: 3 (wwlk)
       Deleted mip-mapping section.  (Inadvertent undelete.)

   Date: 06/24/2008

   Revision: 2 (wwlk)
       Dropped texture filter state.
       Document restrictions of texture4.  (Baselevel only.)


   Date: 06/18/2008
   Revision: 1 (wwlk)
       1st draft derived from ATI_texture_nearest_four
