/ 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