| 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 |