/ appendices / VK_NV_framebuffer_mixed_samples.txt
VK_NV_framebuffer_mixed_samples.txt
 1  include::meta/VK_NV_framebuffer_mixed_samples.txt[]
 2  
 3  *Last Modified Date*::
 4      2017-06-04
 5  *Contributors*::
 6    - Jeff Bolz, NVIDIA
 7  
 8  This extension allows multisample rendering with a raster and depth/stencil
 9  sample count that is larger than the color sample count.
10  Rasterization and the results of the depth and stencil tests together
11  determine the portion of a pixel that is "`covered`".
12  It can be useful to evaluate coverage at a higher frequency than color
13  samples are stored.
14  This coverage is then "`reduced`" to a collection of covered color samples,
15  each having an opacity value corresponding to the fraction of the color
16  sample covered.
17  The opacity can optionally be blended into individual color samples.
18  
19  Rendering with fewer color samples than depth/stencil samples greatly
20  reduces the amount of memory and bandwidth consumed by the color buffer.
21  However, converting the coverage values into opacity introduces artifacts
22  where triangles share edges and may: not be suitable for normal triangle
23  mesh rendering.
24  
25  One expected use case for this functionality is Stencil-then-Cover path
26  rendering (similar to the OpenGL GL_NV_path_rendering extension).
27  The stencil step determines the coverage (in the stencil buffer) for an
28  entire path at the higher sample frequency, and then the cover step draws
29  the path into the lower frequency color buffer using the coverage
30  information to antialias path edges.
31  With this two-step process, internal edges are fully covered when
32  antialiasing is applied and there is no corruption on these edges.
33  
34  The key features of this extension are:
35  
36    * It allows render pass and framebuffer objects to be created where the
37      number of samples in the depth/stencil attachment in a subpass is a
38      multiple of the number of samples in the color attachments in the
39      subpass.
40    * A coverage reduction step is added to Fragment Operations which converts
41      a set of covered raster/depth/stencil samples to a set of color samples
42      that perform blending and color writes.
43      The coverage reduction step also includes an optional coverage
44      modulation step, multiplying color values by a fractional opacity
45      corresponding to the number of associated raster/depth/stencil samples
46      covered.
47  
48  === New Object Types
49  
50  None.
51  
52  === New Enum Constants
53  
54    * Extending elink:VkStructureType
55    ** ename:VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
56  
57  === New Enums
58  
59    * elink:VkCoverageModulationModeNV
60    * tlink:VkPipelineCoverageModulationStateCreateFlagsNV
61  
62  === New Structures
63  
64    * slink:VkPipelineCoverageModulationStateCreateInfoNV
65  
66  === New Functions
67  
68  None.
69  
70  === Issues
71  
72  None.
73  
74  === Version History
75  
76    * Revision 1, 2017-06-04 (Jeff Bolz)
77      - Internal revisions