| Name |
| |
| NV_depth_nonlinear |
| |
| Name Strings |
| |
| GL_NV_depth_nonlinear |
| EGL_NV_depth_nonlinear |
| |
| Contact |
| |
| Gary King, NVIDIA Corporation (gking 'at' nvidia.com) |
| |
| Notice |
| |
| Copyright NVIDIA Corporation, 2005 - 2007. |
| |
| Status |
| |
| NVIDIA Proprietary |
| |
| Version |
| |
| Last Modified: 2007/03/20 |
| NVIDIA Revision: 1.0 |
| |
| Number |
| |
| EGL Extension #18 |
| OpenGL ES Extension #73 |
| |
| Dependencies |
| |
| Written based on the wording of the OpenGL 2.0 Specification and |
| EGL 1.2 Specification. |
| |
| Requires EGL 1.1. |
| |
| Requires OpenGL-ES 1.0. |
| |
| OES_framebuffer_object affects the wording of this specification. |
| |
| Overview |
| |
| Due to the perspective divide, conventional integer Z-buffers have |
| a hyperbolic distribution of encodings between the near plane |
| and the far plane. This can result in inaccurate depth testing, |
| particularly when the number of depth buffer bits is small |
| and objects are rendered near the far plane. |
| |
| Particularly when the number of depth buffer bits is limited |
| (desirable and/or required in low-memory environments), artifacts |
| due to this loss of precision may occur even with relatively |
| modest far plane-to-near plane ratios (e.g., greater than 100:1). |
| |
| Many attempts have been made to provide alternate encodings for |
| Z-buffer (or alternate formulations for the stored depth) to |
| reduce the artifacts caused by perspective division, such as |
| W-buffers, Z-complement buffers and floating-point 1-Z buffers. |
| |
| This extension adds a non-linear encoded Z buffer to OpenGL, |
| which can improve the practically useful range of, e.g. 16-bit |
| depth buffers by up to a factor of 16, greatly improving depth |
| test quality in applications where the ratio between the near |
| and far planes can not be as tightly controlled. |
| |
| IP Status |
| |
| NVIDIA Proprietary |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted as a valid sized internal format by all functions accepting |
| sized internal formats with a base format of DEPTH_COMPONENT |
| |
| DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C |
| |
| Accepted by the <attrib_list> parameter of eglChooseConfig and |
| eglCreatePbufferSurface, and by the <attribute> parameter of |
| eglGetConfigAttrib |
| |
| EGL_DEPTH_ENCODING_NV 0x30E2 |
| |
| Accepted as a value in the <attrib_list> parameter of eglChooseConfig |
| and eglCreatePbufferSurface, and returned in the <value> parameter |
| of eglGetConfigAttrib |
| |
| EGL_DEPTH_ENCODING_NONE_NV 0 |
| EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 |
| |
| Changes to the OpenGL 2.0 Specification |
| |
| Add the following line to table 3.16 (p. 154) |
| |
| +--------------------------------+-----------------+------+ |
| | Sized Internal Format | Base Internal | D | |
| | | Format | Bits | |
| +--------------------------------+-----------------+------+ |
| | DEPTH_COMPONENT16_NONLINEAR_NV | DEPTH_COMPONENT | 16 | |
| +--------------------------------+-----------------+------+ |
| |
| Changes to the EGL 1.2 Specification |
| |
| Add the following line to table 3.1 (p. 14) |
| |
| +--------------------------+------+---------------------------------------+ |
| | Attribute | Type | Notes | |
| +--------------------------+------+---------------------------------------+ |
| | EGL_DEPTH_ENCODING_NV | enum | Type of depth-buffer encoding employed| |
| +--------------------------+------+---------------------------------------+ |
| |
| Modify the description of the depth buffer in Section 3.4 (p. 15) |
| |
| "The depth buffer is used only by OpenGL ES. It contains fragment depth |
| (Z) information generated during rasterization. EGL_DEPTH_SIZE indicates |
| the depth of this buffer in bits, and EGL_DEPTH_ENCODING_NV indicates which |
| alternate depth-buffer encoding (if any) should be used. Legal values for |
| EGL_DEPTH_ENCODING_NV are: EGL_DONT_CARE, EGL_DEPTH_ENCODING_NONE_NV and |
| EGL_DEPTH_ENCODING_NONLINEAR_NV." |
| |
| Add the following line to table 3.4 (p. 20) |
| |
| +-----------------------+---------------+-----------+-------+----------+ |
| | Attribute | Default | Selection | Sort | Sort | |
| | | | Criteria | Order | Priority | |
| +-----------------------+---------------+-----------+-------+----------+ |
| | EGL_DEPTH_ENCODING_NV | EGL_DONT_CARE | Exact | None | - | |
| +-----------------------+---------------+-------------------+----------+ |
| |
| Issues |
| |
| None |
| |
| Revision History |
| |
| #1.0 - 20.03.2007 |
| |
| Renumbered enumerants. Reformatted to 80 columns. |