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 parameter of TexParameteri and TexParameterf, and by the parameter of TexParameteriv and TexParameterfv, when their 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.