NV_conservative_raster_pre_snap
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 <param> 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 <param> 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 <pname> is
not CONSERVATIVE_RASTER_MODE_NV, or if <param> 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.