| // Copyright (c) 2017-2020 NVIDIA Corporation |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_NV_framebuffer_mixed_samples.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2017-06-04 |
| *Contributors*:: |
| - Jeff Bolz, NVIDIA |
| |
| === Description |
| |
| This extension allows multisample rendering with a raster and depth/stencil |
| sample count that is larger than the color sample count. |
| Rasterization and the results of the depth and stencil tests together |
| determine the portion of a pixel that is "`covered`". |
| It can be useful to evaluate coverage at a higher frequency than color |
| samples are stored. |
| This coverage is then "`reduced`" to a collection of covered color samples, |
| each having an opacity value corresponding to the fraction of the color |
| sample covered. |
| The opacity can optionally be blended into individual color samples. |
| |
| Rendering with fewer color samples than depth/stencil samples greatly |
| reduces the amount of memory and bandwidth consumed by the color buffer. |
| However, converting the coverage values into opacity introduces artifacts |
| where triangles share edges and may: not be suitable for normal triangle |
| mesh rendering. |
| |
| One expected use case for this functionality is Stencil-then-Cover path |
| rendering (similar to the OpenGL GL_NV_path_rendering extension). |
| The stencil step determines the coverage (in the stencil buffer) for an |
| entire path at the higher sample frequency, and then the cover step draws |
| the path into the lower frequency color buffer using the coverage |
| information to antialias path edges. |
| With this two-step process, internal edges are fully covered when |
| antialiasing is applied and there is no corruption on these edges. |
| |
| The key features of this extension are: |
| |
| * It allows render pass and framebuffer objects to be created where the |
| number of samples in the depth/stencil attachment in a subpass is a |
| multiple of the number of samples in the color attachments in the |
| subpass. |
| * A coverage reduction step is added to Fragment Operations which converts |
| a set of covered raster/depth/stencil samples to a set of color samples |
| that perform blending and color writes. |
| The coverage reduction step also includes an optional coverage |
| modulation step, multiplying color values by a fractional opacity |
| corresponding to the number of associated raster/depth/stencil samples |
| covered. |
| |
| include::{generated}/interfaces/VK_NV_framebuffer_mixed_samples.txt[] |
| |
| === Version History |
| |
| * Revision 1, 2017-06-04 (Jeff Bolz) |
| - Internal revisions |