// Copyright (c) 2021-2023 NVIDIA Corporation
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_NV_displacement_micromap.adoc[]

=== Other Extension Metadata

*Last Modified Date*::
    2023-03-17
*Interactions and External Dependencies*::
    TBD
*Contributors*::
  - Christoph Kubisch, NVIDIA
  - Eric Werness, NVIDIA

=== Description

Ray tracing can very efficiently render from geometry which has very fine
detail, but when using only a basic triangle representation, memory
consumption can be an issue.
This extension adds the ability to add a _displacement map_ to add more
detail to triangles in an acceleration structure with an efficient in-memory
format.
The format is externally visible to allow the application to compress its
internal geometry representations into the compressed format ahead of time.
This format adds displacements along a defined vector to subtriangle
vertices which are subdivided from the main triangles.

This extension provides:

  * a new elink:VkMicromapTypeEXT format for the displacement micromap,
  * a structure to extend
    slink:VkAccelerationStructureGeometryTrianglesDataKHR to attach a
    displacement micromap to the geometry of the acceleration structure,
  * enums extending elink:VkBuildAccelerationStructureFlagBitsKHR to allow
    for updates.

include::{generated}/interfaces/VK_NV_displacement_micromap.adoc[]

=== Issues

(1) What is the status of this extension?
--
  * Provisional and expected to change.
    The broad structure and encoding format are stable, but there will
    likely be changes to the structures, enumerant values, and shader
    interface.
--

=== Version History

  * Revision 1, 2023-03-17 (Eric Werness)
  ** Initial public revision
  * Revision 2, 2023-07-07 (Eric Werness)
  ** Add shader support for decode intrinsics
