blob: 26b2a619c1f38b21e6f24e78f93e21a5ed30695c [file] [log] [blame]
Name
NV_deep_texture3D
Name Strings
GL_NV_deep_texture3D
Contact
Eric Werness, NVIDIA Corporation (ewerness 'at' nvidia.com)
Status
Shipping.
Version
Last Modified Date: April 12, 2010
Revision: 1
Number
424
Dependencies
This extension is written against the OpenGL 3.2 specification (Core
Profile).
Overview
Some applications require 3D textures that have a significant number of
slices, but less resolution in width and height. In the current spec, the
maximum value for the size of all three dimensions is specified by a
single value. This extension adds a second set of limits against which 3D
textures can be checked if an application needs deeper textures than would
be allowed by the symmetric texture limits.
New Procedures and Functions
None
New Tokens
Accepted by the <pname> parameter of GetBooleanv, GetDoublev, GetIntegerv
and GetFloatv:
MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1
Additions to Chapter 2 of the OpenGL 3.2 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the OpenGL 3.2 Specification (Rasterization)
(modify 3.8.1 Texture Image Specification on p. 141
(add to the discussion of the maximum allowable size of a 3D texture)
If the width and height of the texel array for a three-dimensional texture
are both less than pow(2, j-lod) + 2Bt where j is the log base 2 of
MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV, then the depth may be up to pow(2,
m-lod) + 2Bt where m is the log base 2 of MAX_DEEP_3D_TEXTURE_DEPTH_NV.
The error INVALID_VALUE is generated if the specified image is too large
to be stored under any conditions.
Additions to Chapter 4 of the OpenGL 3.2 Specification (Per-Fragment Operations
and the Frame Buffer)
(modify the discussion of FramebufferTexture in 4.4 on p. 228)
If textarget is TEXTURE_3D, then level must be greater than or equal to zero
and less than or equal to log2 of the larger of the values of
MAX_3D_TEXTURE_SIZE and MAX_DEEP_3D_TEXTURE_DEPTH_NV.
...
layer specifies the layer of a 2-dimensional image within a 3-dimensional
texture. An INVALID_VALUE error is generated if layer is larger than the
larger of the value of MAX_DEEP_3D_TEXTURE_DEPTH_NV-1 and the value of
MAX_3D_TEXTURE_SIZE-1.
Additions to Chapter 5 of the OpenGL 3.2 Specification (Special Functions)
None
Additions to Chapter 6 of the OpenGL 3.2 Specification (State and
State Requests)
None
Additions to the AGL/GLX/WGL Specifications
None
Errors
None
New State
None
New Implementation Dependent State
(add to Table 6.37, p. 302)
Minimum
Get Value Type Get Command Value Description Sec. Attribute
---------------------------- ---- ----------- ------- ------------------ ----- ---------
MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV Z+ GetIntegerv 64 maximum width and 3.8.1 -
height for deep 3D
textures
MAX_DEEP_3D_TEXTURE_DEPTH_NV Z+ GetIntegerv 64 maximum depth for 3.8.1 -
deep 3D textures
Issues
1) Does this spec require that the texture exposed actually be deep?
RESOLVED: No. The spec doesn't require that MAX_DEEP_3D_TEXTURE_DEPTH is
actually greater than MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT, though the spec is
pointless if that isn't the case.
2) Does the spec guarantee that the entire 3D texture can be bound for
rendering?
RESOLVED: No. The framebuffer may be unsupported at the implementation's
discretion. Rendering to a single layer at a time may be supported even if
binding the entire 3D texture is unsupported. This is the case with the
initial NVIDIA implementation.
Revision History
Rev. Date Author Changes
---- -------- -------- -----------------------------------------
1 ewerness Internal spec development.