| include::meta/VK_EXT_conservative_rasterization.txt[] |
| |
| *Last Modified Data*:: |
| 2017-08-28 |
| *Contributors*:: |
| - Daniel Koch, NVIDIA |
| - Daniel Rakos, AMD |
| - Jeff Bolz, NVIDIA |
| - Slawomir Grajewski, Intel |
| - Stu Smith, Imagination Technologies |
| |
| This extension adds a new rasterization mode called conservative |
| rasterization. |
| There are two modes of conservative rasterization; overestimation and |
| underestimation. |
| |
| When overestimation is enabled, if any part of the primitive, including its |
| edges, covers any part of the rectangular pixel area, including its sides, |
| then a fragment is generated with all coverage samples turned on. |
| This extension allows for some variation in implementations by accounting |
| for differences in overestimation, where the generating primitive size is |
| increased at each of its edges by some sub-pixel amount to further increase |
| conservative pixel coverage. |
| Implementations can allow the application to specify an extra overestimation |
| beyond the base overestimation the implementation already does. |
| It also allows implementations to either cull degenerate primitives or |
| rasterize them. |
| |
| When underestimation is enabled, fragments are only generated if the |
| rectangular pixel area is fully covered by the generating primitive. |
| If supported by the implementation, when a pixel rectangle is fully covered |
| the fragment shader input variable builtin called FullyCoveredEXT is set to |
| true. |
| The shader variable works in either overestimation or underestimation mode. |
| |
| Implementations can process degenerate triangles and lines by either |
| discarding them or generating conservative fragments for them. |
| Degenerate triangles are those that end up with zero area after the |
| rasterizer quantizes them to the fixed-point pixel grid. |
| Degenerate lines are those with zero length after quantization. |
| |
| === New Object Types |
| |
| None. |
| |
| === New Enum Constants |
| |
| * Extending elink:VkStructureType: |
| |
| ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT |
| ** ename:VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT |
| |
| === New Enums |
| |
| * elink:VkPipelineRasterizationConservativeStateCreateFlagsEXT |
| * elink:VkConservativeRasterizationModeEXT |
| |
| === New Structures |
| |
| * slink:VkPhysicalDeviceConservativeRasterizationPropertiesEXT |
| * slink:VkPipelineRasterizationConservativeStateCreateInfoEXT |
| |
| === New Functions |
| |
| None. |
| |
| === Issues |
| |
| None. |
| |
| === Version History |
| |
| * Revision 1, 2017-08-28 (Piers Daniell) |
| - Internal revisions |