| Name |
| |
| SGIX_texture_lod_bias |
| |
| Name Strings |
| |
| GL_SGIX_texture_lod_bias |
| |
| Version |
| |
| $Date: 1996/07/09 05:27:21 $ $Revision: 1.3 $ |
| |
| Number |
| |
| 84 |
| |
| Dependencies |
| |
| EXT_texture is required |
| EXT_texture3D affects the definition of this extension |
| EXT_texture_object affects the definition of this extension |
| |
| Overview |
| |
| This extension modifies the calculation of texture level of detail |
| parameter LOD, which is represented by the Greek character lambda |
| in the GL Specification. The LOD equation assumes that a 2^n x 2^m x 2^l |
| texture is band limited at 2^(n-1), 2^(m-1), 2^(l-1). Often a texture is |
| oversampled or filtered such that the texture is band limited at lower |
| frequencies in one or more dimensions. The result is that texture-mapped |
| primitives appear excessively blurry. This extension provides biases |
| for n, m, and l in the LOD calculation to to compensate for under or over |
| sampled texture images. Mipmapped textures can be made to appear sharper or |
| blurrier by supplying a negative or positive bias respectively. |
| |
| Examples of textures which can benefit from this LOD control include |
| video-capture images which are filtered differently horizontally and |
| vertically; a texture which appears blurry because it is mapped with |
| a nonuniform scale, such as a road texture which is repeated hundreds of |
| times in one dimension and only once in the other; and textures which |
| had to be magnified to a power-of-two for mipmapping. |
| |
| Issues |
| |
| * Should "bias" be changed to "offset"? |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <pname> parameter of TexParameteri, TexParameterf, |
| TexParameteriv, TexParameterfv, GetTexParameteriv, and GetTexParameterfv: |
| |
| TEXTURE_LOD_BIAS_S_SGIX |
| TEXTURE_LOD_BIAS_T_SGIX |
| TEXTURE_LOD_BIAS_R_SGIX |
| |
| Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 1.0 Specification (Rasterization) |
| |
| GL Specification Table 3.7 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 |
| 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 |
| TEXTURE_LOD_BIAS_S_SGIX float any value |
| TEXTURE_LOD_BIAS_T_SGIX float any value |
| TEXTURE_LOD_BIAS_R_SGIX float any value |
| |
| Table 3.7: Texture parameters and their values. |
| |
| Level of Detail Bias |
| ------------------------ |
| |
| This extensions redefines the equations 3.8 and 3.9 for P in Section 3.8.1 |
| (Texture Minification) of the GL Specification as follows: |
| |
| P = max { sqrt((dlodu/dx)^2 + (dlodv/dx)^2 + (dlodw/dx)^2), |
| sqrt((dlodu/dy)^2 + (dlodv/dy)^2 + (dlodw/dy)^2) } (3.8) |
| |
| where |
| dlodu/dx = 2^TEXTURE_LOD_BIAS_S_SGIX * du/dx |
| dlodv/dx = 2^TEXTURE_LOD_BIAS_T_SGIX * dv/dx |
| dlodw/dx = 2^TEXTURE_LOD_BIAS_R_SGIX * dw/dx |
| dlodu/dy = 2^TEXTURE_LOD_BIAS_S_SGIX * du/dy |
| dlodv/dy = 2^TEXTURE_LOD_BIAS_T_SGIX * dv/dy |
| dlodw/dy = 2^TEXTURE_LOD_BIAS_R_SGIX * dw/dy |
| |
| For a line the equation is redefined as: |
| |
| P = sqrt((dlodu/dx * deltaX + dlodu/dy * deltaY)^2 + |
| (dlodv/dx * deltaX + dlodv/dy * deltaY)^2 + |
| (dlodw/dx * deltaX + dlodw/dy * deltaY)^2) / l (3.9) |
| |
| The conditions for f(x,y) in section 3.8.1 are similarly changed: |
| |
| 1. f(x,y) is continuous and monotonically increasing in each of |dlodu/dx|, |
| |dlodu/dy|, |dlodv/dx|, |dlodv/dy|, |dlodw/dx|, and |dlodw/dy|, |
| |
| 2. Let |
| Mu = max {|dlodu/dx|, |dlodu/dy|}, Mv = max {|dlodv/dx|, |dlodv/dy|}, |
| and Mw = max {|dlodw/dx|, |dlodw/dy|}. |
| |
| Then max{Mu,Mv,Mw} <= f(x,y) < Mu + Mv + Mw. |
| |
| By default TEXTURE_LOD_BIAS_S_SGIX, TEXTURE_LOD_BIAS_T_SGIX, and |
| TEXTURE_LOD_BIAS_R_SGIX are 0, so they do not interfere with the normal |
| operation of texture mapping. These values are respecified for a specific |
| texture by calling TexParameteri, TexParemeterf, TexParameteriv, or |
| TexParameterfv with <target> set to TEXTURE_1D, TEXTURE_2D, or |
| TEXTURE_3D_EXT, <pname> set to one of the LOD Bias names, |
| and <param> set to (or <params> pointing to) the new value. |
| |
| Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations |
| and the Frame Buffer) |
| |
| None |
| |
| Additions to Chapter 5 of the 1.0 Specification (Special Functions) |
| |
| None |
| |
| Additions to Chapter 6 of the 1.0 Specification (State and State Requests) |
| |
| None |
| |
| Additions to the GLX Specification |
| |
| None |
| |
| Dependencies on EXT_texture |
| |
| EXT_texture is required. |
| |
| Dependencies on EXT_texture3D |
| |
| If EXT_texture3D is not supported, references to 3D texture mapping and |
| to TEXTURE_3D_EXT in this document are invalid and should be ignored. |
| |
| Dependencies on EXT_texture_object |
| |
| If EXT_texture_object is implemented, the state values named |
| |
| TEXTURE_LOD_BIAS_S_SGIX float any value |
| TEXTURE_LOD_BIAS_T_SGIX float any value |
| TEXTURE_LOD_BIAS_R_SGIX float any value |
| |
| are added to the state vector of each texture object. When an attribute |
| set that includes texture information is popped, the bindings and |
| enables are first restored to their pushed values, then the bound |
| textures have their LOD_BIAS parameters restored to their pushed |
| values. |
| |
| Errors |
| |
| None |
| |
| New State |
| |
| Initial |
| Get Value Get Command Type Value Attrib |
| --------- ----------- ---- ------- ------ |
| TEXTURE_LOD_BIAS_S_SGIX GetTexParameterfv n x R 0 texture |
| TEXTURE_LOD_BIAS_T_SGIX GetTexParameterfv n x R 0 texture |
| TEXTURE_LOD_BIAS_R_SGIX GetTexParameterfv n x R 0 texture |
| |
| New Implementation Dependent State |
| |
| None |