blob: ee961da4b78cae021c5bdb0a914f7d639f568882 [file] [log] [blame]
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