| Name |
| |
| SGIX_texture_mipmap_anisotropic |
| |
| Name Strings |
| |
| GL_SGIX_texture_mipmap_anisotropic |
| |
| Version |
| |
| $Date: 1998/10/21 00:42:24 $ $Revision: 1.4 $ |
| |
| Number |
| |
| XXX |
| |
| Dependencies |
| |
| EXT_texture3D affects the definition of this extension |
| SGIX_texture_lod_bias affects the definition of this extension |
| |
| Overview |
| |
| This extension improves the filtering quality over the standard mipmap |
| algorithm. The limitation of the standard mipmap algorithm is that a |
| pixel's footprint in texture space is approximated by a symmetrically |
| filtered sample. The approximation becomes worse as the pixel footprint |
| becomes more anisotropic. The poor approximation usually results in |
| the mapped image appearing excessively blurry. This extension replaces |
| a single symmetric sample with the average of distributed smaller samples, |
| which better approximates the pixel footprint shape. This anisotropic |
| filtering method uses the existing mipmap and clipmap structures. |
| |
| Issues |
| |
| * Should this extension handle all anisotropic filtering methods? |
| -- No. Since all other known anisotropic filter methods (summed-area, |
| ripmap, non-mip supersampling) use different data structures, |
| the control mechanisms will be different and therefore should |
| be separate extensions. |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <pname> parameter of TexParameteri, TexParameterf, |
| TexParameteriv, TexParameterfv, GetTexParameteriv, and GetTexParameterfv: |
| |
| TEXTURE_MIPMAP_ANISOTROPY_SGIX 0x832E |
| |
| Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, |
| GetFloatv, and GetDoublev: |
| |
| MAX_MIPMAP_ANISOTROPY_SGIX 0x832F |
| |
| |
| 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 |
| |
| Table 3.9: Texture parameters and their values. |
| |
| Texture Minification |
| ------------------------ |
| |
| This extensions substantially changes Section 3.8.1. Previously |
| a single scale factor P was determined based on the pixel's projection |
| into texture space. Now two scale factors, Px and Py, are computed. |
| |
| Px = sqrt(dudx^2 + dvdx^2) |
| Py = sqrt(dudy^2 + dvdy^2) |
| |
| Pmax = max(Px,Py) |
| Pmin = min(Px,Py) |
| |
| N = min(ceil(Pmax/Pmin),TEXTURE_MIPMAP_ANISOTROPY_SGIX); |
| Lamda = log2(Pmax/N) |
| |
| |
| It is acceptable for implementation to round 'N' up to the nearest supported |
| sampling rate. For example an implementation may only support power-of-two |
| sampling rates. |
| |
| It is also acceptable for an implementation to approximate the ideal |
| functions Px and Py with functions Fx and Fy subject to the following |
| conditions: |
| |
| 1. Fx is continuous and monotonically increasing in |du/dx| and |dv/dx|. |
| Fy is continuous and monotonically increasing in |du/dy| and |dv/dy|. |
| |
| 2. max(|du/dx|,|dv/dx|} <= Fx <= |du/dx| + |dv/dx|. |
| max(|du/dy|,|dv/dy|} <= Fy <= |du/dy| + |dv/dy|. |
| |
| Instead of a single sample, Tau, at (u,v,Lamda), 'N' locations in the mipmap |
| at LOD Lamda, are sampled within the texture footprint of the pixel. |
| |
| i=N |
| --- |
| Tau = 1/N \ Tau(u(x - 1/2 + i/(N+1), y), v(x - 1/2 + i/(N+1), y)), Px > Py |
| / |
| --- |
| i=1 |
| |
| i=N |
| --- |
| Tau = 1/N \ Tau(u(x, y - 1/2 + i/(N+1)), v(x, y - 1/2 + i/(N+1))), Py >= Px |
| / |
| --- |
| i=1 |
| |
| |
| It is acceptable to approximate the u and v functions with equally spaced |
| samples in texture space at LOD Lamda: |
| |
| i=N |
| --- |
| Tau = 1/N \ Tau(u(x,y)+dudx(i/(N+1)-1/2), v(x,y)+dvdx(i/(N+1)-1/2)), Px > Py |
| / |
| --- |
| i=1 |
| |
| i=N |
| --- |
| Tau = 1/N \ Tau(u(x,y)+dudy(i/(N+1)-1/2), v(x,y)+dvdy(i/(N+1)-1/2)), Py >= Px |
| / |
| --- |
| i=1 |
| |
| |
| |
| 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 supported, the functions Px, Py, and Tau are modified |
| to include dwdx, dwdy, and w. |
| |
| |
| Dependencies on SGIX_texture_lod_bias |
| |
| If SGIX_texture_lod_bias is supported, dudx, dvdx, dwdx, dudy, dvdy, dwdy |
| are replaced with dlodudx, dlodvdx, dlodwdx, dlodudy, dlodvdy, dlodwdy in |
| the Px and Py functions. |
| |
| Errors |
| |
| None |
| |
| New State |
| |
| Initial |
| Get Value Get Command Type Value Attrib |
| --------- ----------- ---- ------- ------ |
| TEXTURE_MIPMAP_ANISOTROPY_SGIX GetTexParameteriv Z1* 1 texture |
| |
| New Implementation Dependent State |
| |
| Minimum |
| Get Value Get Command Type Value |
| --------- ----------- ---- ------- |
| MAX_MIPMAP_ANISOTROPY_SGIX GetIntegerv Z1* 2 |