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