VkAccelerationStructureInfoNV(3)

# VkAccelerationStructureInfoNV(3) Manual Page

## Name

VkAccelerationStructureInfoNV - Structure specifying the parameters of acceleration structure object

## C Specification

The `VkAccelerationStructureInfoNV` structure is defined as:

    typedef struct VkAccelerationStructureInfoNV {
        VkStructureType                        sType;
        const void*                            pNext;
        VkAccelerationStructureTypeNV          type;
        VkBuildAccelerationStructureFlagsNV    flags;
        uint32_t                               instanceCount;
        uint32_t                               geometryCount;
        const VkGeometryNV*                    pGeometries;
    } VkAccelerationStructureInfoNV;

## Members

- `sType` is the type of this structure.

- `pNext` is `NULL` or a pointer to an extension-specific structure.

- `type` is a VkAccelerationStructureTypeNV value specifying the type of acceleration structure that will be created.

- `flags` is a bitmask of VkBuildAccelerationStructureFlagBitsNV specifying additional parameters of the acceleration structure.

- `instanceCount` specifies the number of instances that will be in the new acceleration structure.

- `geometryCount` specifies the number of geometries that will be in the new acceleration structure.

- `pGeometries` is a pointer to an array of `geometryCount` VkGeometryNV structures containing the scene data being passed into the acceleration structure.

## Description

`VkAccelerationStructureInfoNV` contains information that is used both for acceleration structure creation with `vkCreateAccelerationStructureNV` and in combination with the actual geometric data to build the acceleration structure with vkCmdBuildAccelerationStructureNV.

Valid Usage

- `geometryCount` must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::`maxGeometryCount`

- `instanceCount` must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::`maxInstanceCount`

- The total number of triangles in all geometries must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::`maxTriangleCount`

- If `type` is `VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV` then `geometryCount` must be `0`

- If `type` is `VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV` then `instanceCount` must be `0`

- If `type` is `VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV` then the `geometryType` member of each geometry in `pGeometries` must be the same

- If `flags` has the `VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV` bit set, then it must not have the `VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV` bit set

- `scratch` must have been created with `VK_BUFFER_USAGE_RAY_TRACING_BIT_NV` usage flag

- If `instanceData` is not VK_NULL_HANDLE, `instanceData` must have been created with `VK_BUFFER_USAGE_RAY_TRACING_BIT_NV` usage flag

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV`

- `pNext` must be `NULL`

- `type` must be a valid VkAccelerationStructureTypeNV value

- `flags` must be a valid combination of VkBuildAccelerationStructureFlagBitsNV values

- If `geometryCount` is not `0`, `pGeometries` must be a valid pointer to an array of `geometryCount` valid VkGeometryNV structures

## See Also

VkAccelerationStructureCreateInfoNV, VkAccelerationStructureTypeNV, VkBuildAccelerationStructureFlagsNV, VkGeometryNV, VkStructureType, vkCmdBuildAccelerationStructureNV

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright (c) 2014-2019 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.