blob: da5f1710e61eb531b04c84f923a04eee03e2e74c [file] [log] [blame]
Name
SGIX_texture_coordinate_clamp
Name Strings
GL_SGIX_texture_coordinate_clamp
Version
$Date: 1998/03/10 06:23:31 $ $Revision: 1.2 $
Number
235
Dependencies
EXT_texture3D affects the definition of this extension
Overview
This extension provides a mechanism to specify the maximum texture coordinate
clamping values. Standard OpenGL always clamps the upper bound to 1.0 when
the wrap mode is set to CLAMP. This mechanism can be used to guarantee
that non-existent texel data will not be accessed when the texture image has
dimensions that are not a power of 2.
Issues
* What is the effect of wrap modes?
-- This mode is only effective when the wrap mode is set to clamp
* Are border modes supported?
-- Border modes are independent of texture coordinate clamping. Borders
live outside the 0.0 to 1.0 texture coordinate range. However, a
particular filtering method may access texels beyond the clamped
values. It is the users responsibility to ensure that adequate
texels are defined or to set the border mode to CLAMP_TO_EDGE_SGIS
to prevent access outside this range. The texel value used past
the clamped edge is otherwise undefined.
* Can defining the clamp values before the texture is defined be used to
allocate less texture memory for the texture?
-- Maybe. This is an implementation issue that the hardware may or may
not take advantage of. However, the clamp value may be increased
later to download data into a larger region.
* Does subloading a texture image to a region outside the clamped area
preserve the contents in the outside area?
-- Yes. Downloading texels outside the clamped region should make the
data be preserved.
* Only the upper limit of the clamp region may be specified. Might
other more generic needs be met by allowing both min and max to be
defined? For example, you could define a large texture of smaller
"tiles" that could be selected for various surfaces.
-- Intel has a pending spec to do texture clipping. This is somewhat
similar to what is mentioned above. This extension defines a
mechanism to clamp and also provides a hint to the size of the
texture to be allocated.
* Since wrapped textures aren't supported, the only real functionality
this appears to add is when the geometry (s,t,r) ranges are not
aligned with or matching the (x,y,z) ranges. For example, mapping
video to a sphere. Is this correct? Otherwise, one could just define
a rectangle with the right (s,t) ranges.
-- Yes. However that does not provide OpenGL any hint as to the size
of texture that actually needs to be allocated.
New Procedures and Functions
None
New Tokens
Accepted by the <pname> parameter of TexParameteri, TexParameterf,
TexParameteriv, TexParameterfv, GetTexParameteriv, and GetTexParameterfv:
TEXTURE_MAX_CLAMP_S_SGIX 0x8369
TEXTURE_MAX_CLAMP_T_SGIX 0x836A
TEXTURE_MAX_CLAMP_R_SGIX 0x836B
Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.1 Specification (Rasterization)
GL Specification Table 3.9 is updated as follows:
Name Type Legal Values
---- ---- ------------
TEXTURE_WRAP_S integer CLAMP, REPEAT
TEXTURE_WRAP_T integer CLAMP, REPEAT
TEXTURE_WRAP_R_EXT integer CLAMP, REPEAT
TEXTURE_MIN_FILTER integer NEAREST, LINEAR,
NEAREST_MIPMAP_NEAREST,
NEAREST_MIPMAP_LINEAR,
LINEAR_MIPMAP_NEAREST,
LINEAR_MIPMAP_LINEAR,
FILTER4_SGIS,
LINEAR_CLIPMAP_LINEAR_SGIX,
TEXTURE_MAG_FILTER integer NEAREST, LINEAR,
FILTER4_SGIS,
LINEAR_DETAIL_SGIS,
LINEAR_DETAIL_ALPHA_SGIS,
LINEAR_DETAIL_COLOR_SGIS,
LINEAR_SHARPEN_SGIS,
LINEAR_SHARPEN_ALPHA_SGIS,
LINEAR_SHARPEN_COLOR_SGIS
TEXTURE_BORDER_COLOR 4 floats any 4 values in [0,1]
DETAIL_TEXTURE_LEVEL_SGIS integer any non-negative integer
DETAIL_TEXTURE_MODE_SGIS integer ADD, MODULATE
TEXTURE_MIN_LOD_SGIS float any value
TEXTURE_MAX_LOD_SGIS float any value
TEXTURE_BASE_LEVEL_SGIS integer any non-negative integer
TEXTURE_MAX_LEVEL_SGIS integer any non-negative integer
GENERATE_MIPMAP_SGIS boolean TRUE or FALSE
TEXTURE_CLIPMAP_FRAME_SGIX float any non-negative value
TEXTURE_CLIPMAP_CENTER_SGIX 2 integers any 2 non-negative integers
TEXTURE_CLIPMAP_OFFSET_SGIX 2 integers any 2 non-negative integers
TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 3 integers any 3 non-negative integer
TEXTURE_LOD_BIAS_S_SGIX float any value
TEXTURE_LOD_BIAS_T_SGIX float any value
TEXTURE_LOD_BIAS_R_SGIX float any value
TEXTURE_MIPMAP_ANISOTROPY int any value >= 1
TEXTURE_MAX_CLAMP_S_SGIX float any value in [0.0, 1.0]
TEXTURE_MAX_CLAMP_T_SGIX float any value in [0.0, 1.0]
TEXTURE_MAX_CLAMP_R_SGIX float any value in [0.0, 1.0]
Table 3.9: Texture parameters and their values.
Texture Minification
--------------------
Let s(x,y) be the function that associates an s texture coordinate with each
set of window coordinates (x,y) that lie within a primitive; define t(x, y)
analogously. Let
/ 2^n.TEXTURE_MAX_CLAMP_S_SGIX if (TEXTURE_WRAP_S == CLAMP and
u(x,y) = ( s(x,y) > TEXTURE_MAX_CLAMP_S_SGIX)
\ 2^n.s(x,y), otherwise
/ 2^n.TEXTURE_MAX_CLAMP_T_SGIX if (TEXTURE_WRAP_T == CLAMP and
v(x,y) = ( t(x,y) > TEXTURE_MAX_CLAMP_T_SGIX)
\ 2^n.t(x,y), otherwise
and
/ 2^n.TEXTURE_MAX_CLAMP_R_SGIX if (TEXTURE_WRAP_R == CLAMP and
w(x,y) = ( r(x,y) > TEXTURE_MAX_CLAMP_R_SGIX)
\ 2^n.r(x,y), otherwise
(For a one-dimensional texture, define v(x,y) = 0, w(x,y) = 0)
Query support
-------------
In the initial state the values assigned to TEXTURE_MAX_CLAMP_S_SGIX,
TEXTURE_MAX_CLAMP_T_SGIX and TEXTURE_MAX_CLAMP_R_SGIX are 1.0, 1.0, 1.0
respectively.
Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
and the Frame Buffer)
None
Additions to Chapter 5 of the 1.1 Specification (Special Functions)
None
Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
None
Additions to the GLX Specification
None
Dependencies on EXT_texture3D
If EXT_texture3D is not implemented, then the reference to clamping of 3D
texture coordinates in this file are invalid, and references to
TEXTURE_MAX_CLAMP_R_SGIX should be ignored.
Errors
None
New State
Initial
Get Value Get Command Type Value Attrib
--------- ----------- ---- ------- ------
TEXTURE_MAX_CLAMP_S_SGIX GetTexParameteriv R 1.0 texture
TEXTURE_MAX_CLAMP_T_SGIX GetTexParameteriv R 1.0 texture
TEXTURE_MAX_CLAMP_R_SGIX GetTexParameteriv R 1.0 texture
New Implementation Dependent State
None