XXX - Not complete yet!!!
Name
SGIX_texture_phase
Name Strings
GL_SGIX_texture_phase
Version
$Date: 1997/12/08 19:59:59 $ $Revision: 1.3 $
Number
??
Dependencies
None
Overview
This extension allows textures to filtered using a modified LINEAR
filter that treats the texture data as phase angle. (In addition
to the NEAREST and LINEAR filters defined in the original GL
Specification.) Such filtering is useful for dopler data where
texel values correspond to positions on a unit circle or phase
angles.
Issues
*
Reasoning
*
New Procedures and Functions
None
New Tokens
Accepted by the parameter of TexParameteri and
TexParameterf, and by the parameter of TexParameteriv and
TexParameterfv, when their parameter is
TEXTURE_MIN_FILTER or TEXTURE_MAG_FILTER:
PHASE_SGIX 0x832A
Additions to Chapter 2 of the GL Specification (OpenGL Operation)
None
Additions to Chapter 3 of the GL Specification (Rasterization)
The additional token value PHASE_SGIS is accepted as an enumerated
value for the texture minification and magnification filters, causing
Table 3.7 to be replaced with the table below:
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,
PHASE_SGIS
TEXTURE_MAG_FILTER integer NEAREST, LINEAR,
FILTER4_SGIS,
PHASE_SGIX
TEXTURE_BORDER_COLOR 4 floats any 4 values in [0,1]
Table 3.7: Texture parameters and their values.
Phase filtering is specified by calling TexParameteri,
TexParameterf, TexParameteriv, or TexParameterfv with set
to TEXTURE_MIN_FILTER or TEXTURE_MAG_FILTER, and or
set to PHASE_SGIS. Because phase filtering is defined only for
non-mipmapped textures, there is no difference between its
definition for minification and magnification.
First consider the 1-dimensional case. Let T be a computed texture
value (one of R_t, G_t, B_t, or A_t). Let T[i] be the component
value of the texel at location i in a 1-dimensional texture image.
Then, if the appropriate texture filter mode is PHASE_SGIX, a
2-texel group is selected:
/ floor(u - 1/2) mod 2**n, TEXTURE_WRAP_S is REPEAT
i0 = (
\ floor(u - 1/2), TEXTURE_WRAP_S is CLAMP
/ (i0 + 1) mod 2**n, TEXTURE_WRAP_S is REPEAT
i1 = (
\ i0 + 1, TEXTURE_WRAP_S is CLAMP
Let
A = frac(u - 1/2)
where frac(x) denotes the fractional part of x, and u is the
texture image coordinate in the s direction, as illustrated in
Figure 3.10 of the GL Specification. Then the texture value T is
found as:
t0 = T[i0]
t1 = T[i1]
del = t1 - t0
if |del| > 0.5 then
t0 = t0 + sign(del)
T = frac((1-A) * t0 + A * t1)
If any of the selected T[i] in the above equation refer to a border
texel with unspecified value, then the border color given by the
current setting of TEXTURE_BORDER_COLOR is used instead of the
unspecified value.
For 2-dimensional textures the calculations for i0, i1, and
A are identical to the 1-dimensional case. A 4-texel group is
selected, requiring two j values computed as
/ floor(v - 1/2) mod 2**m, TEXTURE_WRAP_T is REPEAT
j0 = (
\ floor(v - 1/2), TEXTURE_WRAP_T is CLAMP
/ (j0 + 1) mod 2**m, TEXTURE_WRAP_T is REPEAT
j1 = (
\ j0 + 1, TEXTURE_WRAP_T is CLAMP
Let
B = frac(v - 1/2)
where v is the texture image coordinate in the t direction, as
illustrated in Figure 3.10 of the GL Specification. Then the
texture value T is found as:
t00 = T[i0,j0]
t01 = T[i0,j1]
t10 = T[i1,j0]
t11 = T[i1,j1]
del = t10 - t00
if |del| > 0.5 then
t00 = t00 + sign(del)
t0 = frac((1-A) * t00 + A * t10)
del = t11 - t01
if |del| > 0.5 then
t01 = t01 + sign(del)
t1 = frac((1-A) * t01 + A * t11)
del = t1 - t0
if |del| > 0.5 then
t0 = t0 + sign(del)
T = frac((1-A) * t0 + A * t1)
If any of the selected T[i,j] in the above equation refer to a
border texel with unspecified value, then the border color given by
the current setting of TEXTURE_BORDER_COLOR is used instead of the
unspecified value.
Phase texture filtering is similarly defined for 3-dimensional
textures.
Additions to Chapter 4 of the GL Specification (Per-Fragment Operations
and the Framebuffer)
None
Additions to Chapter 5 of the GL Specification (Special Functions)
None
Additions to Chapter 6 of the GL Specification (State and State Requests)
None
Additions to the GLX Specification
None
GLX Protocol
Errors
New State
New Implementation Dependent State