blob: 373368f1fbcc09d993428637ab1a8d7b090dbc7c [file] [log] [blame]
Name
ARB_texture_mirrored_repeat
Name Strings
GL_ARB_texture_mirrored_repeat
Contact
Bimal Poddar, Intel, bimal.poddar at intel.com
Dan Brokenshire, IBM, brokensh at us.ibm.com
Pat Brown, Nvidia, pbrown at nvidia.com
Notice
Copyright (c) 2001-2013 The Khronos Group Inc. Copyright terms at
http://www.khronos.org/registry/speccopyright.html
Specification Update Policy
Khronos-approved extension specifications are updated in response to
issues and bugs prioritized by the Khronos OpenGL Working Group. For
extensions which have been promoted to a core Specification, fixes will
first appear in the latest version of that core Specification, and will
eventually be backported to the extension document. This policy is
described in more detail at
https://www.khronos.org/registry/OpenGL/docs/update_policy.php
Status
Complete. Approved by ARB on October 16, 2001.
Version
Last modified date: 2001/09/20
Number
ARB Extension #21
Dependencies
This extension is written against the OpenGL 1.3 Specification.
However, this extension does not require OpenGL 1.3.
Overview
ARB_texture_mirrored_repeat extends the set of texture wrap modes to
include a mode (GL_MIRRORED_REPEAT_ARB) that effectively uses a texture
map twice as large at the original image in which the additional half,
for each coordinate, of the new image is a mirror image of the original
image.
This new mode relaxes the need to generate images whose opposite edges
match by using the original image to generate a matching "mirror image".
Issues
1. The spec clamps the final (u,v) coordinates to the range [0.5, 2^n-0.5].
This will produce the same effect as trapping a sample of the border texel
and using the corresponding edge texel. The choice of technique is purely
an implementation detail.
2. The IBM_texture_mirrored_repeat extension inadvertantly used an HP
enumerant value (0x8370) allocated by HP as an interleaved array format.
Should the enumerant value be changed if this becomes an ARB extension?
No, it is not worth the confusion created by having two different
enumerant value for the same token.
3. Should additional mirroring functions be added to this extension and
perhaps rename it to ARB_texture_mirror. For example, include the two
mirror modes (MIRROR_CLAMP_ATI and MIRROR_CLAMP_TO_EDGE_ATI) provided
for in the GL_ATI_texture_mirror_once extension.
No, these extensions are not interdependent and inclusion of the
mirror once will likely hinder the adoption of this extension.
New Procedures and Functions
None
New Tokens
Accepted by the <param> parameter of TexParameteri and TexParameterf,
and by the <params> parameter of TexParameteriv and TexParameterfv, when
their <pname> parameter is TEXTURE_WRAP_S, TEXTURE_WRAP_T, or
TEXTURE_WRAP_R:
GL_MIRRORED_REPEAT_ARB 0x8370
Additions to Chapter 2 of the GL Specification (OpenGL Operation)
None.
Additions to Chapter 3 of the GL Specification (Rasterization)
Modify Table 3.19, editing only the following lines:
Name Type Legal Values
============== ======= ====================
TEXTURE_WRAP_S integer CLAMP, CLAMP_TO_EDGE, REPEAT,
CLAMP_TO_BORDER_ARB, MIRRORED_REPEAT_ARB
TEXTURE_WRAP_T integer CLAMP, CLAMP_TO_EDGE, REPEAT,
CLAMP_TO_BORDER_ARB, MIRRORED_REPEAT_ARB
TEXTURE_WRAP_R integer CLAMP, CLAMP_TO_EDGE, REPEAT,
CLAMP_TO_BORDER_ARB, MIRRORED_REPEAT_ARB
Add to end of Section 3.8.5 (Subsection "Texture Wrap Modes")
If TEXTURE_WRAP_S, TEXTURE_WRAP_T, or TEXTURE_WRAP_R is set to
MIRRORED_REPEAT_ARB, the s (or t or r) coordinate is converted to:
s - floor(s), if floor(s) is even, or
1 - (s - floor(s)), if floor(s) is odd.
The converted s (or t or r) coordinate is then clamped
as described for CLAMP_TO_EDGE texture coordinate clamping.
Additions to Chapter 4 of the GL Specification (Per-Fragment Operations
and the Framebuffer)
None
Additions to Chapter 5 of the GL Specification (Special Functions)
None
Additions to Chapter 6 of the GL Specification (State and State Requests)
None
Additions to Appendix F of the GL Specification (ARB Extensions)
None
Additions to the GLX Specification
None
GLX Protocol
None.
Errors
None
New State
Only the type information changes for these parameters:
Initial
Get Value Get Command Type Value Description Sec. Attrib
--------- ----------- ---- ------- ----------- ---- ------
TEXTURE_WRAP_S GetTexParameteriv n x Z5 REPEAT Texture Wrap Mode S 3.8 texture
TEXTURE_WRAP_T GetTexParameteriv n x Z5 REPEAT Texture Wrap Mode T 3.8 texture
TEXTURE_WRAP_R GetTexParameteriv n x Z5 REPEAT Texture Wrap Mode R 3.8 texture
New Implementation Dependent State
None
Revision History
01/09/20 bpoddar - Moved description for section 3.8.5 to the end
to avoid a forward reference
- Changed to using the old enumerant
- Minor typo/email address fixes
01/09/11 bpoddar - Updated for OpenGL 1.3 spec.
- Minor change to description of clamping.
01/03/22 brokensh Converted the IBM extension to a ARB extension
written against the latest specification.