| 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 <param> parameter of TexParameteri and |
| TexParameterf, and by the <params> parameter of TexParameteriv and |
| TexParameterfv, when their <pname> 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 <pname> set |
| to TEXTURE_MIN_FILTER or TEXTURE_MAG_FILTER, and <param> or <params> |
| 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 |
| |