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