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