VK_NV_cluster_acceleration_structure(3)

# VK_NV_cluster_acceleration_structure(3) Manual Page

## Name

VK_NV_cluster_acceleration_structure - device extension

Loading… please wait.

## Registered Extension Number

570

## Revision

3

## Ratification Status

Not ratified

## Extension and Version Dependencies

VK_KHR_acceleration_structure

## API Interactions

- Interacts with VK_EXT_opacity_micromap

- Interacts with VK_KHR_ray_tracing_pipeline

## SPIR-V Dependencies

- SPV_NV_cluster_acceleration_structure

## Contact

- Vikram Kushwaha [GitHub]vkushwaha

## Extension Proposal

VK_NV_cluster_acceleration_structure

## Other Extension Metadata

Last Modified Date

  2024-09-09

Contributors

  - Vikram Kushwaha, NVIDIA

  - Eric Werness, NVIDIA

  - Christoph Kubisch, NVIDIA

  - Jan Schmid, NVIDIA

  - Pyarelal Knowles, NVIDIA

## Description

Acceleration structure build times can become a bottleneck in ray tracing applications dealing with extensive dynamic geometry. This extension addresses the problem by enabling applications to construct bottom-level acceleration structures (BLAS) from pre-generated acceleration structures based on clusters of triangles (CLAS), leading to significant improvements in build times.

It provides a host-side query function to fetch the requirements and a versatile multi-indirect call for managing cluster geometry. This call enables applications to generate cluster geometry, construct Cluster BLAS from CLAS lists, and move or copy CLAS and BLAS. By sourcing inputs from device memory and processing multiple elements simultaneously, the call reduces the host-side costs associated with traditional acceleration structure functions.

This extension adds support for the following SPIR-V extension in Vulkan:

- `SPV_NV_cluster_acceleration_structure`

## New Commands

- vkCmdBuildClusterAccelerationStructureIndirectNV

- vkGetClusterAccelerationStructureBuildSizesNV

## New Structures

- VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV

- VkClusterAccelerationStructureBuildTriangleClusterInfoNV

- VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV

- VkClusterAccelerationStructureClustersBottomLevelInputNV

- VkClusterAccelerationStructureCommandsInfoNV

- VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV

- VkClusterAccelerationStructureGetTemplateIndicesInfoNV

- VkClusterAccelerationStructureInputInfoNV

- VkClusterAccelerationStructureInstantiateClusterInfoNV

- VkClusterAccelerationStructureMoveObjectsInfoNV

- VkClusterAccelerationStructureMoveObjectsInputNV

- VkClusterAccelerationStructureTriangleClusterInputNV

- VkStridedDeviceAddressNV

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceClusterAccelerationStructureFeaturesNV

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceClusterAccelerationStructurePropertiesNV

If VK_KHR_ray_tracing_pipeline is supported:

- Extending VkRayTracingPipelineCreateInfoKHR:

  - VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV

## New Unions

- VkClusterAccelerationStructureOpInputNV

## New Enums

- VkClusterAccelerationStructureAddressResolutionFlagBitsNV

- VkClusterAccelerationStructureClusterFlagBitsNV

- VkClusterAccelerationStructureGeometryFlagBitsNV

- VkClusterAccelerationStructureIndexFormatFlagBitsNV

- VkClusterAccelerationStructureOpModeNV

- VkClusterAccelerationStructureOpTypeNV

- VkClusterAccelerationStructureTypeNV

## New Bitmasks

- VkClusterAccelerationStructureAddressResolutionFlagsNV

- VkClusterAccelerationStructureClusterFlagsNV

- VkClusterAccelerationStructureGeometryFlagsNV

- VkClusterAccelerationStructureIndexFormatFlagsNV

## New Enum Constants

- `VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME`

- `VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV`

  - `VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV`

  - `VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV`

  - `VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV`

  - `VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV`

  - `VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV`

If VK_EXT_opacity_micromap is supported:

- Extending VkOpacityMicromapSpecialIndexEXT:

  - `VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV`

## New or Modified Built-In Variables

- `ClusterIDNV`

## New SPIR-V Capability

- `RayTracingClusterAccelerationStructureNV`

## Version History

- Revision 3, 2025-06-18 (Vikram Kushwaha)

  - Adding a OpType to get template’s index data

- Revision 2, 2024-09-09 (Vikram Kushwaha)

  - Changes to some structures causing incompatibility with Revision 1

- Revision 1, 2024-08-29 (Vikram Kushwaha)

  - Initial draft

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2025 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0