blob: 203cf6d6893a22a91db8be6f4081d1d36ee49309 [file] [log] [blame]
XXX - not complete yet!
Name
SGIS_texture4D
Name Strings
GL_SGIS_texture4D
Version
$Date: 1997/03/15 02:52:10 $ $Revision: 1.25 $
Number
16
Dependencies
EXT_abgr affects the definition of this extension
EXT_texture is required
EXT_texture3D is required
EXT_subtexture affects the definition of this extension
Overview
This extension defines 4-dimensional texture mapping. If EXT_subtexture
is supported, this extension also defines a mechanism to redefine a
portion of an existing 4-dimensional texture image. Because
EXT_texture3D is required, this extension utilizes the 3-dimensional
image support defined in by EXT_texture3D as a base for 4-dimensional
image manipulation.
The 4th dimension has an abstract, rather than physical, reference
and will be called "extent", since the definition of extent is "that which
specifies the range or magnitude of an area or volume."
Four-dimensional texture mapping is more constrained than its one, two,
and three-dimensional counterparts. Mipmapping is not supported, so
only the level-zero 4-dimensional texture image can be defined. Cubic
filtering is not supported, so the border width must be either zero or
one.
Four-dimensional textures are used primarily as color lookup tables for
color conversion.
New Procedures and Functions
void TexImage4DSGIS(enum target,
int level,
enum internalformat,
sizei width,
sizei height,
sizei depth,
sizei extent,
int border,
enum format,
enum type,
const void* pixels);
void TexSubImage4DSGIS(enum target,
int level,
int xoffset,
int yoffset,
int zoffset,
int woffset,
sizei width,
sizei height,
sizei depth,
sizei extent,
enum format,
enum type,
const void* pixels);
New Tokens
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev, and by the <pname> parameter of PixelStore:
PACK_SKIP_VOLUMES_SGIS
PACK_IMAGE_DEPTH_SGIS
UNPACK_SKIP_VOLUMES_SGIS
UNPACK_IMAGE_DEPTH_SGIS
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 TexImage4DSGIS, GetTexImage,
GetTexLevelParameteriv, GetTexLevelParameterfv, GetTexParameteriv, and
GetTexParameterfv:
TEXTURE_4D_SGIS
Accepted by the <target> parameter of TexImage4DSGIS,
GetTexLevelParameteriv, and GetTexLevelParameterfv:
PROXY_TEXTURE_4D_SGIS
Accepted by the <pname> parameter of GetTexLevelParameteriv and
GetTexLevelParameterfv:
TEXTURE_4DSIZE_SGIS
Accepted by the <pname> parameter of TexParameteriv, TexParameterfv,
GetTexParameteriv, and GetTexParameterfv:
TEXTURE_WRAP_Q_SGIS
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev:
MAX_4D_TEXTURE_SIZE_SGIS
TEXTURE_4D_BINDING_SGIS
Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.0 Specification (Rasterization)
XXX - not written yet. Be sure to handle the null image case.
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)
TexImage4DSGIS with a proxy target is not included in display
lists, but is instead executed immediately.
Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
4-dimensional texture images are queried using GetTexImage with its
<target> parameter set to TEXTURE_4D_SGIS. The assignment of texel
component values to the initial R, G, B, and A components of a pixel
group is described in EXT_texture. Pixel transfer and pixel storage
operations are applied as if the image were 3-dimensional, except that
the additional pixel storage state values PACK_IMAGE_DEPTH_SGIS and
PACK_SKIP_VOLUMES_SGIS affect the storage of the image into memory. The
correspondence of texels to memory locations is as defined for
TexImage4DSGIS above, substituting PACK* state for UNPACK* state in all
occurrences.
Additions to the GLX Specification
None
GLX Protocol
A new GL rendering command is added. This command contains pixel data;
thus it is sent to the server either as part of a glXRender request
or as part of a glXRenderLarge request:
TexImage4DSGIS
2 84+n+p rendering command length
2 2057 rendering command opcode
1 BOOL swap_bytes
1 BOOL lsb_first
2 unused
4 CARD32 row_length
4 CARD32 image_height
4 CARD32 image_depth
4 CARD32 skip_rows
4 CARD32 skip_images
4 CARD32 skip_volumes
4 CARD32 skip_pixels
4 CARD32 alignment
4 ENUM target
4 INT32 level
4 ENUM internalformat
4 INT32 width
4 INT32 height
4 INT32 depth
4 INT32 size4d
4 INT32 border
4 ENUM format
4 ENUM type
4 CARD32 null_image
n LISTofBYTE pixels
p unused, p=pad(n)
If the command is encoded in a glXRenderLarge request, the command
opcode and command length fields above are expanded to 4 bytes each:
4 88+n+p rendering command length
4 2057 rendering command opcode
If <width> < 0, <height> < 0, <depth> < 0, <size4d> < 0, <format> is invalid i
or <type> is invalid, then the command is erroneous and n=0.
<pixels> is arranged as a sequence of adjacent volumes. Each volume is a
3-dimensional image, whose structure is determined by the image depth and the
parameters <image_height>, <swap_bytes>, <lsb_first>, <row_length>, <skip_rows>,
<skip_pixels>, <alignment>, <width>, <format>, and <type> given in the request.
If <image_depth> is not positive then the number of images (i.e., the image
depth) is <depth>; otherwise the number of images is <image_depth>.
<skip_volumes> allows a sub-piece of the 4-dimensional image to be selected.
If <skip_volumes> is positive, then the pointer is advanced by <skip_volumes>
times the number of elements in one 3-dimensional image. Then <size4d>
3-dimensional images are read, each having a subimage extracted in the
manner described in Appendix A of the GLX Protocol Specification.
TexSubImage4DSGIS
2 88+n+p rendering command length
2 2058 rendering command opcode
1 BOOL swap_bytes
1 BOOL lsb_first
2 unused
4 CARD32 row_length
4 CARD32 image_height
4 CARD32 image_depth
4 CARD32 skip_rows
4 CARD32 skip_images
4 CARD32 skip_volumes
4 CARD32 skip_pixels
4 CARD32 alignment
4 ENUM target
4 INT32 level
4 INT32 xoffset
4 INT32 yoffset
4 INT32 zoffset
4 INT32 woffset
4 INT32 width
4 INT32 height
4 INT32 depth
4 INT32 size4d
4 ENUM format
4 ENUM type
4 CARD32 unused
n LISTofBYTE image
p unused, p=pad(n)
If the command is encoded in a glXRenderLarge request, the command
opcode and command length fields above are expanded to 4 bytes each:
4 92+n+p rendering command length
4 2058 rendering command opcode
If <width> < 0, <height> < 0, <depth> < 0, <size4d>, <format> is invalid
or <type> is invalid, then the command is erroneous and n=0.
<pixels> is arranged as a sequence of adjacent volumes. Each volume is a
3-dimensional image, whose structure is determined by the image height, image
depth and the parameters <swap_bytes>, <lsb_first>, <row_length>, <skip_rows>,
<skip_pixels>, <alignment>, <width>, <format>, and <type> given in the request.
If <image_depth> is not positive then the number of 2Dimages (i.e., the volume
depth) is <depth>; otherwise the number of 2Dimages is <image_depth>.
<skip_volumes> allows a sub-volume of the 4-dimensional image to be selected.
If <skip_volumes> is positive, then the pointer is advanced by <skip_volumes>
times the number of elements in one 3-dimensional image. Then <size4d>
3-dimensional images are read, each having a subimage extracted in the
manner described in Appendix A of the GLX Protocol Specification.
Dependencies on EXT_abgr
If EXT_abgr is supported, the <format> parameter of TexImage4DSGIS
accepts ABGR_EXT. Otherwise it does not.
Dependencies on EXT_texture
EXT_texture is required. All of the <components> tokens defined by
EXT_texture are accepted by the <internalformat> parameter of
TexImage4DSGIS, with the same semantics that are defined by EXT_texture.
The query and error extensions defined by EXT_texture are extended in
this document.
Dependencies on EXT_texture3D
EXT_texture3D is required, because the 3-dimensional image support that
it defines is used by this extension, and because it doesn't make sense
to support 4D textures if 3D textures are not supported.
Dependencies on EXT_subtexture
If EXT_subtexture is not supported, this extension does not define
TexSubImage4DSGIS. All discussion of replacing a subset of the image of
an existing 4-dimensional texture is void.
Errors
INVALID_ENUM is generated if TexImage4DSGIS parameter <target> is not
TEXTURE_4D_SGIS.
INVALID_VALUE is generated if TexImage4DSGIS parameter <level> is less
than zero.
INVALID_ENUM is generated if TexImage4DSGIS parameter <internalformat> is
not ALPHA, RGB, RGBA, LUMINANCE, LUMINANCE_ALPHA, or one of the tokens
defined by the EXT_texture extension. (Values 1, 2, 3, and 4 are not
accepted as internal formats by TexImage4DSGIS).
INVALID_VALUE is generated if TexImage4DSGIS parameter <width>, <height>,
or <depth> is less than zero, or cannot be represented as
2**k + 2*border for some integer k.
INVALID_VALUE is generated if TexImage4DSGIS parameter <border> is not 0
or 1.
INVALID_ENUM is generated if TexImage4DSGIS parameter <format> is not
COLOR_INDEX, RED, GREEN, BLUE, ALPHA, RGB, RGBA, LUMINANCE, or
LUMINANCE_ALPHA (or ABGR_EXT if EXT_abgr is supported).
INVALID_ENUM is generated if TexImage4DSGIS parameter <type> is not
UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.
INVALID_OPERATION is generated if TexImage4DSGIS is called between
execution of Begin and the corresponding execution of End.
TEXTURE_TOO_LARGE_SGI is generated if the texture as specified cannot be
accommodated by the implementation. This error will not occur if none
of <width>, <height>, or <depth> is greater than MAX_4D_TEXTURE_SIZE_SGIS.
INVALID_ENUM is generated by TexSubImage4DSGIS if its <target> parameter
is not TEXTURE_4D_SGIS.
INVALID_VALUE is generated by TexSubImage4DSGIS if the specified texture
array has not been defined by a previous TexImage4DSGIS operation.
INVALID_VALUE is generated if TexSubImage4DSGIS parameter <level> is not
equal to zero.
INVALID_VALUE is generated if TexSubImage4DSGIS parameter <width>,
<height>, <depth>, or <extent> is negative.
INVALID_VALUE is generated if TexSubImage4DSGIS parameter <xoffset>,
<yoffset>, <zoffset>, or <woffset> is less than -TEXTURE_BORDER.
INVALID_VALUE is generated by TexSubImage4DSGIS if
(xoffset + width) > (TEXTURE_WIDTH - TEXTURE_BORDER), or if
(yoffset + height) > (TEXTURE_HEIGHT - TEXTURE_BORDER), or if
(zoffset + depth) > (TEXTURE_DEPTH_EXT - TEXTURE_BORDER), or if
(woffset + extent) > (TEXTURE_4DSIZE_SGIS - TEXTURE_BORDER).
INVALID_ENUM is generated if TexSubImage4DSGIS parameter <format> is not
COLOR_INDEX, RED, GREEN, BLUE, ALPHA, RGB, RGBA, LUMINANCE, or
LUMINANCE_ALPHA (or ABGR_EXT if EXT_abgr is supported).
INVALID_ENUM is generated if TexSubImage4DSGIS parameter <type> is not
UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.
INVALID_OPERATION is generated if TexSubImage4DSGIS is called between
execution of Begin and the corresponding execution of End.
New State
Get Value Get Command Type Initial Value Attribute
--------- ----------- ---- ------------- ---------
UNPACK_SKIP_VOLUMES_SGIS GetIntegerv Z+ 0 -
UNPACK_IMAGE_DEPTH_SGIS GetIntegerv Z+ 0 -
PACK_SKIP_VOLUMES_SGIS GetIntegerv Z+ 0 -
PACK_IMAGE_DEPTH_SGIS GetIntegerv Z+ 0 -
TEXTURE_4D_SGIS IsEnabled B FALSE texture/enable
TEXTURE_WRAP_Q_SGIS GetTexParameteriv 1 x Z2 REPEAT texture
TEXTURE_4DSIZE_SGIS GetTexLevelParameteriv 1 x 2 x Z+ 0 -
TEXTURE GetTexImage 4 x 1 x levels x I null -
TEXTURE_RED_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 -
TEXTURE_GREEN_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 -
TEXTURE_BLUE_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 -
TEXTURE_ALPHA_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 -
TEXTURE_LUMINANCE_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 -
TEXTURE_INTENSITY_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 -
TEXTURE_WIDTH GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 -
TEXTURE_HEIGHT GetTexLevelParameteriv 3 x 2 x levels x Z+ 0 -
TEXTURE_DEPTH_EXT GetTexLevelParameteriv 2 x 2 x levels x Z+ 0 -
TEXTURE_BORDER GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 -
TEXTURE_COMPONENTS (1D and 2D) GetTexLevelParameteriv 2 x 2 x levels x Z42 1 -
TEXTURE_COMPONENTS (3D and 4D) GetTexLevelParameteriv 2 x 2 x levels x Z38 LUMINANCE -
TEXTURE_BORDER_COLOR GetTexParameteriv 4 x C 0, 0, 0, 0 texture
TEXTURE_MIN_FILTER GetTexParameteriv 4 x Z7 NEAREST_MIPMAP_LINEAR texture
TEXTURE_MAG_FILTER GetTexParameteriv 4 x Z3 LINEAR texture
TEXTURE_WRAP_S GetTexParameteriv 4 x Z2 REPEAT texture
TEXTURE_WRAP_T GetTexParameteriv 3 x Z2 REPEAT texture
TEXTURE_WRAP_R_EXT GetTexParameteriv 2 x Z2 REPEAT texture
New Implementation Dependent State
Get Value Get Command Type Minimum Value
--------- ----------- ---- -------------
MAX_4D_TEXTURE_SIZE_SGIS GetIntegerv Z+ 16