Name SGIS_texture_select Name Strings GL_SGIS_texture_select Version $Date: 1996/02/13 19:11:06 $ $Revision: 1.11 $ Number 51 Dependencies EXT_texture EXT_texture3D EXT_texture_object SGIS_detail_texture Overview This extension introduces several new texture internal formats. The purpose of these new formats is to reorganize the components of a texture into groups of components. The currently selected group effectively becomes the internal format. Also, two new texture parameters are introduced that control the selection of these groups of components. For example, assume a texture internal format of DUAL_LUMINANCE4_SGIS is specified. Now there are two groups of components, where each group has a format of LUMINANCE4. One of the two LUMINANCE groups is always selected. components can be selected and then interpreted as a LUMINANCE texture. The purpose of this extension is allow better utilization of texture memory by subdividing the internal representation of a texel into 1, 2, or 4 smaller texels. Additionally, this may improve performance of texture downloads. Issues * This spec still needs values for the enumerants. Also, the GLX section is empty. * This extension was formerly named SGIS_component_select. The reference to "component" was confusing so we changed it. * We have removed the ability to "alias" or reinterpret groups of components. Specifically, once a texture is defined with a DUAL* or QUAD* internal format, the fact that it is ALPHA, LUMINANCE, INTENSITY, or LUMINANCE_ALPHA is not changeable. a previous version of this spec allowed this. IrisGL on RealityEngine allowed it as well. Since this function might be useful, it should be revisited in a separate spec that allows this for all internal formats, not just the ones defined here. Additionally, any porting document should mention this subtle point. * Should we include versions of these new internal formats that don't specify bit resolution? (e.g. DUAL_ALPHA_SGIS) It would add the ability to be vague about the actual resolution and would make it appear consistent with internal formats from EXT_texture. Can someone make a good argument for adding these? * Do we need a new query to determine component bit resolution? A. No. The existing queries defined by EXT_texture are sufficient. The query applies to the selected group of components. * Need to review dependencies on detail_texture, sharpen, etc. Can one create a detail texture using these new formats? A. The dependency on SGIS_detail_texture is mentioned below. * Is there an easy way to know whether this extension is actually "enabled"? A. This extension is enabled when the current texture format is one of the new internal formats defined here. An additional query is required to determine which group of components is selected. New Procedures and Functions None New Tokens Accepted by the parameter of TexImage1D and TexImage2D, and the parameter of TexImage3DEXT: DUAL_ALPHA4_SGIS DUAL_ALPHA8_SGIS DUAL_ALPHA12_SGIS DUAL_ALPHA16_SGIS DUAL_LUMINANCE4_SGIS DUAL_LUMINANCE8_SGIS DUAL_LUMINANCE12_SGIS DUAL_LUMINANCE16_SGIS DUAL_INTENSITY4_SGIS DUAL_INTENSITY8_SGIS DUAL_INTENSITY12_SGIS DUAL_INTENSITY16_SGIS DUAL_LUMINANCE_ALPHA4_SGIS DUAL_LUMINANCE_ALPHA8_SGIS QUAD_ALPHA4_SGIS QUAD_ALPHA8_SGIS QUAD_LUMINANCE4_SGIS QUAD_LUMINANCE8_SGIS QUAD_INTENSITY4_SGIS QUAD_INTENSITY8_SGIS Accepted by the parameter of TexParameterf, TexParameteri, TexParameterfv, TexParameteriv, GetTexParameterfv, and GetTexParameteriv: DUAL_TEXTURE_SELECT_SGIS QUAD_TEXTURE_SELECT_SGIS Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) None. Additions to Chapter 3 of the 1.0 Specification (Rasterization) The selection of a group of components is specified by using TexParameterf, TexParameteri, TexParameterfv, or TexParameteriv with a parameter of DUAL_TEXTURE_SELECT_SGIS or QUAD_TEXTURE_SELECT_SGIS. The value of DUAL_TEXTURE_SELECT_SGIS selects one of two groups of components (hence the term DUAL). The parameter must be 0 or 1. Otherwise, an INVALID_VALUE error is set. When the texture internal format is one of the DUAL* formats, this selection becomes active. A value of 0 specifies that the first group of components is used, a value of 1 specifies the second group, and so on. Similarly, the value of QUAD_TEXTURE_SELECT_SGIS selects one of four groups of components in the case that the texture internal format is one of the QUAD* formats. The value must be 0, 1, 2 or 3. Otherwise, an INVALID_VALUE error is set. There is always a selection defined for both DUAL_TEXTURE_SELECT_SGIS and QUAD_TEXTURE_SELECT_SGIS formats. It becomes active when the current texture format becomes one of the DUAL* or QUAD* formats, respectively. If the current texture format is not one of DUAL* or QUAD* formats, this extension has no effect. The mapping of components from the canonical RGBA to these new internal formats needs to be clarified. There are three cases. The first case is for the DUAL* formats that are groups of ALPHA, LUMINANCE, and INTENSITY. The RED component goes to the first group while ALPHA goes to the second group. The second case is for the DUAL* formats that are groups of LUMINANCE_ALPHA. The RED and GREEN components go to the first group while BLUE and ALPHA go to the second group. The third case is for the QUAD* formats. The RED component goes to the first group, the GREEN component to the second group, the BLUE component to the third group, and the ALPHA component to the fourth group. The interpretation of the bit resolutions of the new internal formats is implementation dependent. (Similar to EXT_texture.) The actual resolution granted can be queried using Get*. The bit resolution of similar type components in a group, such as multiple LUMINANCE components, is always the same. 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 None. GLX Protocol XXX Dependencies on EXT_texture EXT_texture is required. This extension defines new texture internal formats that build on concepts (such as the INTENSITY format and component numeric resolutions) introduced in the EXT_texture extension. Dependencies on EXT_texture3D If EXT_texture3D is not supported, references to it should be ignored. (see New State) Dependencies on EXT_texture_object If EXT_texture_object is not supported, references to it should be ignored. (See New State.) Dependencies on SGIS_detail_texture The condition for using the detail texture (see detail_texture.spec, section 3.8.2.1 Texture magnification with detail) is modified to read: "The conditions are: 1. The active texture must be TEXTURE_2D. 2. The internal formats of TEXTURE_2D and DETAIL_TEXTURE_2D_SGIS must have been specified identically. 3. If SGIS_texture_select is supported and if the internal formats of TEXTURE_2D and DETAIL_TEXTURE_2D_SGIS are one of those defined by SGIS_texture_select (e.g. DUAL_LUMINANCE4_SGIS), then the corresponding group selections (e.g. the value of DUAL_TEXTURE_SELECT_SGIS) must have been specified identically. If these conditions are not met, it is as though the magnification texture filter was LINEAR." Errors See above. New State Initial Get Value Get Command Type Value Attrib --------- ----------- ---- ------- ------ DUAL_TEXTURE_SELECT_SGIS GetTexParameter n x 3 x Z2 0 texture QUAD_TEXTURE_SELECT_SGIS GetTexParameter n x 3 x Z4 0 texture Note: The "Type" column shows "n x ..." since this state will appear in each of "n" objects defined by EXT_texture_object. New Implementation Dependent State None.