#

Name ARM_texture_unnormalized_coordinates

Name Strings

GL_ARM_texture_unnormalized_coordinates

Contact

Jan-Harald Fredriksen ( jan-harald.fredriksen 'at' arm.com)

Contributors

Jan-Harald Fredriksen, ARM

Status

Complete

Version

Last Modified Date:         December 17, 2019
Revision:                   1

Number

324

Dependencies

OpenGL ES 3.0 is required.
This extension is written against OpenGL ES 3.2, May 14th 2018.

Overview

This extension provides the option to switch to unnormalized
coordinates for texture lookups using a sampler parameter.

Texture lookup in OpenGL ES is done using normalized coordinates. For
certain applications it is convenient to work with non-normalized
coordinates instead. It also beneficial to keep support for bilinear
filtering.

Additional restrictions apply to textures with non-normalized
coordinates that affect texture completeness and the available
texture lookup functions.

IP Status

No known IP claims.

New Procedures and Functions

None

New Tokens

Accepted by the <pname> parameter of TexParameteri, TexParameterf,
TexParameteriv, TexParameterfv, SamplerParameteri, SamplerParameterf,
SamplerParameteriv, SamplerParameterfv, TexParameterIivEXT,
TexParameterIuivEXT, SamplerParameterIivEXT, SamplerParameterIuivEXT,
GetTexParameteriv, GetTexParameterfv, GetTexParameterIivEXT,
GetTexParameterIuivEXT, GetSamplerParameteriv, GetSamplerParameterfv,
GetSamplerParameterIivEXT, and GetSamplerParameterIuivEXT:

    TEXTURE_UNNORMALIZED_COORDINATES_ARM          0x8F6A

Additions to Chapter 8 of the OpenGL ES 3.2 Specification (Textures and Samplers)

Add a section after section 8.15 (Texture Magnification)

8.xx Unnormalized coordinates

If the value of TEXTURE_UNNORMALIZED_COORDINATES_ARM is TRUE, then the range of the coordinates used to lookup the texture value is in the range of zero to the texture dimensions for x, y and z, rather than in the range of zero to one.

When the value of TEXTURE_UNNORMALIZED_COORDINATES_ARM is TRUE, equation 8.9 is not used. Instead, let u(x; y) = s(x; y) v(x; y) = t(x; y) w(x; y) = r(x; y)

When the value of TEXTURE_UNNORMALIZED_COORDINATES_ARM is TRUE, results of a texture lookup are undefined if any of the following conditions is true:

  • the texture access is performed with a lookup functions that supports texel offsets
  • the texture access is performed with a lookup functions with projection

Add to 8.17 Texture Completeness

Add to the conditions for texture completeness below "Using the preceding definitions, a texture is complete unless any of the following conditions hold true:":

  • The value of TEXTURE_UNNORMALIZED_COORDINATES_ARM is TRUE, and any of ** the texture is not a two-dimensional texture ** the minification filter is not NEAREST ** the magnification is not NEAREST ** the value of TEXTURE_BASE_LEVEL is not 0 ** the value of TEXTURE_WRAP_S and TEXTURE_WRAP_T is not CLAMP_TO_EDGE nor CLAMP_TO_BORDER ** the value of TEXTURE_COMPARE_MODE is not NONE

Errors

None.

New State

Modify Table 21.12: Textures (state per sampler object)

Add the following parameter:

Get Value                             Type  Get Command         Value    Description         Sec.
------------------------------------- ----- ------------------- -------  ------------------- ----
TEXTURE_UNNORMALIZED_COORDINATES_ARM  B     GetSamplerParameter FALSE    unnormalized coords 8.xx

New Implementation Dependent State

None

Issues

None

Revision History

Rev.    Date      Author    Changes
----  ----------  --------  -----------------------------------------
1     2019-12-17  jhf       initial version