15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ARB_seamless_cubemap_per_texture
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ARB_seamless_cubemap_per_texture
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Pierre Boudier
125bd8deadSopenharmony_ci    Graham Sellers
135bd8deadSopenharmony_ci    Ahmet Oguz Akyuz
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ciContact
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ci    Graham Sellers, AMD (graham.sellers 'at' amd.com)
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciNotice
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Copyright (c) 2013 The Khronos Group Inc. Copyright terms at
225bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ciSpecification Update Policy
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
275bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL Working Group. For
285bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
295bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
305bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
315bd8deadSopenharmony_ci    described in more detail at
325bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ciStatus
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    Complete. Approved by the ARB on June 3, 2013.
375bd8deadSopenharmony_ci    Ratified by the Khronos Board of Promoters on July 19, 2013.
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ciVersion
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    Last Modified Date:         15/05/2013
425bd8deadSopenharmony_ci    Author revision:            1
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ciNumber
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ci    ARB Extension #155
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ciDependencies
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ci    OpenGL 3.2 is required.
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    This extension is written against the OpenGL 4.3 (Core Profile)
535bd8deadSopenharmony_ci    Specification.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ciOverview
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    In unextended OpenGL, cube maps are treated as sets of six, independent
585bd8deadSopenharmony_ci    texture images. Once a face is selected from the set, it is treated exactly
595bd8deadSopenharmony_ci    as any other two-dimensional texture would be. When sampling linearly from
605bd8deadSopenharmony_ci    the texture, all of the individual texels that would be used to to create
615bd8deadSopenharmony_ci    the final, bilinear sample values are taken from the same cube face. The
625bd8deadSopenharmony_ci    normal, two-dimensional texture coordinate wrapping modes are honored.
635bd8deadSopenharmony_ci    This sometimes causes seams to appear in cube maps.
645bd8deadSopenharmony_ci
655bd8deadSopenharmony_ci    ARB_seamless_cube_map (and subsequently, OpenGL 3.2) addresses this issue
665bd8deadSopenharmony_ci    by providing a mechanism whereby an implementation could take each of the
675bd8deadSopenharmony_ci    taps of a bilinear sample from a different face, spanning face boundaries
685bd8deadSopenharmony_ci    and providing seamless filtering from cube map textures. However, in
695bd8deadSopenharmony_ci    ARB_seamless_cube_map, this feature was exposed as a global state,
705bd8deadSopenharmony_ci    affecting all bound cube map textures. It was not possible to mix seamless
715bd8deadSopenharmony_ci    and per-face cube map sampling modes during sampling. Furthermore, if an
725bd8deadSopenharmony_ci    application included cube maps that were meant to be sampled seamlessly
735bd8deadSopenharmony_ci    and non-seamlessly, it would have to track this state and enable or disable
745bd8deadSopenharmony_ci    seamless cube map sampling as needed.
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    This extension addresses this issue and provides an orthogonal method for
775bd8deadSopenharmony_ci    allowing an implementation to provide a per-texture setting for enabling
785bd8deadSopenharmony_ci    seamless sampling from cube maps.
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ciIP Status
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci    None.
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ciNew Procedures and Functions
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci    None.
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ciNew Tokens
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci    Accepted by the <pname> parameter of TexParameter{if},
915bd8deadSopenharmony_ci    TexParameter{if}v, GetTexParameter{if}v, SamplerParameter{if},
925bd8deadSopenharmony_ci    SamplerParameter{if}v, and GetSamplerParameter{if}v:
935bd8deadSopenharmony_ci
945bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_SEAMLESS                   0x884F
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ciAdditions to Chapter 8 of the OpenGL Core Profile Specification (Textures and
975bd8deadSopenharmony_ciSamplers)
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci    Modify the first paragraph of Section 8.13.1, "Seamless Cubemap Filtering"
1005bd8deadSopenharmony_ci    as follows:
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci        Seamless cubemap filtering is enabled or disabled globally by calling
1035bd8deadSopenharmony_ci    Enable or Disable, respectively, with the symbolic constant
1045bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_SEAMLESS. It may also be enabled for a specific texture
1055bd8deadSopenharmony_ci    unit by setting the TEXTURE_CUBE_MAP_SEAMLESS sampler parameter to TRUE
1065bd8deadSopenharmony_ci    for the sampler object bound to that texture unit (or for the texture object
1075bd8deadSopenharmony_ci    itself, if no sampler object is bound). The default for both the global
1085bd8deadSopenharmony_ci    and per-sampler seamless filtering state is FALSE. The value of
1095bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_SEAMLESS is ignored for textures that are note cube maps
1105bd8deadSopenharmony_ci    (TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY).
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci    Add one bit per sampler object to represent the seamless cubemap filtering
1135bd8deadSopenharmony_ci    state to the required state.
1145bd8deadSopenharmony_ci
1155bd8deadSopenharmony_ciAdditions to the GLX Specification
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ci    None.
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ciErrors
1205bd8deadSopenharmony_ci
1215bd8deadSopenharmony_ci    None.
1225bd8deadSopenharmony_ci
1235bd8deadSopenharmony_ciNew State
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci    Append the following to Table 23.14, Textures (state per texture object):
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci    Get Value                         Type    Get Command               Initial Value   Description                  Sec.   Attribute
1285bd8deadSopenharmony_ci    ------------------------------    ------  --------------------      --------        --------------------------   ------ ---------
1295bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_SEAMLESS         n x B   GetTexParameter[if]v      FALSE           Seamless cubemap sampling    8.13.1  texture
1305bd8deadSopenharmony_ci                                                                                        is enabled.
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    Append the following to Table 23.18, Textures (State per Sampler Object):
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci    Get Value                         Type    Get Command               Initial Value   Description                  Sec.
1355bd8deadSopenharmony_ci    ------------------------------    ------  --------------------      --------        --------------------------   ------
1365bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_SEAMLESS         n x B   GetSamplerParameter[if]v  FALSE           Seamless cubemap sampling    8.13.1
1375bd8deadSopenharmony_ci                                                                                        is enabled.
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ciNew Implementation Dependent State
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci    None.
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ciIssues
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    1) How does this extension interact with the existing global seamless
1465bd8deadSopenharmony_ci       cubemap feature? Explain, in plain English, how seamless filtering gets
1475bd8deadSopenharmony_ci       enabled.
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci       RESOLVED: These two features are orthogonal and neither requires the
1505bd8deadSopenharmony_ci       other to function. Seamless filtering is enabled for a cube map texture
1515bd8deadSopenharmony_ci       either when TEXTURE_CUBE_MAP_SEAMLESS is enabled globally or when the
1525bd8deadSopenharmony_ci       value of the individual samper's (or texture's) TEXTURE_CUBE_MAP_SEAMLESS
1535bd8deadSopenharmony_ci       parameter is TRUE. The default for both extensions is to leave cube map
1545bd8deadSopenharmony_ci       sampling as described in unextended OpenGL. Thus, an application may use
1555bd8deadSopenharmony_ci       either extension and its behavior will be the same, regardless of the
1565bd8deadSopenharmony_ci       presence of support for or use of the other.
1575bd8deadSopenharmony_ci
1585bd8deadSopenharmony_ci    2) The original AMD extension disallowed TEXTURE_CUBE_MAP_SEAMLESS with
1595bd8deadSopenharmony_ci       textures that aren't CUBE_MAP{_ARRAY}. How does this work with sampler
1605bd8deadSopenharmony_ci       objects that don't have texture types?
1615bd8deadSopenharmony_ci
1625bd8deadSopenharmony_ci       RESOLVED: Removed the error. State is now stored but ignored for non-
1635bd8deadSopenharmony_ci       cube map textures.
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ciRevision History
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci    Rev.    Date        Author    Changes
1685bd8deadSopenharmony_ci    ----  --------      --------  -----------------------------------------
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci     1    15/05/2013    gsellers  Create ARB version from AMD version. Update
1715bd8deadSopenharmony_ci                                  against OpenGL 4.3 core profile
1725bd8deadSopenharmony_ci                                  specification. Changes from AMD version
1735bd8deadSopenharmony_ci                                  include:
1745bd8deadSopenharmony_ci                                    * TEXTURE_CUBE_MAP_SEAMLESS accepted by
1755bd8deadSopenharmony_ci                                      SamplerParameter*
1765bd8deadSopenharmony_ci                                    * TEXTURE_CUBE_MAP_SEAMLESS now legal for
1775bd8deadSopenharmony_ci                                      any texture, but is ignored for
1785bd8deadSopenharmony_ci                                      non-cube maps. This is required because
1795bd8deadSopenharmony_ci                                      samplers don't have a target.
180