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 parameter of TexImage3DOES, TexSubImage3DOES, CopyTexSubImage3DOES, CompressedTexImage3DOES and CompressedTexSubImage3DOES, GetTexParameteriv, and GetTexParameterfv: TEXTURE_3D_OES 0x806F Accepted by the parameter of TexParameteriv, TexParameterfv, GetTexParameteriv, and GetTexParameterfv: TEXTURE_WRAP_R_OES 0x8072 Accepted by the 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, must match . Please refer to table 3.1 of the OpenGL ES 2.0 specification for a list of valid and 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