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