1Name 2 3 NV_depth_nonlinear 4 5Name Strings 6 7 GL_NV_depth_nonlinear 8 EGL_NV_depth_nonlinear 9 10Contact 11 12 Gary King, NVIDIA Corporation (gking 'at' nvidia.com) 13 14Notice 15 16 Copyright NVIDIA Corporation, 2005 - 2007. 17 18Status 19 20 NVIDIA Proprietary 21 22Version 23 24 Last Modified: 2007/03/20 25 NVIDIA Revision: 1.0 26 27Number 28 29 EGL Extension #18 30 OpenGL ES Extension #73 31 32Dependencies 33 34 Written based on the wording of the OpenGL 2.0 Specification and 35 EGL 1.2 Specification. 36 37 Requires EGL 1.1. 38 39 Requires OpenGL-ES 1.0. 40 41 OES_framebuffer_object affects the wording of this specification. 42 43Overview 44 45 Due to the perspective divide, conventional integer Z-buffers have 46 a hyperbolic distribution of encodings between the near plane 47 and the far plane. This can result in inaccurate depth testing, 48 particularly when the number of depth buffer bits is small 49 and objects are rendered near the far plane. 50 51 Particularly when the number of depth buffer bits is limited 52 (desirable and/or required in low-memory environments), artifacts 53 due to this loss of precision may occur even with relatively 54 modest far plane-to-near plane ratios (e.g., greater than 100:1). 55 56 Many attempts have been made to provide alternate encodings for 57 Z-buffer (or alternate formulations for the stored depth) to 58 reduce the artifacts caused by perspective division, such as 59 W-buffers, Z-complement buffers and floating-point 1-Z buffers. 60 61 This extension adds a non-linear encoded Z buffer to OpenGL, 62 which can improve the practically useful range of, e.g. 16-bit 63 depth buffers by up to a factor of 16, greatly improving depth 64 test quality in applications where the ratio between the near 65 and far planes can not be as tightly controlled. 66 67IP Status 68 69 NVIDIA Proprietary 70 71New Procedures and Functions 72 73 None 74 75New Tokens 76 77 Accepted as a valid sized internal format by all functions accepting 78 sized internal formats with a base format of DEPTH_COMPONENT 79 80 DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C 81 82 Accepted by the <attrib_list> parameter of eglChooseConfig and 83 eglCreatePbufferSurface, and by the <attribute> parameter of 84 eglGetConfigAttrib 85 86 EGL_DEPTH_ENCODING_NV 0x30E2 87 88 Accepted as a value in the <attrib_list> parameter of eglChooseConfig 89 and eglCreatePbufferSurface, and returned in the <value> parameter 90 of eglGetConfigAttrib 91 92 EGL_DEPTH_ENCODING_NONE_NV 0 93 EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 94 95Changes to the OpenGL 2.0 Specification 96 97 Add the following line to table 3.16 (p. 154) 98 99 +--------------------------------+-----------------+------+ 100 | Sized Internal Format | Base Internal | D | 101 | | Format | Bits | 102 +--------------------------------+-----------------+------+ 103 | DEPTH_COMPONENT16_NONLINEAR_NV | DEPTH_COMPONENT | 16 | 104 +--------------------------------+-----------------+------+ 105 106Changes to the EGL 1.2 Specification 107 108 Add the following line to table 3.1 (p. 14) 109 110 +--------------------------+------+---------------------------------------+ 111 | Attribute | Type | Notes | 112 +--------------------------+------+---------------------------------------+ 113 | EGL_DEPTH_ENCODING_NV | enum | Type of depth-buffer encoding employed| 114 +--------------------------+------+---------------------------------------+ 115 116 Modify the description of the depth buffer in Section 3.4 (p. 15) 117 118 "The depth buffer is used only by OpenGL ES. It contains fragment depth 119 (Z) information generated during rasterization. EGL_DEPTH_SIZE indicates 120 the depth of this buffer in bits, and EGL_DEPTH_ENCODING_NV indicates which 121 alternate depth-buffer encoding (if any) should be used. Legal values for 122 EGL_DEPTH_ENCODING_NV are: EGL_DONT_CARE, EGL_DEPTH_ENCODING_NONE_NV and 123 EGL_DEPTH_ENCODING_NONLINEAR_NV." 124 125 Add the following line to table 3.4 (p. 20) 126 127 +-----------------------+---------------+-----------+-------+----------+ 128 | Attribute | Default | Selection | Sort | Sort | 129 | | | Criteria | Order | Priority | 130 +-----------------------+---------------+-----------+-------+----------+ 131 | EGL_DEPTH_ENCODING_NV | EGL_DONT_CARE | Exact | None | - | 132 +-----------------------+---------------+-------------------+----------+ 133 134Issues 135 136 None 137 138Revision History 139 140#1.0 - 20.03.2007 141 142 Renumbered enumerants. Reformatted to 80 columns. 143