75 lines
2.4 KiB
Plaintext
75 lines
2.4 KiB
Plaintext
|
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
|