Vulkan-Docs/appendices/VK_NV_framebuffer_mixed_samples.txt
Jon Leech e24e42dcff Change log for November 4, 2018 Vulkan 1.1.91 spec update:
* Update release number to 91.

Public Issues:

  * Update Ubuntu subsystem build instructions in `BUILD.adoc` (public pull
    request 624).
  * Delete the `VK_KHR_mir_surface` extension from the Specification and
    XML, due to EOL of the only driver known to have supported it, and
    near-EOL of Mir itself (public issue 814).
  * Fix options for some figures that were using old ones (public pull
    request 841).
  * Fix various accidentally repeated words (public pull request 843).
  * Use `time.process_time()`, introduced in Python 3.3, in the scripts
    instead of `time.clock()`, which will be removed in Python 3.8 (public
    pull request 844).

Internal Issues:

  * Update valid usage statements for
    `VK_ANDROID_external_memory_android_hardware_buffer` in
    slink:VkMemoryAllocateInfo,
    slink:VkImportAndroidHardwareBufferInfoANDROID, and
    flink:vkGetAndroidHardwareBufferPropertiesANDROID to actually be
    verifiable (internal issue 1419).
  * Update valid usage statements for
    `VK_ANDROID_external_memory_android_hardware_buffer` in
    slink:VkMemoryAllocateInfo, slink:VkImageCreateInfo, and
    slink:VkImageViewCreateInfo to move valid usage statements in
    doubly-nested bullet points up one level, accomodating limitations of
    the valid usage extraction script that creates `validusage.json`
    (internal issue 1434).
  * Fix typo etext:VK_ACCESS_SHADING_RATE_IMAGE_BIT_NV to the correct
    ename:VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV.
  * Add missing etext:VK_STRUCTURE_TYPE_* tokens to appendices for
    extensions missing them.

New Extensions:

  * `VK_AMD_memory_overallocation_behavior`
  * `VK_NV_ray_tracing`, replacing `VK_NVX_raytracing`
2018-11-03 23:50:13 -07:00

78 lines
2.7 KiB
Plaintext

include::meta/VK_NV_framebuffer_mixed_samples.txt[]
*Last Modified Date*::
2017-06-04
*Contributors*::
- Jeff Bolz, NVIDIA
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.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType
** ename:VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
=== New Enums
* elink:VkCoverageModulationModeNV
* elink:VkPipelineCoverageModulationStateCreateFlagsNV
=== New Structures
* slink:VkPipelineCoverageModulationStateCreateInfoNV
=== New Functions
None.
=== Issues
None.
=== Version History
* Revision 1, 2017-06-04 (Jeff Bolz)
- Internal revisions