OES_texture_3D

Name

OES_texture_3D

Name Strings

GL_OES_texture_3D

Contributors

Benj Lipchak
Robert Simpson

Contact

Aaftab Munshi (amunshi@apple.com)

Notice

Copyright (c) 2005-2013 The Khronos Group Inc. Copyright terms at
    http://www.khronos.org/registry/speccopyright.html

Specification Update Policy

Khronos-approved extension specifications are updated in response to
issues and bugs prioritized by the Khronos OpenGL ES Working Group. For
extensions which have been promoted to a core Specification, fixes will
first appear in the latest version of that core Specification, and will
eventually be backported to the extension document. This policy is
described in more detail at
    https://www.khronos.org/registry/OpenGL/docs/update_policy.php

IP Status

None.

Status

Ratified by the Khronos BOP, July 22, 2005.

Version

Last Modifed Date: July 24, 2007

Number

OpenGL ES Extension #34    

Dependencies

OpenGL ES 2.0 is required.

Overview

This extension adds support for 3D textures.  The OpenGL ES 2.0 texture wrap
modes and mip-mapping is supported for power of two 3D textures.  Mip-
mapping and texture wrap modes other than CLAMP_TO_EDGE are not supported 
for non-power of two 3D textures.

The OES_texture_npot extension, if supported, will enable mip-mapping and 
other wrap modes for non-power of two 3D textures.

Issues

None.

New Tokens

Accepted by the <target> parameter of TexImage3DOES, TexSubImage3DOES, 
CopyTexSubImage3DOES, CompressedTexImage3DOES and 
CompressedTexSubImage3DOES, GetTexParameteriv, and GetTexParameterfv:

    TEXTURE_3D_OES              0x806F

Accepted by the <pname> parameter of TexParameteriv, TexParameterfv,
GetTexParameteriv, and GetTexParameterfv:

    TEXTURE_WRAP_R_OES          0x8072

Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, and 
GetFloatv:

    MAX_3D_TEXTURE_SIZE_OES     0x8073
    TEXTURE_BINDING_3D_OES      0x806A

New Procedures and Functions

void TexImage3DOES(enum target, int level, enum internalFormat, 
                   sizei width, sizei height, sizei depth, int border, 
                   enum format, enum type, const void *pixels)

Similar to 2D textures and cubemaps,  <internalFormat> must match <format>.
Please refer to table 3.1 of the OpenGL ES 2.0 specification for a list of 
valid <format> and <type> values.  No texture borders are supported.

void TexSubImage3DOES(enum target, int level, 
                      int xoffset, int yoffset, int zoffset, 
                      sizei width, sizei height, sizei depth, 
                      enum format, enum type, const void *pixels)

void CopyTexSubImage3DOES(enum target, int level, 
                          int xoffset, int yoffset, int zoffset, 
                          int x, int y, sizei width, sizei height)

CopyTexSubImage3DOES is supported.  The internal format parameter can be 
any of the base internal formats described for TexImage2D and TexImage3DOES 
subject to the constraint that color buffer components can be dropped during
the conversion to the base internal format, but new components cannot be 
added.  For example, an RGB color buffer can be used to create LUMINANCE or 
RGB textures, but not ALPHA, LUMINANCE_ALPHA, or RGBA textures.  Table 3.3 
of the OpenGL ES 2.0 specification summarizes the allowable framebuffer and 
base internal format combinations.

void CompressedTexImage3DOES(enum target, int level, enum internalformat, 
                             sizei width, sizei height, sizei depth, 
                             int border, sizei imageSize, const void *data)

void CompressedTexSubImage3DOES(enum target, int level, 
                                int xoffset, int yoffset, int zoffset, 
                                sizei width, sizei height, sizei depth, 
                                enum format, sizei imageSize, 
                                const void *data)

void FramebufferTexture3DOES(enum target, enum attachment,
                             enum textarget, uint texture,
                             int level, int zoffset);

FramebufferTexture3DOES is derived from FramebufferTexture3DEXT.  Please 
refer to the EXT_framebuffer_object extension specification for a detailed 
description of FramebufferTexture3DEXT.  The only difference is that 
FramebufferTexture3DOES can be used to render directly into the base level 
of a 3D texture image only.  The OES_fbo_render_mipmap extension removes
this limitation and allows rendering to any mip-level of a 3D texture.

New Keywords

sampler3D

Grammar changes

The token SAMPLER3D is added to the list of tokens returned from lexical 
analysis and the type_specifier_no_prec production.

New Built-in Functions

texture3D()
texture3DProj()  
texture3DLod()
texture3DProjLod()

New Macro Definitions

#define GL_OES_texture_3D 1

Additions to Chapter 4 of the OpenGL ES Shading Language specification:

Add the following to the table of basic types in section 4.1:

Type:
    sampler3D

Meaning:
    a handle for accessing a 3D texture

Additions to Chapter 8 of the OpenGL ES Shading Language specification:

Add the following to the table of built-in functions in section 8.7:

The built-in texture lookup functions texture3D, texture3DProj, 
texture3DLod, and texture3DProjLod are optional, and must be enabled by

#extension GL_OES_texture_3D : enable

before being used.  

Syntax:
    vec4 texture3D (sampler3D sampler, vec3 coord [, float bias] )
    vec4 texture3DProj (sampler3D sampler, vec4 coord [, float bias] )
    vec4 texture3DLod (sampler3D sampler, vec3 coord, float lod)
    vec4 texture3DProjLod (sampler3D sampler, vec4 coord, float lod)

Description:
    Use the texture coordinate coord to do a texture lookup in the 3D 
    texture currently bound to sampler.  For the projective ("Proj") 
    versions, the texture coordinate is divided by coord.q.

Errors

None.

New State

Get Value Type Get Command Value Description ——— —- ———– —– ———– TEXTURE_BINDING_3D_OES Z+ GetIntegerv 0 texture object bound to TEXTURE_3D TEXTURE_WRAP_R_OES 1xZ2 GetTexParameteriv REPEAT texture coord "r" wrap mode MAX_3D_TEXTURE_SIZE_OES Z+ GetIntegerv 16 maximum 3D texture image dimension

Revision History

7/06/2005 Aaftab Munshi Created the extension 6/09/2006 Aaftab Munshi Added OES suffixes 7/24/2007 Benj Lipchak Merged in details of language changes, removed OES_framebuffer_object requirement (now core), reformatted to 80 columns