1Name 2 3 SGIS_texture_select 4 5Name Strings 6 7 GL_SGIS_texture_select 8 9Version 10 11 $Date: 1996/02/13 19:11:06 $ $Revision: 1.11 $ 12 13Number 14 15 51 16 17Dependencies 18 19 EXT_texture 20 EXT_texture3D 21 EXT_texture_object 22 SGIS_detail_texture 23 24Overview 25 26 This extension introduces several new texture internal formats. The 27 purpose of these new formats is to reorganize the components of a 28 texture into groups of components. The currently selected group 29 effectively becomes the internal format. 30 31 Also, two new texture parameters are introduced that control the 32 selection of these groups of components. 33 34 For example, assume a texture internal format of DUAL_LUMINANCE4_SGIS is 35 specified. Now there are two groups of components, where each group has 36 a format of LUMINANCE4. One of the two LUMINANCE groups is always 37 selected. components can be selected and then interpreted as a LUMINANCE 38 texture. 39 40 The purpose of this extension is allow better utilization of texture 41 memory by subdividing the internal representation of a texel into 1, 2, 42 or 4 smaller texels. Additionally, this may improve performance of 43 texture downloads. 44 45Issues 46 47 * This spec still needs values for the enumerants. Also, the GLX 48 section is empty. 49 50 * This extension was formerly named SGIS_component_select. The 51 reference to "component" was confusing so we changed it. 52 53 * We have removed the ability to "alias" or reinterpret groups of 54 components. Specifically, once a texture is defined with a DUAL* 55 or QUAD* internal format, the fact that it is ALPHA, LUMINANCE, 56 INTENSITY, or LUMINANCE_ALPHA is not changeable. a previous version 57 of this spec allowed this. IrisGL on RealityEngine allowed it as 58 well. Since this function might be useful, it should be revisited 59 in a separate spec that allows this for all internal formats, not 60 just the ones defined here. Additionally, any porting document 61 should mention this subtle point. 62 63 * Should we include versions of these new internal formats that don't 64 specify bit resolution? (e.g. DUAL_ALPHA_SGIS) It would add the 65 ability to be vague about the actual resolution and would make it 66 appear consistent with internal formats from EXT_texture. Can 67 someone make a good argument for adding these? 68 69 * Do we need a new query to determine component bit resolution? 70 A. No. The existing queries defined by EXT_texture are sufficient. 71 The query applies to the selected group of components. 72 73 * Need to review dependencies on detail_texture, sharpen, etc. Can 74 one create a detail texture using these new formats? A. The 75 dependency on SGIS_detail_texture is mentioned below. 76 77 * Is there an easy way to know whether this extension is actually 78 "enabled"? A. This extension is enabled when the current texture 79 format is one of the new internal formats defined here. An 80 additional query is required to determine which group of components 81 is selected. 82 83 84New Procedures and Functions 85 86 None 87 88New Tokens 89 90 Accepted by the <components> parameter of TexImage1D and TexImage2D, and 91 the <internalformat> parameter of TexImage3DEXT: 92 93 DUAL_ALPHA4_SGIS 94 DUAL_ALPHA8_SGIS 95 DUAL_ALPHA12_SGIS 96 DUAL_ALPHA16_SGIS 97 DUAL_LUMINANCE4_SGIS 98 DUAL_LUMINANCE8_SGIS 99 DUAL_LUMINANCE12_SGIS 100 DUAL_LUMINANCE16_SGIS 101 DUAL_INTENSITY4_SGIS 102 DUAL_INTENSITY8_SGIS 103 DUAL_INTENSITY12_SGIS 104 DUAL_INTENSITY16_SGIS 105 DUAL_LUMINANCE_ALPHA4_SGIS 106 DUAL_LUMINANCE_ALPHA8_SGIS 107 QUAD_ALPHA4_SGIS 108 QUAD_ALPHA8_SGIS 109 QUAD_LUMINANCE4_SGIS 110 QUAD_LUMINANCE8_SGIS 111 QUAD_INTENSITY4_SGIS 112 QUAD_INTENSITY8_SGIS 113 114 Accepted by the <pname> parameter of TexParameterf, TexParameteri, 115 TexParameterfv, TexParameteriv, GetTexParameterfv, and 116 GetTexParameteriv: 117 118 DUAL_TEXTURE_SELECT_SGIS 119 QUAD_TEXTURE_SELECT_SGIS 120 121 122Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) 123 124 None. 125 126Additions to Chapter 3 of the 1.0 Specification (Rasterization) 127 128 The selection of a group of components is specified by using 129 TexParameterf, TexParameteri, TexParameterfv, or TexParameteriv with 130 a <pname> parameter of DUAL_TEXTURE_SELECT_SGIS or QUAD_TEXTURE_SELECT_SGIS. 131 132 The value of DUAL_TEXTURE_SELECT_SGIS selects one of two groups of 133 components (hence the term DUAL). The <param> parameter must be 0 or 1. 134 Otherwise, an INVALID_VALUE error is set. When the texture internal 135 format is one of the DUAL* formats, this selection becomes active. A 136 value of 0 specifies that the first group of components is used, a value 137 of 1 specifies the second group, and so on. 138 139 Similarly, the value of QUAD_TEXTURE_SELECT_SGIS selects one of four 140 groups of components in the case that the texture internal format is one 141 of the QUAD* formats. The <param> value must be 0, 1, 2 or 3. 142 Otherwise, an INVALID_VALUE error is set. 143 144 There is always a selection defined for both DUAL_TEXTURE_SELECT_SGIS 145 and QUAD_TEXTURE_SELECT_SGIS formats. It becomes active when the 146 current texture format becomes one of the DUAL* or QUAD* formats, 147 respectively. If the current texture format is not one of DUAL* or 148 QUAD* formats, this extension has no effect. 149 150 The mapping of components from the canonical RGBA to these new internal 151 formats needs to be clarified. There are three cases. The first case 152 is for the DUAL* formats that are groups of ALPHA, LUMINANCE, and 153 INTENSITY. The RED component goes to the first group while ALPHA goes 154 to the second group. The second case is for the DUAL* formats that are 155 groups of LUMINANCE_ALPHA. The RED and GREEN components go to the first 156 group while BLUE and ALPHA go to the second group. The third case is 157 for the QUAD* formats. The RED component goes to the first group, the 158 GREEN component to the second group, the BLUE component to the third 159 group, and the ALPHA component to the fourth group. 160 161 The interpretation of the bit resolutions of the new internal formats 162 is implementation dependent. (Similar to EXT_texture.) The actual 163 resolution granted can be queried using Get*. The bit resolution of 164 similar type components in a group, such as multiple LUMINANCE 165 components, is always the same. 166 167 168Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations 169and the Frame Buffer) 170 171 None. 172 173Additions to Chapter 5 of the 1.0 Specification (Special Functions) 174 175 None. 176 177Additions to Chapter 6 of the 1.0 Specification (State and State Requests) 178 179 None. 180 181Additions to the GLX Specification 182 183 None. 184 185GLX Protocol 186 187 XXX 188 189Dependencies on EXT_texture 190 191 EXT_texture is required. This extension defines new texture internal 192 formats that build on concepts (such as the INTENSITY format and 193 component numeric resolutions) introduced in the EXT_texture extension. 194 195Dependencies on EXT_texture3D 196 197 If EXT_texture3D is not supported, references to it should be ignored. 198 (see New State) 199 200Dependencies on EXT_texture_object 201 202 If EXT_texture_object is not supported, references to it should be 203 ignored. (See New State.) 204 205Dependencies on SGIS_detail_texture 206 207 The condition for using the detail texture (see detail_texture.spec, 208 section 3.8.2.1 Texture magnification with detail) is modified to read: 209 210 "The conditions are: 211 212 1. The active texture must be TEXTURE_2D. 213 214 2. The internal formats of TEXTURE_2D and DETAIL_TEXTURE_2D_SGIS 215 must have been specified identically. 216 217 3. If SGIS_texture_select is supported and if the internal formats 218 of TEXTURE_2D and DETAIL_TEXTURE_2D_SGIS are one of those 219 defined by SGIS_texture_select (e.g. DUAL_LUMINANCE4_SGIS), 220 then the corresponding group selections (e.g. the value of 221 DUAL_TEXTURE_SELECT_SGIS) must have been specified identically. 222 223 If these conditions are not met, it is as though the magnification 224 texture filter was LINEAR." 225 226Errors 227 228 See above. 229 230New State 231 232 Initial 233 Get Value Get Command Type Value Attrib 234 --------- ----------- ---- ------- ------ 235 236 DUAL_TEXTURE_SELECT_SGIS GetTexParameter n x 3 x Z2 0 texture 237 238 QUAD_TEXTURE_SELECT_SGIS GetTexParameter n x 3 x Z4 0 texture 239 240 241 Note: The "Type" column shows "n x ..." since this state will appear 242 in each of "n" objects defined by EXT_texture_object. 243 244New Implementation Dependent State 245 246 None. 247