blob: c5fa01b505aa557594d6ff533ee47d45b5227ae7 [file] [log] [blame]
Name
SGIS_texture_color_mask
Name Strings
GL_SGIS_texture_color_mask
Contact
Jon Leech, SGI (ljp 'at' sgi.com)
Status
Complete. Not shipping yet.
Version
Last Modified Date: December 13, 2004
Author Revision: $Header: //depot/main/doc/registry/extensions/SGI/texture_color_mask.spec#7 $
Number
214
Dependencies
ARB_texture_compression affects the definition of this extension.
Overview
This extension implements the same functionality for texture
updates that glColorMask implements for color buffer updates.
Masks for updating textures with indexed internal formats
(the analog for glIndexMask) should be supported by a separate extension.
The extension allows an application to update a subset of
components in an existing texture. The masks are applied after
all pixel transfer operations have been performed, immediately
prior to writing the texel value into texture memory. They
apply to all texture updates.
IP Status
No issues.
Issues
* The functionality provided by this extension can already be
performed by using the color mask when rendering to the frame
buffer and then using CopyTexture to load the texture.
* This functionality may be hard to achieve with compressed textures.
It will require a read->decompress->modify->compress->write
operation. This may be slower than the DrawPixels/CopyTexture
approach.
New Procedures and Functions
void TextureColorMaskSGIS(boolean r, boolean g, boolean, b, boolean a );
New Tokens
Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
GetIntegerv, and GetFloatv:
TEXTURE_COLOR_WRITEMASK_SGIS = 0x81EF
Additions to Chapter 2 of the OpenGL 1.1 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the OpenGL 1.1 Specification (Rasterization)
Before the section of Texture Parameters, add a section on
texture download masking.
Fine Control of Texture Image Updates
A set of masks can be used to mask the writing of bits into
textures. These masks are applied after all pixel transfer
operations have been performed, immediately before the bits are
written into the texture.
If the texture image being written is compressed, either in one of
the generic compressed formats defined by the base
ARB_texture_compression extension or in a compressed format defined
by an extension layering on ARB_texture_compression, then the
texture color mask is not used when writing that texture.
The command
void TextureColorMaskSGIS( boolean r, boolean g, boolean, b,
boolean a );
is used to control updates to texture images with non-indexed
internal formats.
For an RGBA texture image, TextureColorMaskSGIS is used
to mask the writing of R, G, B, and A values to the texture image.
The r, g, b, and a parameters indicate whether R, G, B,
and A values, respectively, are written. A value of TRUE
means the component is written; a value of FALSE means it is not.
For Luminance or Intensity texture images, the r parameter
indicates whether the Luminance or Intensity component
is written. In this case, the g, b, and a parameters are
ignored.
In the initial state, all color masks are enabled for writing.
If a color mask is in effect when a texture image is being
defined for the first time, the values of the components whose
updates have been disabled are undefined.
Additions to Chapter 4 of the OpenGL 1.1 Specification (Per-Fragment Operations
and the Frame Buffer)
None
Additions to Chapter 5 of the OpenGL 1.1 Specification (Special Functions)
None
Additions to Chapter 6 of the OpenGL OpenGL 1.1 Specification (State and State Requests)
The mask values are queried using GetIntegerv with <pname> set to
TEXTURE_COLOR_WRITEMASK_SGIS.
The masks are saved and restored when PushAttrib and PopAttrib
are called with TEXTURE_BIT set. They are included in the part of
texture state that is associated with the currently bound texture
objects.
Additions to the GLX Specification
None
GLX Protocol
A new GL rendering command is added to support
TextureColorMaskSGIS(). The following command is sent to the server
as part of a glXRender request:
TextureColorMaskSGIS
2 8 rendering command length
2 2082 rendering command opcode
1 BOOL r
1 BOOL g
1 BOOL b
1 BOOL a
Errors
INVALID_OPERATION is generated if TextureColorMaskSGIS is executed
between the execution of Begin and the corresponding execution of
End.
New State
(table 6.?, p. ???)
Get Value Type Get Command Initial Value Description Sec Attribute
--------- ---- ----------- ------------- ----------- --- ---------
TEXTURE_COLOR_WRITEMASK_SGIS 4xB GetIntegerv (T,T,T,T) Texture color 3.? texture
writemask
Revision History
* Version 6, 2004/12/13 - there was an error listed in the GLX
protocol (length 20, using 4 byte BOOL fields). In actuality the
generated protocol in use on IRIX, the development platform for this
extension, is 8 bytes long using single byte BOOLs. Thanks to Ian
Romanick for catching this.
* Version 5, 2001/03/14 - defined interaction with compressed textures
(that the write mask is ignored).