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