1Name
2
3    NV_deep_texture3D
4
5Name Strings
6
7    GL_NV_deep_texture3D
8
9Contact
10
11    Eric Werness, NVIDIA Corporation (ewerness 'at' nvidia.com)
12
13Status
14
15    Shipping.
16
17Version
18
19    Last Modified Date:         April 12, 2010
20    Revision:                   1
21
22Number
23
24    424
25
26Dependencies
27
28    This extension is written against the OpenGL 3.2 specification (Core
29    Profile).
30
31Overview
32
33    Some applications require 3D textures that have a significant number of
34    slices, but less resolution in width and height. In the current spec, the
35    maximum value for the size of all three dimensions is specified by a
36    single value. This extension adds a second set of limits against which 3D
37    textures can be checked if an application needs deeper textures than would
38    be allowed by the symmetric texture limits.
39
40New Procedures and Functions
41
42    None
43
44New Tokens
45
46    Accepted by the <pname> parameter of GetBooleanv, GetDoublev, GetIntegerv
47    and GetFloatv:
48
49        MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV              0x90D0
50        MAX_DEEP_3D_TEXTURE_DEPTH_NV                     0x90D1
51
52Additions to Chapter 2 of the OpenGL 3.2 Specification (OpenGL Operation)
53
54    None
55
56Additions to Chapter 3 of the OpenGL 3.2 Specification (Rasterization)
57
58    (modify 3.8.1 Texture Image Specification on p. 141
59
60    (add to the discussion of the maximum allowable size of a 3D texture)
61
62    If the width and height of the texel array for a three-dimensional texture
63    are both less than pow(2, j-lod) + 2Bt where j is the log base 2 of
64    MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV, then the depth may be up to pow(2,
65    m-lod) + 2Bt where m is the log base 2 of MAX_DEEP_3D_TEXTURE_DEPTH_NV.
66    The error INVALID_VALUE is generated if the specified image is too large
67    to be stored under any conditions.
68
69Additions to Chapter 4 of the OpenGL 3.2 Specification (Per-Fragment Operations
70and the Frame Buffer)
71
72    (modify the discussion of FramebufferTexture in 4.4 on p. 228)
73    
74    If textarget is TEXTURE_3D, then level must be greater than or equal to zero
75    and less than or equal to log2 of the larger of the values of
76    MAX_3D_TEXTURE_SIZE and MAX_DEEP_3D_TEXTURE_DEPTH_NV.
77
78    ...
79
80    layer specifies the layer of a 2-dimensional image within a 3-dimensional
81    texture.  An INVALID_VALUE error is generated if layer is larger than the
82    larger of the value of MAX_DEEP_3D_TEXTURE_DEPTH_NV-1 and the value of
83    MAX_3D_TEXTURE_SIZE-1.
84
85Additions to Chapter 5 of the OpenGL 3.2 Specification (Special Functions)
86
87    None
88
89Additions to Chapter 6 of the OpenGL 3.2 Specification (State and
90State Requests)
91
92    None
93
94Additions to the AGL/GLX/WGL Specifications
95
96    None
97
98Errors
99
100    None
101
102New State
103
104    None
105
106New Implementation Dependent State
107
108    (add to Table 6.37, p. 302)
109
110                                                    Minimum
111    Get Value                            Type  Get Command  Value  Description         Sec.  Attribute
112    ----------------------------         ----  ----------- ------- ------------------  ----- ---------
113    MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV   Z+   GetIntegerv   64    maximum width and   3.8.1     -
114                                                                   height for deep 3D
115                                                                   textures
116    MAX_DEEP_3D_TEXTURE_DEPTH_NV          Z+   GetIntegerv   64    maximum depth for   3.8.1     -
117                                                                   deep 3D textures
118
119
120Issues
121
122    1) Does this spec require that the texture exposed actually be deep?
123
124    RESOLVED: No. The spec doesn't require that MAX_DEEP_3D_TEXTURE_DEPTH is
125    actually greater than MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT, though the spec is
126    pointless if that isn't the case.
127
128    2) Does the spec guarantee that the entire 3D texture can be bound for
129       rendering?
130
131    RESOLVED: No. The framebuffer may be unsupported at the implementation's
132    discretion. Rendering to a single layer at a time may be supported even if
133    binding the entire 3D texture is unsupported. This is the case with the
134    initial NVIDIA implementation.
135
136Revision History
137
138    Rev.    Date    Author    Changes
139    ----  --------  --------  -----------------------------------------
140    1               ewerness  Internal spec development.
141