15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NV_conservative_raster_pre_snap 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NV_conservative_raster_pre_snap 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Kedarnath Thangudu, NVIDIA Corporation (kthangudu 'at' nvidia.com) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciContributors 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Eric Werness, NVIDIA Corporation 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciStatus 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci Shipping in NVIDIA release 388.XX drivers and up 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciVersion 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci Last Modified Date: November 15, 2017 245bd8deadSopenharmony_ci Revision: 1 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ciNumber 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ci OpenGL Extension #517 295bd8deadSopenharmony_ci OpenGL ES Extension #297 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ciDependencies 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci This extension is written against the NV_conservative_raster_pre_snap- 345bd8deadSopenharmony_ci _triangles extension as applied to OpenGL 4.3 specification 355bd8deadSopenharmony_ci (Compatibility Profile) but may be used with the Core profile or OpenGL ES 365bd8deadSopenharmony_ci 2.0 or later. 375bd8deadSopenharmony_ci 385bd8deadSopenharmony_ciOverview 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ci NV_conservative_raster_pre_snap_triangles provides a new mode to achieve 415bd8deadSopenharmony_ci rasterization of triangles that is conservative w.r.t the triangle at 425bd8deadSopenharmony_ci infinite precision i.e. before it is snapped to the sub-pixel grid. This 435bd8deadSopenharmony_ci extension provides a new mode that expands this functionality to lines and 445bd8deadSopenharmony_ci points. 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ciNew Procedures and Functions 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ci None. 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ciNew Tokens 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci Accepted by the <param> parameter of ConservativeRasterParameteriNV: 535bd8deadSopenharmony_ci CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ciAdditions to Chapter 14 of the OpenGL 4.3 (Compatibility Profile) Specification 565bd8deadSopenharmony_ci(Fixed-Function Primitive Assembly and Rasterization) 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ci Modify the paragraph describing ConservativeRasterParameteriNV in the 595bd8deadSopenharmony_ci subsection 14.6.X "Conservative Rasterization" added by NV_conservative_- 605bd8deadSopenharmony_ci raster_pre_snap_triangles 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ci ... The <param> parameter specifies the conservative raster mode to be 635bd8deadSopenharmony_ci used. If the mode is set to CONSERVATIVE_RASTER_MODE_POST_SNAP_NV, the 645bd8deadSopenharmony_ci generated fragments are conservative w.r.t the primitive after it is 655bd8deadSopenharmony_ci snapped to sub-pixel grid. If the mode is set to CONSERVATIVE_RASTER_MODE_- 665bd8deadSopenharmony_ci PRE_SNAP_NV the fragments generated for a primitive will be conservative 675bd8deadSopenharmony_ci w.r.t the primitive at infinite precision. Since non-degenerate 685bd8deadSopenharmony_ci primitives may become degenerate due to vertex snapping, this mode will 695bd8deadSopenharmony_ci generate fragments for zero length lines and zero area triangles which are 705bd8deadSopenharmony_ci otherwise culled in the CONSERVATIVE_RASTER_MODE_POST_SNAP_NV. This mode 715bd8deadSopenharmony_ci may also generate fragments for pixels that are within half a sub-pixel 725bd8deadSopenharmony_ci distance away from the primitive at infinite precision. If the mode is 735bd8deadSopenharmony_ci set to CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV, the pre-snap 745bd8deadSopenharmony_ci conservative raster behavior described would apply only to triangles. The 755bd8deadSopenharmony_ci default mode is set to CONSERVATIVE_RASTER_MODE_POST_SNAP_NV. 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci Modify the paragraphs describing conservative rasterization behavior for 785bd8deadSopenharmony_ci points, lines and polygons added by NV_conservative_raster as follows: 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ci If CONSERVATIVE_RASTERIZATION_NV is enabled, points are rasterized 815bd8deadSopenharmony_ci according to point rasterization rules (section 14.4), except that a 825bd8deadSopenharmony_ci fragment will be generated for a framebuffer pixel if the point's region 835bd8deadSopenharmony_ci (a circle when MULTISAMPLING is enabled and POINT_SPRITE is disabled, or a 845bd8deadSopenharmony_ci square otherwise) covers any portion of the pixel, including its edges or 855bd8deadSopenharmony_ci points. While conservative raster mode PRE_SNAP_NV respects the 865bd8deadSopenharmony_ci MULTISAMPLE state, modes POST_SNAP_NV and PRE_SNAP_TRIANGLES_NV always use 875bd8deadSopenharmony_ci point multisample rasterization rules (section 14.4.3), whether or not 885bd8deadSopenharmony_ci MULTISAMPLE is actually enabled. When performing conservative 895bd8deadSopenharmony_ci rasterization of points, the POINT_SMOOTH enable is ignored and treated as 905bd8deadSopenharmony_ci disabled. 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci If CONSERVATIVE_RASTERIZATION_NV is enabled, lines are rasterized 935bd8deadSopenharmony_ci according to line rasterization rules (section 14.5), except that the 945bd8deadSopenharmony_ci LINE_STIPPLE and LINE_SMOOTH enables are ignored and treated as disabled. 955bd8deadSopenharmony_ci When the conservative raster mode is POST_SNAP or PRE_SNAP_TRIANGLES, 965bd8deadSopenharmony_ci lines with zero length generate no fragments, while a fragment for the 975bd8deadSopenharmony_ci pixel that contains the end points will be generated when the mode is 985bd8deadSopenharmony_ci PRE_SNAP_NV. Also, conservative raster mode PRE_SNAP_NV respects the 995bd8deadSopenharmony_ci MULTISAMPLE state, while modes POST_SNAP_NV and PRE_SNAP_TRIANGLES_NV 1005bd8deadSopenharmony_ci always use line multisample rasterization rules (section 14.5.4), whether 1015bd8deadSopenharmony_ci or not MULTISAMPLE is actually enabled. 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci If CONSERVATIVE_RASTERIZATION_NV is enabled, polygons are rasterized 1045bd8deadSopenharmony_ci according to polygon rasterization rules (section 14.6), except that 1055bd8deadSopenharmony_ci the POLYGON_SMOOTH enable is ignored and treated as disabled. 1065bd8deadSopenharmony_ci When the conservative raster mode is POST_SNAP_NV, polygons with 1075bd8deadSopenharmony_ci an area of zero generate no fragments, even for pixels that contain a 1085bd8deadSopenharmony_ci vertex or edge of the zero-area polygon, while modes PRE_SNAP_TRIANGLES 1095bd8deadSopenharmony_ci and PRE_SNAP_NV generate them. Also, conservative raster mode PRE_SNAP_NV 1105bd8deadSopenharmony_ci respects the MULTISAMPLE state, while modes POST_SNAP_NV and 1115bd8deadSopenharmony_ci PRE_SNAP_TRIANGLES_NV always use polygon multisample rasterization rules 1125bd8deadSopenharmony_ci (section 14.6.6), whether or not MULTISAMPLE is actually enabled. 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ciNew State 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci None. 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci None. 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ciGLX Protocol 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci None. 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ciModifications to the OpenGL Shading Language Specification, Version 4.30 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci None. 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ciErrors 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ci INVALID_ENUM is generated by ConservativeRasterParameteriNV if <pname> is 1335bd8deadSopenharmony_ci not CONSERVATIVE_RASTER_MODE_NV, or if <param> is not CONSERVATIVE_RASTER_- 1345bd8deadSopenharmony_ci MODE_POST_SNAP_NV, CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV or CONSERVATIVE_- 1355bd8deadSopenharmony_ci RASTER_MODE_PRE_SNAP_TRIANGLES_NV. 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ciIssues 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ci (1) Would MODE_PRE_SNAP_NV generate fragments for zero width lines and 1405bd8deadSopenharmony_ci zero diameter points? 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci RESOLVED. No. Vertex snapping to the sub-pixel grid may cause in a line 1435bd8deadSopenharmony_ci to become zero length, so, MODE_PRE_SNAP will generate fragments for 1445bd8deadSopenharmony_ci zero length lines. Zero width lines and zero diameter points are culled as 1455bd8deadSopenharmony_ci normal in both MODE_PRE_SNAP or MODE_POST_SNAP modes. 1465bd8deadSopenharmony_ci 1475bd8deadSopenharmony_ciRevision History 1485bd8deadSopenharmony_ci 1495bd8deadSopenharmony_ci Revision 1 1505bd8deadSopenharmony_ci - Internal revisions. 1515bd8deadSopenharmony_ci 152