• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    SGIX_texture_mipmap_anisotropic
4
5Name Strings
6
7    GL_SGIX_texture_mipmap_anisotropic
8
9Version
10
11    $Date: 1998/10/21 00:42:24 $ $Revision: 1.4 $
12
13Number
14
15    XXX
16
17Dependencies
18
19    EXT_texture3D affects the definition of this extension
20    SGIX_texture_lod_bias affects the definition of this extension
21
22Overview
23
24    This extension improves the filtering quality over the standard mipmap
25    algorithm.  The limitation of the standard mipmap algorithm is that a
26    pixel's footprint in texture space is approximated by a symmetrically
27    filtered sample.  The approximation becomes worse as the pixel footprint
28    becomes more anisotropic.  The poor approximation usually results in
29    the mapped image appearing excessively blurry.  This extension replaces
30    a single symmetric sample with the average of distributed smaller samples,
31    which better approximates the pixel footprint shape.  This anisotropic
32    filtering method uses the existing mipmap and clipmap structures.
33
34Issues
35
36    *	Should this extension handle all anisotropic filtering methods?
37        -- No.  Since all other known anisotropic filter methods (summed-area,
38           ripmap, non-mip supersampling) use different data structures,
39  	   the control mechanisms will be different and therefore should
40  	   be separate extensions.
41
42New Procedures and Functions
43
44    None
45
46New Tokens
47
48    Accepted by the <pname> parameter of TexParameteri, TexParameterf,
49    TexParameteriv, TexParameterfv, GetTexParameteriv, and GetTexParameterfv:
50
51	TEXTURE_MIPMAP_ANISOTROPY_SGIX	0x832E
52
53    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
54    GetFloatv, and GetDoublev:
55
56        MAX_MIPMAP_ANISOTROPY_SGIX	0x832F
57
58
59Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
60
61    None
62
63Additions to Chapter 3 of the 1.1 Specification (Rasterization)
64
65    GL Specification Table 3.9 is updated as follows:
66
67	Name				Type	    Legal Values
68	----				----	    ------------
69	TEXTURE_WRAP_S			integer	    CLAMP, REPEAT
70	TEXTURE_WRAP_T			integer	    CLAMP, REPEAT
71	TEXTURE_WRAP_R_EXT		integer	    CLAMP, REPEAT
72	TEXTURE_MIN_FILTER		integer	    NEAREST, LINEAR,
73						    NEAREST_MIPMAP_NEAREST,
74						    NEAREST_MIPMAP_LINEAR,
75						    LINEAR_MIPMAP_NEAREST,
76						    LINEAR_MIPMAP_LINEAR,
77						    FILTER4_SGIS,
78						    LINEAR_CLIPMAP_LINEAR_SGIX,
79	TEXTURE_MAG_FILTER		integer	    NEAREST, LINEAR,
80						    FILTER4_SGIS,
81						    LINEAR_DETAIL_SGIS,
82						    LINEAR_DETAIL_ALPHA_SGIS,
83						    LINEAR_DETAIL_COLOR_SGIS,
84						    LINEAR_SHARPEN_SGIS,
85						    LINEAR_SHARPEN_ALPHA_SGIS,
86						    LINEAR_SHARPEN_COLOR_SGIS
87	TEXTURE_BORDER_COLOR		4 floats    any 4 values in [0,1]
88	DETAIL_TEXTURE_LEVEL_SGIS	integer	    any non-negative integer
89	DETAIL_TEXTURE_MODE_SGIS	integer	    ADD, MODULATE
90	TEXTURE_MIN_LOD_SGIS		float	    any value
91	TEXTURE_MAX_LOD_SGIS		float	    any value
92	TEXTURE_BASE_LEVEL_SGIS		integer	    any non-negative integer
93	TEXTURE_MAX_LEVEL_SGIS		integer	    any non-negative integer
94        GENERATE_MIPMAP_SGIS            boolean     TRUE or FALSE
95        TEXTURE_CLIPMAP_FRAME_SGIX      float       any non-negative value
96        TEXTURE_CLIPMAP_CENTER_SGIX     2 integers  any 2 non-negative integers
97        TEXTURE_CLIPMAP_OFFSET_SGIX     2 integers  any 2 non-negative integers
98        TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 3 integers  any 3 non-negative integer
99	TEXTURE_LOD_BIAS_S_SGIX		float	    any value
100	TEXTURE_LOD_BIAS_T_SGIX		float	    any value
101	TEXTURE_LOD_BIAS_R_SGIX		float	    any value
102        TEXTURE_MIPMAP_ANISOTROPY	int	    any value >= 1
103
104	Table 3.9: Texture parameters and their values.
105
106   Texture Minification
107   ------------------------
108
109   This extensions substantially changes Section 3.8.1.  Previously
110   a single scale factor P was determined based on the pixel's projection
111   into texture space.  Now two scale factors, Px and Py, are computed.
112
113   Px = sqrt(dudx^2 + dvdx^2)
114   Py = sqrt(dudy^2 + dvdy^2)
115
116   Pmax = max(Px,Py)
117   Pmin = min(Px,Py)
118
119   N = min(ceil(Pmax/Pmin),TEXTURE_MIPMAP_ANISOTROPY_SGIX);
120   Lamda = log2(Pmax/N)
121
122
123   It is acceptable for implementation to round 'N' up to the nearest supported
124   sampling rate.  For example an implementation may only support power-of-two
125   sampling rates.
126
127   It is also acceptable for an implementation to approximate the ideal
128   functions Px and Py with functions Fx and Fy subject to the following
129   conditions:
130
131   1.  Fx is continuous and monotonically increasing in |du/dx| and |dv/dx|.
132       Fy is continuous and monotonically increasing in |du/dy| and |dv/dy|.
133
134   2.  max(|du/dx|,|dv/dx|} <= Fx <= |du/dx| + |dv/dx|.
135       max(|du/dy|,|dv/dy|} <= Fy <= |du/dy| + |dv/dy|.
136
137   Instead of a single sample, Tau, at (u,v,Lamda), 'N' locations in the mipmap
138   at LOD Lamda, are sampled within the texture footprint of the pixel.
139
140             i=N
141             ---
142   Tau = 1/N \ Tau(u(x - 1/2 + i/(N+1), y), v(x - 1/2 + i/(N+1), y)),  Px > Py
143             /
144             ---
145             i=1
146
147             i=N
148             ---
149   Tau = 1/N \ Tau(u(x, y - 1/2 + i/(N+1)), v(x, y - 1/2 + i/(N+1))),  Py >= Px
150             /
151             ---
152             i=1
153
154
155   It is acceptable to approximate the u and v functions with equally spaced
156   samples in texture space at LOD Lamda:
157
158             i=N
159             ---
160   Tau = 1/N \ Tau(u(x,y)+dudx(i/(N+1)-1/2), v(x,y)+dvdx(i/(N+1)-1/2)), Px > Py
161             /
162             ---
163             i=1
164
165             i=N
166             ---
167   Tau = 1/N \ Tau(u(x,y)+dudy(i/(N+1)-1/2), v(x,y)+dvdy(i/(N+1)-1/2)), Py >= Px
168             /
169             ---
170             i=1
171
172
173
174Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
175and the Frame Buffer)
176
177    None
178
179Additions to Chapter 5 of the 1.1 Specification (Special Functions)
180
181    None
182
183Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
184
185    None
186
187Additions to the GLX Specification
188
189    None
190
191Dependencies on EXT_texture3D
192
193    If EXT_texture3D is supported, the functions Px, Py, and Tau are modified
194    to include dwdx, dwdy, and w.
195
196
197Dependencies on SGIX_texture_lod_bias
198
199    If SGIX_texture_lod_bias is supported, dudx, dvdx, dwdx, dudy, dvdy, dwdy
200    are replaced with dlodudx, dlodvdx, dlodwdx, dlodudy, dlodvdy, dlodwdy in
201    the Px and Py functions.
202
203Errors
204
205    None
206
207New State
208
209								Initial
210    Get Value			   Get Command	    Type	Value	  Attrib
211    ---------			   -----------	    ----	-------	  ------
212    TEXTURE_MIPMAP_ANISOTROPY_SGIX GetTexParameteriv Z1*        1         texture
213
214New Implementation Dependent State
215
216                                                                        Minimum
217    Get Value                           Get Command     Type            Value
218    ---------                           -----------     ----            -------
219    MAX_MIPMAP_ANISOTROPY_SGIX          GetIntegerv     Z1*              2
220