| |
| Name |
| |
| SGIX_pixel_texture_bits |
| |
| Name Strings |
| |
| GL_SGIX_pixel_texture_bits |
| |
| Version |
| |
| $Date: 1998/10/01 23:30:18 $ $Revision: 1.11 $ |
| |
| Number |
| |
| 127 |
| |
| Dependencies |
| |
| GL_SGIS_pixel_texture |
| can be implemented in parallel with SGIX_pixel_texture_lod |
| |
| Overview |
| |
| The pixel_texture extension causes the "convert to fragment" |
| stage of the pixel pipeline to derive the fragment's texture |
| coordinates from the pixel group's color components. |
| At this stage in the pixel pipeline, the color components have |
| been converted into the framebuffer format. These |
| framebuffer format values are used to produce texture coordinates |
| of exactly the same value. The internal representation of |
| texture coordinates is intentionally left vague in the spec |
| so implementations can choose whatever they like. |
| |
| This works well when the frame buffer format for |
| a color component is a fixed point value in the range [0,1]. |
| However, if SGIX_color_range is supported, the framebuffer |
| format can be floating point, and the values are not |
| a linear ramp. This means that the texture must be |
| large and sparsely populated in order to ensure that |
| each texture coordinate value reaches a unique texel. |
| |
| This extension allows the application to specify that |
| the color component be treated like an unsigned integer |
| with the same number of bits as are in the framebuffer format, |
| which makes each texel in the texture accessible through |
| the texture lookup equations with a texture whose size |
| is 2^n in each dimension, where n is the number of bits in |
| the framebuffer format. |
| |
| The application must know the exact frambuffer format |
| in order to define the texture correctly. |
| |
| For example, this approach allows the implementation of |
| a bit-preserving 1D lookup table for the s10e5 bali pixel format. |
| It specifies a mapping of the s10e5 pixel format to a texture |
| coordinate index in a manner that allows one texel to be |
| mapped to each of the 64K bit patterns possible in the |
| s10e5 format. |
| |
| The motivation is to allow the shader toolkit to implement |
| functions, e.g., cos(x), with a copy pixels |
| and pixel texture enabled in a way that preserves as |
| much accuracy as possible. |
| |
| IP Status |
| |
| Silicon Graphics has filed for patent protection for some of the |
| techniques described in this extension document. |
| |
| Issues |
| |
| * Could we define a separate scale factor so that we don't |
| necessarily have to specify that we convert to the framebuffer |
| format? |
| |
| There isn't much need to mention the framebuffer format |
| here; we just need to specify how we're going to interpret |
| the bits. However, the application must use a texture |
| that corresponds to the framebuffer format. |
| |
| * To get to the exact center of a texel, we need to add |
| 0.5 to the calculation after the conversion to unsigned |
| int and before the divide by 2^m-1. |
| |
| This is not necessary because the equations for calculating |
| the 2x2 square of texels when TEXTURE_MIN_FILTER is LINEAR |
| do it. (Section 3.8 in the spec.) |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <pname> parameter of PixelTexGenParameteriSGIX and |
| PixelTexGenParameterivSGIX: |
| |
| COLOR_TO_TEXTURE_COORD_SGIX |
| |
| Accepted by the <param> parameter of PixelTexGenParameteriSGIX and |
| PixelTexGenParameterivSGIX: |
| |
| COLOR_BIT_PATTERN_SGIX |
| COLOR_VALUE_SGIX |
| |
| Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 1.0 Specification (Rasterization) |
| |
| This extension, similar to the pixel_texture.spec modifies the |
| "Conversion to Fragments" subsection of section 3.6.3 (Rasterization |
| of Pixel Rectangles) of the GL Specification. Immediately following |
| the text added by the pixel_texture.spec, insert the following: |
| |
| If the PixelTexGenParameterSGIX param COLOR_TO_TEXTURE_COORD_SGIX |
| is set to COLOR_BIT_PATTERN_SGIX, the mapping from r,g,b,a |
| to s,t,r,q is altered. |
| |
| At this stage, final color processing has been performed and the |
| r,g,b,a values are in the form that matches the framebuffer. |
| To map the red color value to the s texture coordinate the |
| m bits of red, interpreted as an integer in the range [0,2^m-1], are |
| divided by 2^m-1 to obtain an s coordinate in the range [0,1]. |
| Green and Blue are mapped similarly. The q texture coordinate |
| is set to one if a divide by q is in effect. If TEXTURE_4D_SGIS |
| is enabled, Alpha is mapped to q in the same way Red is |
| mapped to s. |
| |
| If the PixelTexGenParameterSGIX param COLOR_TO_TEXTURE_COORD_SGIX |
| is set to COLOR_VALUE_SGIX, the r,g,b,a values are used |
| to produce floating point values for s,t,r,q. |
| |
| Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations |
| and the Frame Buffer) |
| |
| None |
| |
| |
| Additions to Chapter 5 of the 1.0 Specification (Special Functions) |
| |
| None |
| |
| Additions to Chapter 6 of the 1.0 Specification (State and State Requests) |
| |
| None |
| |
| Additions to the GLX Specification |
| |
| XXX |
| |
| Errors |
| |
| New State |
| |
| The following is added to Table 6.16. Pixels. |
| |
| Get Value Get Command Type Initial Value Attrib |
| --------- ----------- ---- ------------- ------ |
| COLOR_TO_TEXTURE_COORD_SGIX GetPixelTexGenParameterivSGIS Z2 COLOR_VALUE_SGIX pixel |
| |
| New Implementation Dependent State |
| |
| None |