• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    AMD_seamless_cubemap_per_texture
4
5Name Strings
6
7    GL_AMD_seamless_cubemap_per_texture
8
9Contributors
10
11    Pierre Boudier
12    Graham Sellers
13    Ahmet Oguz Akyuz
14
15Contact
16
17    Graham Sellers, AMD (graham.sellers 'at' amd.com)
18
19Status
20
21    In Progress.
22
23Version
24
25    Last Modified Date:         February 3, 2017
26    Author revision:            7
27
28Number
29
30    383
31
32Dependencies
33
34    OpenGL 1.1 is required.
35
36    ARB_texture_cube_map is required.
37
38    ARB_seamless_cube_map affects the definition of this extension.
39
40    This extension is written against the OpenGL 1.5 Specification.
41
42Overview
43
44    In unextended OpenGL, cube maps are treated as sets of six, independent
45    texture images. Once a face is selected from the set, it is treated exactly
46    as any other two-dimensional texture would be. When sampling linearly from
47    the texture, all of the individual texels that would be used to to create
48    the final, bilinear sample values are taken from the same cube face. The
49    normal, two-dimensional texture coordinate wrapping modes are honored.
50    This sometimes causes seams to appear in cube maps.
51
52    ARB_seamless_cube_map addresses this issue by providing a mechanism whereby
53    an implementation could take each of the taps of a bilinear sample from
54    a different face, spanning face boundaries and providing seamless filtering
55    from cube map textures. However, in ARB_seamless_cube_map, this feature was
56    exposed as a global state, affecting all bound cube map textures. It was not
57    possible to mix seamless and per-face cube map sampling modes during
58    multisampling. Furthermore, if an application included cube maps that were
59    meant to be sampled seamlessly and non-seamlessly, it would have to track
60    this state and enable or disable seamless cube map sampling as needed.
61
62    This extension addresses this issue and provides an orthogonal method for
63    allowing an implementation to provide a per-texture setting for enabling
64    seamless sampling from cube maps.
65
66IP Status
67
68    None.
69
70New Procedures and Functions
71
72    None.
73
74New Tokens
75
76    Accepted by the <pname> parameter of TexParameterf, TexParameteri,
77    TexParameterfv, TexParameteriv, GetTexParameterfv, and GetTexParameteriv:
78
79    TEXTURE_CUBE_MAP_SEAMLESS                   0x884F (Previously defined in
80                                                        ARB_seamless_cubemap)
81
82Additions to Chapter 2 of the 1.5 Specification (OpenGL Operation)
83
84    None.
85
86Additions to Chapter 3 of the 1.5 Specification (Rasterization)
87
88    Section 3.8.4, Texture Parameters, p. 144, append table 3.19 with the
89    following:
90
91        Name                               Type     Legal Values
92        ------------------------------     -----    --------------------
93        TEXTURE_CUBE_MAP_SEAMLESS          boolean  FALSE,
94                                                    TRUE
95
96    Section 3.8.4, Texture Parameters, p. 143, append the last paragraph with:
97
98    "The TEXTURE_CUBE_MAP_SEAMLESS parameter is specific to cube maps
99     and may be used to control the way that the GL handles sampling from
100     coordinates that lie outside the determined cube map face (see section
101     3.8.6)."
102
103    Section 3.8.6, Cube Map Texture Selection, p. 145, change the last
104    paragraph from
105
106    "This new ( s t ) is used to find a texture value in the determined face's
107     two-dimensional texture image using the rules given in sections 3.8.7
108     through 3.8.9."
109
110    to:
111
112     "If TEXTURE_CUBE_MAP_SEAMLESS is disabled globally and the value of the
113      the texture's TEXTURE_CUBE_MAP_SEAMLESS parameter is FALSE, the new
114      ( s t ) is used to find a texture value in the determined face's
115      two-dimensional image using the rules given in sections 3.8.7 through
116      3.8.9. If TEXTURE_CUBE_MAP_SEAMLESS is emabled globally or the value
117      of the texture's TEXTURE_CUBE_MAP_SEAMLESS parameter is TRUE, seamless
118      cube map sampling is enabled, and texels are read from adjacent faces as
119      described in the ARB_seamless_cube_map extension."
120
121Additions to Chapter 4 of the 1.5 Specification (Per-Fragment Operations
122and the Frame Buffer)
123
124    None.
125
126Additions to Chapter 5 of the 1.5 Specification (Special Functions)
127
128    None.
129
130Additions to Chapter 6 of the 1.5 Specification (State and State Requests)
131
132    Section 6.1.3, Enumerated Queries, p. 216, modify the  first paragraph
133    on page 216 to read:
134
135    "... For GetTexParameter, value must be either TEXTURE_RESIDENT or one
136     of the symbolic values in table 3.19. The TEXTURE_CUBE_MAP_SEAMLESS
137     value may only be used when target is TEXTURE_CUBE_MAP. The lod argument
138     to GetTexLevelParameter ..."
139
140Additions to the GLX Specification
141
142    None.
143
144Errors
145
146    INVALID_ENUM is generated by TexParameter if <pname> is
147    TEXTURE_CUBE_MAP_SEAMLESS and <target> is not TEXTURE_CUBE_MAP.
148
149    INVALID_ENUM is generated by TexParameter if <target> is TEXTURE_CUBE_MAP,
150    <pname> is TEXTURE_CUBE_MAP_SEAMLESS and <value> is not either TRUE
151    or FALSE.
152
153    INVALID_ENUM is generated by GetTexParameter if <pname> is
154    TEXTURE_CUBE_MAP_SEAMLESS and <target> is not TEXTURE_CUBE_MAP.
155
156Dependencies on ARB_seamless_cube_map
157
158    If ARB_seamless_cube_map is not supported, the value of the
159    TEXTURE_CUBE_MAP_SEAMLESS token is still used by this extension.
160    However, seamless cubemap filtering can only be enabled or disabled on a
161    per-texture basis as glEnable and glDisable will not accept
162    TEXTURE_CUBE_MAP_SEAMLESS. Even if ARB_seamless_cube_map is not
163    supported, the behavior of seamless cube map sampling is as described in
164    that extension. The logic to enable seamless filtering will behave as if
165    TEXTURE_CUBE_MAP_SEAMLESS were disabled (the default state).
166
167New State
168
169    In table 6.16, Texture Objects, p. 242, add the following:
170
171    Get Value                   Type    Get Command           Init Val      Description                  Sec.   Attribute
172    -------------------------   ------  --------------------  --------      --------------------------   ------ ---------
173    TEXTURE_CUBE_MAP_SEAMLESS   n x B   GetTexParameter[if]v  FALSE         Seamless cubemap sampling    3.8.6  texture
174                                                                                  is enabled.
175
176New Implementation Dependent State
177
178    None.
179
180Issues
181
182    1) How does this extension affect ARB_seamless_cube_map? Which takes
183       priority? Explain, in plain English, how seamless filtering gets enabled.
184
185       RESOLVED: These two extensions are orthogonal and neither requires the
186       other to function. Seamless filtering is enabled for a cube map texture
187       either when TEXTURE_CUBE_MAP_SEAMLESS is enabled globally or when the
188       value of the individual texture's TEXTURE_CUBE_MAP_SEAMLESS parameter
189       is TRUE. The default for both extensions is to leave cube map sampling as
190       described in unextended OpenGL. Thus, an application may use either
191       extension and its behavior will be the same, regardless of the presence
192       of support for or use of the other.
193
194Revision History
195
196    Rev.    Date    Author    Changes
197    ----  --------  --------  -----------------------------------------
198     7    02/03/17  Jon Leech Remove ARB suffix from TEXTURE_CUBE_MAP_SEAMLESS
199                              (public bug 337).
200     6    08/18/09  gsellers  Renamed from AMD_texture_cube_face_select to
201                              AMD_seamless_cubemap_per_texture to better follow
202                              ARB version.
203                              Use ARB token, GL_TRUE and GL_FALSE rather than
204                              SAME_FACE and NEXT_FACE.
205                              Change type of texture parameter to boolean.
206                              Change wording of resolution to issue 1 to reflect
207                              the new token names.
208     5    05/08/09  gsellers  Large rewrite after splitting global and
209                              per-texture support into two extensions.
210     4    05/05/09  gsellers  Change token names for consistency. Include
211                              interaction with EXT_texture_filter_anisotropic.
212     3    04/09/09  gsellers  Fix 'selected' language. Suggest behavior for
213                              cases where ( s, t ) lies directly at a cube map
214                              corner
215     2    04/07/09  gsellers  Minor updates
216     1    04/06/09  gsellers  Initial draft
217