VkAccelerationStructureTrianglesDisplacementMicromapNV
The VkAccelerationStructureTrianglesDisplacementMicromapNV
structure
is defined as:
typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV {
VkStructureType sType;
void* pNext;
VkFormat displacementBiasAndScaleFormat;
VkFormat displacementVectorFormat;
VkDeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer;
VkDeviceSize displacementBiasAndScaleStride;
VkDeviceOrHostAddressConstKHR displacementVectorBuffer;
VkDeviceSize displacementVectorStride;
VkDeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags;
VkDeviceSize displacedMicromapPrimitiveFlagsStride;
VkIndexType indexType;
VkDeviceOrHostAddressConstKHR indexBuffer;
VkDeviceSize indexStride;
uint32_t baseTriangle;
uint32_t usageCountsCount;
const VkMicromapUsageEXT* pUsageCounts;
const VkMicromapUsageEXT* const* ppUsageCounts;
VkMicromapEXT micromap;
} VkAccelerationStructureTrianglesDisplacementMicromapNV;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.displacementBiasAndScaleFormat
is the format of displacement bias and scale used in this displacement micromap reference.displacementVectorFormat
is the format of displacement vector used in this displacement micromap reference.displacementBiasAndScaleBuffer
is the address containing the bias and scale.displacementBiasAndScaleStride
is the byte stride between bias and scale values.displacementVectorBuffer
is the address containing the displacement vector values.displacementVectorStride
is the byte stride between displacement vector values.displacedMicromapPrimitiveFlags
is the address containing the primitive flags.displacedMicromapPrimitiveFlagsStride
is the byte stride between primitive flag values.indexType
is the type of triangle indices used when indexing this micromap.indexBuffer
is the address containing the triangle indices.indexStride
is the byte stride between triangle indices.baseTriangle
is the base value added to the non-negative triangle indices.usageCountsCount
specifies the number of usage counts structures that will be used to determine the size of this micromap.pUsageCounts
is a pointer to an array of VkMicromapUsageEXT structures.ppUsageCounts
is a pointer to an array of pointers to VkMicromapUsageEXT structures.micromap
is the handle to the micromap object to include in this geometry.
If VkAccelerationStructureTrianglesDisplacementMicromapNV
is included
in the pNext
chain of a
VkAccelerationStructureGeometryTrianglesDataKHR structure, that
geometry will reference that micromap.
For each triangle in the geometry, the acceleration structure build fetches
an index from indexBuffer
using indexType
and indexStride
.
That triangle uses the displacement micromap information from micromap
at that index plus baseTriangle
.
Only one of pUsageCounts
or ppUsageCounts
can be a valid
pointer, the other must be NULL
.
The elements of the non-NULL
array describe the total count used to build
this geometry.
For a given format
and subdivisionLevel
the number of triangles
in this geometry matching those values after indirection must be equal to
the sum of matching count
provided.
Valid Usage
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-displacementBiasAndScaleFormat-09501
displacementBiasAndScaleFormat
must not be
VK_FORMAT_UNDEFINED
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-displacementVectorFormat-09502
displacementVectorFormat
must not be VK_FORMAT_UNDEFINED
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-pUsageCounts-07992
Only one of pUsageCounts
or ppUsageCounts
can be a valid
pointer, the other must be NULL
Valid Usage (Implicit)
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-sType-sType
sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-displacementBiasAndScaleFormat-parameter
displacementBiasAndScaleFormat
must be a valid VkFormat value
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-displacementVectorFormat-parameter
displacementVectorFormat
must be a valid VkFormat value
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-indexType-parameter
indexType
must be a valid VkIndexType value
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-pUsageCounts-parameter
If usageCountsCount
is not 0
, and pUsageCounts
is not NULL
, pUsageCounts
must be a valid pointer to an array of usageCountsCount
VkMicromapUsageEXT structures
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-ppUsageCounts-parameter
If usageCountsCount
is not 0
, and ppUsageCounts
is not NULL
, ppUsageCounts
must be a valid pointer to an array of usageCountsCount
valid pointers to VkMicromapUsageEXT structures
VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-micromap-parameter
If micromap
is not VK_NULL_HANDLE, micromap
must be a valid VkMicromapEXT handle