skia / external / github.com / KhronosGroup / OpenGL-Registry / bc93187978b46e0baae0b8556071d6b292b0bb97 / . / extensions / SGIX / SGIX_texture_lod_bias.txt

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 |