15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ARB_seamless_cube_map
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ARB_seamless_cube_map
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Bill Licea-Kane, AMD
125bd8deadSopenharmony_ci    Bruce Merry, ARM
135bd8deadSopenharmony_ci    Graham Sellers, AMD
145bd8deadSopenharmony_ci    Ian Romanick, Intel
155bd8deadSopenharmony_ci    Jeff Bolz, NVIDIA
165bd8deadSopenharmony_ci    Pat Brown, NVIDIA
175bd8deadSopenharmony_ci    Pierre Boudier, AMD
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciContact
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Graham Sellers, AMD (graham.sellers 'at' amd.com)
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciNotice
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    Copyright (c) 2009-2013 The Khronos Group Inc. Copyright terms at
265bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ciSpecification Update Policy
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
315bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL Working Group. For
325bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
335bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
345bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
355bd8deadSopenharmony_ci    described in more detail at
365bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ciStatus
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ci    Complete. Approved by the ARB on July 3, 2009.
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ciVersion
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci    Last Modified Date:         07/21/2009
455bd8deadSopenharmony_ci    Author revision:            4
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ciNumber
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ci    ARB Extension #65
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ciDependencies
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    OpenGL 1.1 is required.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    ARB_texture_cube_map is required.
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    EXT_texture_filter_anisotropic affects the definition of this extension.
585bd8deadSopenharmony_ci
595bd8deadSopenharmony_ci    This extension is written against the OpenGL 3.1 Specification.
605bd8deadSopenharmony_ci
615bd8deadSopenharmony_ciOverview
625bd8deadSopenharmony_ci
635bd8deadSopenharmony_ci    When sampling from cube map textures, a three-dimensional texture
645bd8deadSopenharmony_ci    coordinate is used to select one of the cube map faces and generate
655bd8deadSopenharmony_ci    a two dimensional texture coordinate ( s t ), at which a texel is
665bd8deadSopenharmony_ci    sampled from the determined face of the cube map texture. Each face
675bd8deadSopenharmony_ci    of the texture is treated as an independent two-dimensional texture,
685bd8deadSopenharmony_ci    and the generated ( s t ) coordinate is subjected to the same
695bd8deadSopenharmony_ci    clamping and wrapping rules as for any other two dimensional texture
705bd8deadSopenharmony_ci    fetch.
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci    Although it is unlikely that the generated ( s t ) coordinate lies
735bd8deadSopenharmony_ci    significantly outside the determined cube map face, it is often the
745bd8deadSopenharmony_ci    case that the locations of the individual elements required during a
755bd8deadSopenharmony_ci    linear sampling do not lie within the determined face, and their
765bd8deadSopenharmony_ci    coordinates will therefore be modified by the selected clamping and
775bd8deadSopenharmony_ci    wrapping rules. This often has the effect of producing seams or
785bd8deadSopenharmony_ci    other discontinuities in the sampled texture.
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    This extension allows implementations to take samples from adjacent
815bd8deadSopenharmony_ci    cube map faces, providing the ability to create seamless cube maps.
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ciIP Status
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci    None.
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ciNew Procedures and Functions
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci    None.
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ciNew Tokens
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable and IsEnabled,
945bd8deadSopenharmony_ci    and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv
955bd8deadSopenharmony_ci    and GetDoublev:
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_SEAMLESS                   0x884F
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ciAdditions to Chapter 3 of the 3.1 Specification (Rasterization)
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci    Section 3.8.7, Cube Map Texture Selection, p. 143, change the last
1035bd8deadSopenharmony_ci    paragraph from
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci    "This new ( s t ) is used to find a texture value in the determined
1065bd8deadSopenharmony_ci     face's two-dimensional texture image using the rules given in
1075bd8deadSopenharmony_ci     sections 3.8.7 through 3.8.9."
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    to:
1105bd8deadSopenharmony_ci
1115bd8deadSopenharmony_ci    Seamless Cube Map Filtering
1125bd8deadSopenharmony_ci    ---------------------------
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci    Seamless cube map filtering is enabled or disabled by calling Enable
1155bd8deadSopenharmony_ci    or Disable, respectively, with the symbolic constant
1165bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_SEAMLESS.
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    When seamless cube map filtering is disabled, the new (s t) is used
1195bd8deadSopenharmony_ci    to find a texture value in the determined face's two-dimensional
1205bd8deadSopenharmony_ci    image using the rules given in sections 3.8.9 through 3.8.10.
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    When seamless cube map filtering is enabled, the rules for texel
1235bd8deadSopenharmony_ci    selection in sections 3.8.9 through 3.8.10 are modified so that
1245bd8deadSopenharmony_ci    texture wrap modes are ignored. Instead,
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci    * If NEAREST filtering is done within a miplevel, always apply wrap
1275bd8deadSopenharmony_ci      mode CLAMP_TO_EDGE.
1285bd8deadSopenharmony_ci    * If LINEAR filtering is done within a miplevel, always apply wrap mode
1295bd8deadSopenharmony_ci      CLAMP_TO_BORDER. Then,
1305bd8deadSopenharmony_ci      o If a texture sample location would lie in the texture border in
1315bd8deadSopenharmony_ci        either u or v, instead select the corresponding texel from the
1325bd8deadSopenharmony_ci        appropriate neighboring face.
1335bd8deadSopenharmony_ci      o If a texture sample location would lie in the texture border in
1345bd8deadSopenharmony_ci        both u and v (in one of the corners of the cube), there is no
1355bd8deadSopenharmony_ci        unique neighboring face from which to extract one texel. The
1365bd8deadSopenharmony_ci        recommended method is to average the values of the three
1375bd8deadSopenharmony_ci        available samples. However, implementations are free to
1385bd8deadSopenharmony_ci        construct this fourth texel in another way, so long as, when the
1395bd8deadSopenharmony_ci        three available samples have the same value, this texel also has
1405bd8deadSopenharmony_ci        that value.
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci    The required state is one bit indicating whether seamless cube map
1435bd8deadSopenharmony_ci    filtering is enabled or disabled. Initially, it is disabled.
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    Add final paragraphs to Section 3.8.7
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci    "When TEXTURE_MAX_ANISOTROPY_EXT is greater than 1.0, an
1485bd8deadSopenharmony_ci     implementation may sample from the texture at multiple locations in
1495bd8deadSopenharmony_ci     order to produce a filtered texel value. In this case, some of the
1505bd8deadSopenharmony_ci     required samples may lie outside the determined cube map face. If
1515bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_SEAMLESS is enabled, it is implementation defined
1525bd8deadSopenharmony_ci     as to whether these samples are taken from the determined face, or
1535bd8deadSopenharmony_ci     from the appropriate adjacent cube map face."
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ciErrors
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    None.
1585bd8deadSopenharmony_ci
1595bd8deadSopenharmony_ciDependencies on EXT_texture_filter_anisotropic
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ci    If EXT_texture_filter_anisotropic is not supported, remove the
1625bd8deadSopenharmony_ci    final paragraph added to Section 3.8.6 which references
1635bd8deadSopenharmony_ci    TEXTURE_MAX_ANISOTROPY_EXT.
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ciNew State
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci    In table 6.42, Miscellaneous, p. 279, add the following:
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci    Get Value                     Type    Get Command           Init Val      Description                  Sec.   Attribute
1705bd8deadSopenharmony_ci    ---------------------------   ------  --------------------  --------      --------------------------   ------ ---------
1715bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_SEAMLESS       B     IsEnabled             FALSE         Seamless cube map filtering  3.8.6  -
1725bd8deadSopenharmony_ci
1735bd8deadSopenharmony_ciNew Implementation Dependent State
1745bd8deadSopenharmony_ci
1755bd8deadSopenharmony_ci    None.
1765bd8deadSopenharmony_ci
1775bd8deadSopenharmony_ciIssues
1785bd8deadSopenharmony_ci
1795bd8deadSopenharmony_ci    1) Should this be a new wrap mode, or a separate state?
1805bd8deadSopenharmony_ci
1815bd8deadSopenharmony_ci       RESOLVED: It cannot be a normal wrap mode because it does not
1825bd8deadSopenharmony_ci       apply per dimension, but rather to a texture as a whole.
1835bd8deadSopenharmony_ci       Therefore, it is a separate state item.
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ci    2) What is the interaction with anisotropic filtering as described
1865bd8deadSopenharmony_ci       in EXT_texture_filter_anisotropic?
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ci       RESOLVED: EXT_texture_filter_anisotropic leaves the
1895bd8deadSopenharmony_ci       implementation of anisotropic filtering implementation defined.
1905bd8deadSopenharmony_ci       Therefore, this extension does the same.
1915bd8deadSopenharmony_ci
1925bd8deadSopenharmony_ci    3) Should this be per-texture, or a global state?
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ci       RESOLVED: While in some cases it may be desirable to mix seamless
1955bd8deadSopenharmony_ci       and non-seamless cube map texture sampling, it is sufficient to
1965bd8deadSopenharmony_ci       leave this spec defining a global state and provide per-texture
1975bd8deadSopenharmony_ci       support in another extension.
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ciRevision History
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ci    Rev.    Date    Author    Changes
2025bd8deadSopenharmony_ci    ----  --------  --------  -----------------------------------------
2035bd8deadSopenharmony_ci     4    07/21/09  Jon Leech Reformat to 80 columns and update
2045bd8deadSopenharmony_ci                              ambiguous sample location to match
2055bd8deadSopenharmony_ci                              the 3.2 spec (bug 5357).
2065bd8deadSopenharmony_ci
2075bd8deadSopenharmony_ci     3    07/20/09  Jon Leech Assign enum value and remove _ARB suffix.
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ci     2    07/01/09  wwlk      Updated per bug 5292.
2105bd8deadSopenharmony_ci                              Re-written against the OpenGL 3.1 specification.
2115bd8deadSopenharmony_ci
2125bd8deadSopenharmony_ci     1    05/07/09  gsellers  Initial draft based on
2135bd8deadSopenharmony_ci                              AMD_texture_cube_face_select
214