| Name |
| |
| SGI_texture_color_table |
| |
| Name Strings |
| |
| GL_SGI_texture_color_table |
| |
| Contact |
| |
| Silicon Graphics, Inc. |
| Brian Paul (brian_e_paul 'at' yahoo.com) |
| |
| Status |
| |
| Shipping. |
| |
| Version |
| |
| $Date: 1998/03/14 07:42:15 $ $Revision: 1.1 $ |
| |
| Number |
| |
| 17 |
| |
| Dependencies |
| |
| EXT_abgr affects the definition of this extension |
| EXT_texture is required |
| EXT_copy_texture affects the definition of this extension |
| ARB_multitexture affects the definition of this extension |
| The extension is written against the OpenGL 1.0 Specification |
| |
| Overview |
| |
| This extension adds a color lookup table to the texture mechanism. |
| The table is applied to the filtered result of a texture lookup, |
| before that result is used in the texture environment equations. |
| |
| The definition and application of the texture color table are |
| similar to those of the color tables defined in SGI_color_table, |
| though it is not necessary for that extension to be implemented. |
| |
| Texture color tables can be used to expand luminance or intensity |
| textures to full RGBA, and also to linearize the results of color |
| space conversions implemented by multidimensional texture table |
| lookup. |
| |
| This specification has been updated to define its interaction with |
| multitexture. |
| |
| Issues |
| |
| 1. Should the scale, bias, and clamp that is applied to texels |
| be moved to a separate SGIX extension? |
| |
| Done. See GL_SGIX_texture_scale_bias. |
| |
| 2. It should be clarified that this state is NOT part of |
| EXT_texture_object. The color table state is per texture unit. |
| |
| 3. Can the texture format change while passing thru the texture |
| color table? |
| |
| This possibility is mentioned in the overview. An example of |
| when this is useful is an RGBA table applied to a LUMINANCE |
| texture. This expands LUMINANCE to full RGBA. The table |
| defined below does not account for this. |
| |
| The specification has been changed to map all texture components |
| to Rt, Gt, Bt, At and now the table is always applied to all 4 |
| components. |
| |
| 4. Do we want to query MAX_TEXTURE_COLOR_TABLE_WIDTH_SGI in |
| addition to PROXY method? |
| |
| No, this should be done with PROXY. |
| |
| 5. Is one texture color table shared by all texture units or is |
| there a separate color table for each texture unit? |
| |
| Vendors shipping both ARB_multitexture and SGI_texture_color_table |
| report that they've implemented per-texture unit tables. |
| |
| The texure color table enable flag is also per-texture unit. |
| |
| 6. Is the proxy texture color table per context or per texture unit |
| state? |
| |
| After talking to IBM and 3Dlabs, the consensus is that there is a |
| separate proxy texture color table for each texture unit. |
| |
| 7. Is the texture color table scale and bias values per context or |
| per texture unit? |
| |
| Consensus is that there is one set of scale and bias values shared |
| for all texture units. It's part of the pixel state group. |
| |
| 8. What if there is a different number of texture image units and |
| texture coordinate units (ala NV_fragment_program)? |
| |
| The number of texture image units determines the number of texture |
| color tables. All occurances of "texture unit" should be read as |
| "texture image unit". |
| |
| 9. Has this extension specification changed recently? |
| |
| It's been updated to clarify how it interacts with multitexture. |
| Also, various cosmetic clean-ups have been made. |
| |
| |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, |
| by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, |
| and GetDoublev, and by the <target> parameter of ColorTableSGI, |
| CopyColorTableSGI, GetColorTableSGI, ColorTableParameterfvSGI, |
| ColorTableParameterivSGI, GetColorTableParameterfvSGI, |
| GetColorTableParameterivSGI: |
| |
| TEXTURE_COLOR_TABLE_SGI 0x80BC |
| |
| Accepted by the <target> parameter of ColorTableSGI, |
| GetColorTableParameterivSGI, and GetColorTableParameterfvSGI: |
| |
| PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD |
| |
| Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 1.0 Specification (Rasterization) |
| |
| If TEXTURE_COLOR_TABLE is enabled, the post-filtered texture color |
| is used to index into the texture color table to produce a new color. |
| The new color is passed along to the texture application step. |
| |
| The texture color table is specified in exactly the manner |
| described for the color tables in SGI_color_table, using |
| TEXTURE_COLOR_TABLE_SGI as the value for the <target> parameters |
| of the various commands. |
| |
| The table size, specified by the <width> parameter of |
| ColorTableSGI is limited to powers-of-two. Additionally, an |
| implementation must support a maximum table size of at least 256 |
| entries. |
| |
| The PROXY_TEXTURE_COLOR_TABLE_SGI target is available for |
| configuration queries in exactly the manner described for the |
| other tables in SGI_color_table. |
| |
| The contents of the table are used to replace a subset of the |
| components of each texel group, based on the base internal format |
| of the table. |
| |
| If the table size is zero, the texture color table |
| is effectively disabled. The texture color table is applied to |
| the texture components denoted in the the EXT_texture extension as |
| Rt, Gt, Bt, and At according to the following table: |
| |
| |
| Modification of Texture Components |
| ---------------------------------- |
| Base Table |
| Internal Format Rt Gt Bt At |
| --------------- -- -- -- -- |
| |
| ALPHA Rt Gt Bt A(At) |
| |
| LUMINANCE L(Rt) L(Gt) L(Bt) At |
| |
| LUMINANCE_ALPHA L(Rt) L(Gt) L(Bt) A(At) |
| |
| INTENSITY I(Rt) I(Gt) I(Bt) I(At) |
| |
| RGB R(Rt) G(Gt) B(Bt) At |
| |
| RGBA R(Rt) G(Gt) B(Bt) A(At) |
| |
| |
| If multiple texture units are supported, there is a texture color |
| table, proxy texture color table and enable/disable flag for each |
| texture unit. ACTIVE_TEXTURE determines the texture unit for |
| texture color table state changes and queries. |
| |
| Additions to Chapter 4 of the 1.0 Specification (Per-Fragment |
| Operations and the Framebuffer) |
| |
| 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 |
| |
| None |
| |
| Dependencies on EXT_abgr |
| |
| EXT_abgr affects this extension in exactly the manner that it |
| affects SGI_color_table. |
| |
| Dependencies on EXT_texture |
| |
| EXT_texture is required. This extension builds on the notion of |
| internal image format, which is defined by EXT_texture. |
| |
| Dependencies on EXT_copy_texture |
| |
| EXT_copy_texture affects this extension in exactly the manner that |
| it affects SGI_color_table. |
| |
| Dependencies on SGI_color_table |
| |
| The specification depends heavily on the SGI_color_table |
| specification, but it is not necessary that SGI_color_table be |
| implemented for this extension to be implemented. |
| |
| Dependencies on ARB_multitexture |
| |
| In the presense of ARB_multitxture, the texture color table state |
| is replicated for each texture unit. Otherwise, the texture color |
| table state is per-context state. |
| |
| Errors |
| |
| TEXTURE_COLOR_TABLE_SGI and PROXY_TEXTURE_COLOR_TABLE_SGI are |
| added to the list of <target> parameters that are accepted by |
| color table commands. |
| |
| New State |
| |
| Get Value Get Command Type Initial Value Attribute |
| --------- ----------- ---- ------------- --------- |
| TEXTURE_COLOR_TABLE_SGI IsEnabled 1* x B False texture/enable |
| TEXTURE_COLOR_TABLE_SGI GetColorTableSGI 1* x I empty texture* |
| COLOR_TABLE_FORMAT_SGI GetColorTableParameterivSGI 2 x 1* x Z38 RGBA texture* |
| COLOR_TABLE_WIDTH_SGI GetColorTableParameterivSGI 2 x 1* x Z+ 0 texture* |
| COLOR_TABLE_RED_SIZE_SGI GetColorTableParameterivSGI 2 x 1* x Z+ 0 texture* |
| COLOR_TABLE_GREEN_SIZE_SGI GetColorTableParameterivSGI 2 x 1* x Z+ 0 texture* |
| COLOR_TABLE_BLUE_SIZE_SGI GetColorTableParameterivSGI 2 x 1* x Z+ 0 texture* |
| COLOR_TABLE_ALPHA_SIZE_SGI GetColorTableParameterivSGI 2 x 1* x Z+ 0 texture* |
| COLOR_TABLE_LUMINANCE_SIZE_SGI GetColorTableParameterivSGI 2 x 1* x Z+ 0 texture* |
| COLOR_TABLE_INTENSITY_SIZE_SGI GetColorTableParameterivSGI 2 x 1* x Z+ 0 texture* |
| COLOR_TABLE_SCALE_SGI GetColorTableParameterfvSGI R4 (1,1,1,1) pixel |
| COLOR_TABLE_BIAS_SGI GetColorTableParameterfvSGI R4 (0,0,0,0) pixel |
| |
| *Note: if ARB_multitexture is supported, the state is per-texture unit, |
| else the state is per-context. |
| |
| Note: "1*" denotes one or more texture units. |
| |
| Note: "2 x 1* x _" denotes real and proxy state for one or more texture units. |
| |
| Note: The state shown here only represents the NEW state added by this |
| extension. There may be additional color table state from ARB_imaging |
| or EXT_paletted_texture, for example. |
| |
| New Implementation Dependent State |
| |
| None. |
| |
| Revision History |
| |
| 1998 |
| Original specification by SGI |
| |
| 2003 Feb 5 |
| Updated to specify interaction with ARB_multitexture (Brian Paul) |
| |
| |