| 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. |
| |