Name NV_conservative_raster_pre_snap Name Strings GL_NV_conservative_raster_pre_snap Contact Kedarnath Thangudu, NVIDIA Corporation (kthangudu 'at' nvidia.com) Contributors Eric Werness, NVIDIA Corporation Status Shipping in NVIDIA release 388.XX drivers and up Version Last Modified Date: November 15, 2017 Revision: 1 Number OpenGL Extension #517 OpenGL ES Extension #297 Dependencies This extension is written against the NV_conservative_raster_pre_snap- _triangles extension as applied to OpenGL 4.3 specification (Compatibility Profile) but may be used with the Core profile or OpenGL ES 2.0 or later. Overview NV_conservative_raster_pre_snap_triangles provides a new mode to achieve rasterization of triangles that is conservative w.r.t the triangle at infinite precision i.e. before it is snapped to the sub-pixel grid. This extension provides a new mode that expands this functionality to lines and points. New Procedures and Functions None. New Tokens Accepted by the parameter of ConservativeRasterParameteriNV: CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 Additions to Chapter 14 of the OpenGL 4.3 (Compatibility Profile) Specification (Fixed-Function Primitive Assembly and Rasterization) Modify the paragraph describing ConservativeRasterParameteriNV in the subsection 14.6.X "Conservative Rasterization" added by NV_conservative_- raster_pre_snap_triangles ... The parameter specifies the conservative raster mode to be used. If the mode is set to CONSERVATIVE_RASTER_MODE_POST_SNAP_NV, the generated fragments are conservative w.r.t the primitive after it is snapped to sub-pixel grid. If the mode is set to CONSERVATIVE_RASTER_MODE_- PRE_SNAP_NV the fragments generated for a primitive will be conservative w.r.t the primitive at infinite precision. Since non-degenerate primitives may become degenerate due to vertex snapping, this mode will generate fragments for zero length lines and zero area triangles which are otherwise culled in the CONSERVATIVE_RASTER_MODE_POST_SNAP_NV. This mode may also generate fragments for pixels that are within half a sub-pixel distance away from the primitive at infinite precision. If the mode is set to CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV, the pre-snap conservative raster behavior described would apply only to triangles. The default mode is set to CONSERVATIVE_RASTER_MODE_POST_SNAP_NV. Modify the paragraphs describing conservative rasterization behavior for points, lines and polygons added by NV_conservative_raster as follows: If CONSERVATIVE_RASTERIZATION_NV is enabled, points are rasterized according to point rasterization rules (section 14.4), except that a fragment will be generated for a framebuffer pixel if the point's region (a circle when MULTISAMPLING is enabled and POINT_SPRITE is disabled, or a square otherwise) covers any portion of the pixel, including its edges or points. While conservative raster mode PRE_SNAP_NV respects the MULTISAMPLE state, modes POST_SNAP_NV and PRE_SNAP_TRIANGLES_NV always use point multisample rasterization rules (section 14.4.3), whether or not MULTISAMPLE is actually enabled. When performing conservative rasterization of points, the POINT_SMOOTH enable is ignored and treated as disabled. If CONSERVATIVE_RASTERIZATION_NV is enabled, lines are rasterized according to line rasterization rules (section 14.5), except that the LINE_STIPPLE and LINE_SMOOTH enables are ignored and treated as disabled. When the conservative raster mode is POST_SNAP or PRE_SNAP_TRIANGLES, lines with zero length generate no fragments, while a fragment for the pixel that contains the end points will be generated when the mode is PRE_SNAP_NV. Also, conservative raster mode PRE_SNAP_NV respects the MULTISAMPLE state, while modes POST_SNAP_NV and PRE_SNAP_TRIANGLES_NV always use line multisample rasterization rules (section 14.5.4), whether or not MULTISAMPLE is actually enabled. If CONSERVATIVE_RASTERIZATION_NV is enabled, polygons are rasterized according to polygon rasterization rules (section 14.6), except that the POLYGON_SMOOTH enable is ignored and treated as disabled. When the conservative raster mode is POST_SNAP_NV, polygons with an area of zero generate no fragments, even for pixels that contain a vertex or edge of the zero-area polygon, while modes PRE_SNAP_TRIANGLES and PRE_SNAP_NV generate them. Also, conservative raster mode PRE_SNAP_NV respects the MULTISAMPLE state, while modes POST_SNAP_NV and PRE_SNAP_TRIANGLES_NV always use polygon multisample rasterization rules (section 14.6.6), whether or not MULTISAMPLE is actually enabled. New State None. Additions to the AGL/GLX/WGL Specifications None. GLX Protocol None. Modifications to the OpenGL Shading Language Specification, Version 4.30 None. Errors INVALID_ENUM is generated by ConservativeRasterParameteriNV if is not CONSERVATIVE_RASTER_MODE_NV, or if is not CONSERVATIVE_RASTER_- MODE_POST_SNAP_NV, CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV or CONSERVATIVE_- RASTER_MODE_PRE_SNAP_TRIANGLES_NV. Issues (1) Would MODE_PRE_SNAP_NV generate fragments for zero width lines and zero diameter points? RESOLVED. No. Vertex snapping to the sub-pixel grid may cause in a line to become zero length, so, MODE_PRE_SNAP will generate fragments for zero length lines. Zero width lines and zero diameter points are culled as normal in both MODE_PRE_SNAP or MODE_POST_SNAP modes. Revision History Revision 1 - Internal revisions.