15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NV_depth_nonlinear 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NV_depth_nonlinear 85bd8deadSopenharmony_ci EGL_NV_depth_nonlinear 95bd8deadSopenharmony_ci 105bd8deadSopenharmony_ciContact 115bd8deadSopenharmony_ci 125bd8deadSopenharmony_ci Gary King, NVIDIA Corporation (gking 'at' nvidia.com) 135bd8deadSopenharmony_ci 145bd8deadSopenharmony_ciNotice 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ci Copyright NVIDIA Corporation, 2005 - 2007. 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciStatus 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci NVIDIA Proprietary 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ciVersion 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ci Last Modified: 2007/03/20 255bd8deadSopenharmony_ci NVIDIA Revision: 1.0 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ciNumber 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ci EGL Extension #18 305bd8deadSopenharmony_ci OpenGL ES Extension #73 315bd8deadSopenharmony_ci 325bd8deadSopenharmony_ciDependencies 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ci Written based on the wording of the OpenGL 2.0 Specification and 355bd8deadSopenharmony_ci EGL 1.2 Specification. 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci Requires EGL 1.1. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci Requires OpenGL-ES 1.0. 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci OES_framebuffer_object affects the wording of this specification. 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ciOverview 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci Due to the perspective divide, conventional integer Z-buffers have 465bd8deadSopenharmony_ci a hyperbolic distribution of encodings between the near plane 475bd8deadSopenharmony_ci and the far plane. This can result in inaccurate depth testing, 485bd8deadSopenharmony_ci particularly when the number of depth buffer bits is small 495bd8deadSopenharmony_ci and objects are rendered near the far plane. 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci Particularly when the number of depth buffer bits is limited 525bd8deadSopenharmony_ci (desirable and/or required in low-memory environments), artifacts 535bd8deadSopenharmony_ci due to this loss of precision may occur even with relatively 545bd8deadSopenharmony_ci modest far plane-to-near plane ratios (e.g., greater than 100:1). 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci Many attempts have been made to provide alternate encodings for 575bd8deadSopenharmony_ci Z-buffer (or alternate formulations for the stored depth) to 585bd8deadSopenharmony_ci reduce the artifacts caused by perspective division, such as 595bd8deadSopenharmony_ci W-buffers, Z-complement buffers and floating-point 1-Z buffers. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci This extension adds a non-linear encoded Z buffer to OpenGL, 625bd8deadSopenharmony_ci which can improve the practically useful range of, e.g. 16-bit 635bd8deadSopenharmony_ci depth buffers by up to a factor of 16, greatly improving depth 645bd8deadSopenharmony_ci test quality in applications where the ratio between the near 655bd8deadSopenharmony_ci and far planes can not be as tightly controlled. 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ciIP Status 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci NVIDIA Proprietary 705bd8deadSopenharmony_ci 715bd8deadSopenharmony_ciNew Procedures and Functions 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci None 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ciNew Tokens 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci Accepted as a valid sized internal format by all functions accepting 785bd8deadSopenharmony_ci sized internal formats with a base format of DEPTH_COMPONENT 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ci DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci Accepted by the <attrib_list> parameter of eglChooseConfig and 835bd8deadSopenharmony_ci eglCreatePbufferSurface, and by the <attribute> parameter of 845bd8deadSopenharmony_ci eglGetConfigAttrib 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci EGL_DEPTH_ENCODING_NV 0x30E2 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ci Accepted as a value in the <attrib_list> parameter of eglChooseConfig 895bd8deadSopenharmony_ci and eglCreatePbufferSurface, and returned in the <value> parameter 905bd8deadSopenharmony_ci of eglGetConfigAttrib 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci EGL_DEPTH_ENCODING_NONE_NV 0 935bd8deadSopenharmony_ci EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 945bd8deadSopenharmony_ci 955bd8deadSopenharmony_ciChanges to the OpenGL 2.0 Specification 965bd8deadSopenharmony_ci 975bd8deadSopenharmony_ci Add the following line to table 3.16 (p. 154) 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci +--------------------------------+-----------------+------+ 1005bd8deadSopenharmony_ci | Sized Internal Format | Base Internal | D | 1015bd8deadSopenharmony_ci | | Format | Bits | 1025bd8deadSopenharmony_ci +--------------------------------+-----------------+------+ 1035bd8deadSopenharmony_ci | DEPTH_COMPONENT16_NONLINEAR_NV | DEPTH_COMPONENT | 16 | 1045bd8deadSopenharmony_ci +--------------------------------+-----------------+------+ 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ciChanges to the EGL 1.2 Specification 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci Add the following line to table 3.1 (p. 14) 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ci +--------------------------+------+---------------------------------------+ 1115bd8deadSopenharmony_ci | Attribute | Type | Notes | 1125bd8deadSopenharmony_ci +--------------------------+------+---------------------------------------+ 1135bd8deadSopenharmony_ci | EGL_DEPTH_ENCODING_NV | enum | Type of depth-buffer encoding employed| 1145bd8deadSopenharmony_ci +--------------------------+------+---------------------------------------+ 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci Modify the description of the depth buffer in Section 3.4 (p. 15) 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ci "The depth buffer is used only by OpenGL ES. It contains fragment depth 1195bd8deadSopenharmony_ci (Z) information generated during rasterization. EGL_DEPTH_SIZE indicates 1205bd8deadSopenharmony_ci the depth of this buffer in bits, and EGL_DEPTH_ENCODING_NV indicates which 1215bd8deadSopenharmony_ci alternate depth-buffer encoding (if any) should be used. Legal values for 1225bd8deadSopenharmony_ci EGL_DEPTH_ENCODING_NV are: EGL_DONT_CARE, EGL_DEPTH_ENCODING_NONE_NV and 1235bd8deadSopenharmony_ci EGL_DEPTH_ENCODING_NONLINEAR_NV." 1245bd8deadSopenharmony_ci 1255bd8deadSopenharmony_ci Add the following line to table 3.4 (p. 20) 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ci +-----------------------+---------------+-----------+-------+----------+ 1285bd8deadSopenharmony_ci | Attribute | Default | Selection | Sort | Sort | 1295bd8deadSopenharmony_ci | | | Criteria | Order | Priority | 1305bd8deadSopenharmony_ci +-----------------------+---------------+-----------+-------+----------+ 1315bd8deadSopenharmony_ci | EGL_DEPTH_ENCODING_NV | EGL_DONT_CARE | Exact | None | - | 1325bd8deadSopenharmony_ci +-----------------------+---------------+-------------------+----------+ 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ciIssues 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci None 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ciRevision History 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci#1.0 - 20.03.2007 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci Renumbered enumerants. Reformatted to 80 columns. 143