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