# VkAccelerationStructureCreateGeometryTypeInfoKHR(3) Manual Page

## Name

VkAccelerationStructureCreateGeometryTypeInfoKHR - Structure specifying the shape of geometries that will be built into an acceleration structure

## C Specification

The `VkAccelerationStructureCreateGeometryTypeInfoKHR` structure specifies the shape of geometries that will be built into an acceleration structure and is defined as:

    typedef struct VkAccelerationStructureCreateGeometryTypeInfoKHR {
        VkStructureType      sType;
        const void*          pNext;
        VkGeometryTypeKHR    geometryType;
        uint32_t             maxPrimitiveCount;
        VkIndexType          indexType;
        uint32_t             maxVertexCount;
        VkFormat             vertexFormat;
        VkBool32             allowsTransforms;
    } VkAccelerationStructureCreateGeometryTypeInfoKHR;

## Members

- `sType` is the type of this structure.

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

- `geometryType` is a VkGeometryTypeKHR that describes the type of an acceleration structure geometry.

- `maxPrimitiveCount` describes the maximum number of primitives that can be built into an acceleration structure geometry.

- `indexType` is a VkIndexType that describes the index type used to build this geometry when `geometryType` is `VK_GEOMETRY_TYPE_TRIANGLES_KHR`.

- `maxVertexCount` describes the maximum vertex count that can be used to build an acceleration structure geometry when `geometryType` is `VK_GEOMETRY_TYPE_TRIANGLES_KHR`.

- `vertexFormat` is a VkFormat that describes the vertex format used to build this geometry when `geometryType` is `VK_GEOMETRY_TYPE_TRIANGLES_KHR`.

- `allowsTransforms` indicates whether transform data can be used by this acceleration structure or not, when `geometryType` is `VK_GEOMETRY_TYPE_TRIANGLES_KHR`.

## Description

When `geometryType` is `VK_GEOMETRY_TYPE_TRIANGLES_KHR`:

- if `indexType` is `VK_INDEX_TYPE_NONE_KHR`, then this structure describes a set of triangles.

- if `indexType` is not `VK_INDEX_TYPE_NONE_KHR`, then this structure describes a set of indexed triangles.

Valid Usage

- If `geometryType` is `VK_GEOMETRY_TYPE_TRIANGLES_KHR`, `vertexFormat` must support the `VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR` in VkFormatProperties::`bufferFeatures` as returned by vkGetPhysicalDeviceFormatProperties2

- If `geometryType` is `VK_GEOMETRY_TYPE_TRIANGLES_KHR`, `indexType` must be `VK_INDEX_TYPE_UINT16`, `VK_INDEX_TYPE_UINT32`, or `VK_INDEX_TYPE_NONE_KHR`

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR`

- `pNext` must be `NULL`

- `geometryType` must be a valid VkGeometryTypeKHR value

- `indexType` must be a valid VkIndexType value

- If `vertexFormat` is not `0`, `vertexFormat` must be a valid VkFormat value

## See Also

VkAccelerationStructureCreateInfoKHR, `VkBool32`, VkFormat, VkGeometryTypeKHR, VkIndexType, VkStructureType

## 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-2020 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.