blob: 3c47ca729734be4082c157a83b3f37c42db6824e [file] [log] [blame]
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 <components> parameter of TexImage1D and TexImage2D, and
the <internalformat> 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 <pname> 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 <pname> 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 <param> 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 <param> 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.