blob: 60ecd4a0beccfae329589dae46dc88cfab104668 [file] [log] [blame]
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