Name SGIX_texture_supersample Name Strings GL_SGIX_texture_supersample Version $Date: 1997/07/17 03:04:37 $ $Revision: 1.1 $ Number XXX Dependencies SGIX_texture_lod_bias affects the definition of this extension Overview This extension introduces high quality texture minification filters which do not require prefiltering or multiple level of detail maps. The texture map is supersampled based on a pixel's projected footprint in texture space. The weighted average of the samples is used as the texture value for the pixel. Issues * Should 3D textures be supported? Not for now. * Should the TEXTURE_SUPERSAMPLE_WIDTH_SGIX greater than 1 be supported? Dignam would like to consider supporting them -- they will be quite slow. New Procedures and Functions None New Tokens Accepted by the parameter of TexParameteri and TexParameterf, and by the parameter of TexParameteriv and TexParameterfv. TEXTURE_SUPERSAMPLE_WIDTH_SGIX Accepted by the parameter of TexParameteri and TexParameterf, and by the parameter of TexParameteriv and TexParameterfv, when their parameter is TEXTURE_MIN_FILTER. LINEAR_SUPERSAMPLE_SGIX FILTER4_SUPERSAMPLE_SGIX 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 with the addition of: Name Type Legal Values ---- ---- ------------ TEXTURE_MIN_FILTER integer LINEAR_SUPERSAMPLE_SGIX, FILTER4_SUPERSAMPLE_SGIX TEXTURE_SUPERSAMPLE_WIDTH_SGIX integer 1, 2, or 4 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) 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|. LamdaX = log2(Px) LamdaY = log2(Py) Nx = round (2^LamdaX); Ny = round (2^LamdaY); Instead of a single sample, Tau, at (u,v), Nx x Ny locations of the texture at LOD 0 are sampled and averaged as follows: i=Nx,j=Ny --- Tau =1/(Nx*Ny) \ Tau( u_sub_ij, v_sub_ij); / --- i=1,j=1 where: u_sub_ij = u(x - 0.5 + i/(Nx+1), y - 0.5 + j/(Ny+1)); v_sub_ij = v(x - 0.5 + i/(Nx+1), y - 0.5 + j/(Ny+1)); It is acceptable to reduce the smaller of Nx and Ny as the pixel footprint collapses to a line, so long as the sampling rate of the texture coordinates with respect to each of the screen coordinates is maintained. The sampling function for Tau(u,v) will be LINEAR if TEXTURE_MIN_FILTER is LINEAR_SUPERSAMPLE_SGIX, and FILTER4_SGIS if TEXTURE_MIN_FILTER is FILTER4_SUPERSAMPLE_SGIX. The default resampling filter is an equal weighted box filter. A linear or cubic filter may be specified by setting the TEXTURE_SUPERSAMPLE_WIDTH_SGIX from 1 to 2 or 4. When TEXTURE_SUPERSAMPLE_WIDTH_SGIX is 2, the width and height of the pixel footprint in screen space will double, and a linear filter centered at the center of the pixel will be used to weight each sample. When TEXTURE_SUPERSAMPLE_WIDTH_SGIX is 4, the width and height of the pixel footprint in screen space will quadruple, and the FILTER4_SGIS texture filter function will be used to weight each sample. 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 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. Dependencies on SGIX_texture_lod LamdaX and LamdaY are clamped to the range [MIN_LOD, MAX_LOD] if the SGIS_texture_lod extension is supported. Errors None New State Initial Get Value Get Command Type Value Attrib --------- ----------- ---- ------- ------ TEXTURE_SUPERSAMPLE_WIDTH_SGIX GetTexParameteriv Z1* 1 texture New Implementation Dependent State Minimum Get Value Get Command Type Value --------- ----------- ---- ------- MAX_TEXTURE_SUPERSAMPLE_WIDTH GetIntegerv Z1* 1