blob: bbb0aaf0b292ed9bc1dcca056933c2b2740e078c [file] [log] [blame]
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.