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 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 set to TEXTURE_1D, TEXTURE_2D, or TEXTURE_3D_EXT, set to one of the LOD Bias names, and set to (or 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