VkAccelerationStructureBuildRangeInfoKHR
VkAccelerationStructureBuildRangeInfoKHR
is defined as:
typedef struct VkAccelerationStructureBuildRangeInfoKHR {
uint32_t primitiveCount;
uint32_t primitiveOffset;
uint32_t firstVertex;
uint32_t transformOffset;
} VkAccelerationStructureBuildRangeInfoKHR;
primitiveCount
defines the number of primitives for a corresponding acceleration structure geometry.primitiveOffset
defines an offset in bytes into the memory where primitive data is defined.firstVertex
is the index of the first vertex to build from for triangle geometry.transformOffset
defines an offset in bytes into the memory where a transform matrix is defined.
The primitive count and primitive offset are interpreted differently depending on the VkGeometryTypeKHR used:
- For geometries of type
VK_GEOMETRY_TYPE_TRIANGLES_KHR
,primitiveCount
is the number of triangles to be built, where each triangle is treated as 3 vertices.- If the geometry uses indices,
primitiveCount
× 3 indices are consumed from VkAccelerationStructureGeometryTrianglesDataKHR::indexData
, starting at an offset ofprimitiveOffset
. The value offirstVertex
is added to the index values before fetching vertices. - If the geometry does not use indices,
primitiveCount
× 3 vertices are consumed from VkAccelerationStructureGeometryTrianglesDataKHR::vertexData
, starting at an offset ofprimitiveOffset
+ VkAccelerationStructureGeometryTrianglesDataKHR::vertexStride
×firstVertex
. - If
VkAccelerationStructureGeometryTrianglesDataKHR::
transformData
is notNULL
, a single VkTransformMatrixKHR structure is consumed from VkAccelerationStructureGeometryTrianglesDataKHR::transformData
, at an offset oftransformOffset
. This matrix describes a transformation from the space in which the vertices for all triangles in this geometry are described to the space in which the acceleration structure is defined.
- If the geometry uses indices,
- For geometries of type
VK_GEOMETRY_TYPE_AABBS_KHR
,primitiveCount
is the number of axis-aligned bounding boxes.primitiveCount
VkAabbPositionsKHR structures are consumed from VkAccelerationStructureGeometryAabbsDataKHR::data
, starting at an offset ofprimitiveOffset
. - For geometries of type
VK_GEOMETRY_TYPE_INSTANCES_KHR
,primitiveCount
is the number of acceleration structures.primitiveCount
VkAccelerationStructureInstanceKHR or VkAccelerationStructureMotionInstanceNV structures are consumed from VkAccelerationStructureGeometryInstancesDataKHR::data
, starting at an offset ofprimitiveOffset
.
Valid Usage
VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656
For geometries of type VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if the
geometry uses indices, the offset primitiveOffset
from
VkAccelerationStructureGeometryTrianglesDataKHR::indexData
must be a multiple of the element size of
VkAccelerationStructureGeometryTrianglesDataKHR::indexType
VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657
For geometries of type VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if the
geometry does not use indices, the offset primitiveOffset
from
VkAccelerationStructureGeometryTrianglesDataKHR::vertexData
must be a multiple of the component size of
VkAccelerationStructureGeometryTrianglesDataKHR::vertexFormat
VUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658
For geometries of type VK_GEOMETRY_TYPE_TRIANGLES_KHR
, the offset
transformOffset
from
VkAccelerationStructureGeometryTrianglesDataKHR::transformData
must be a multiple of 16
VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659
For geometries of type VK_GEOMETRY_TYPE_AABBS_KHR
, the offset
primitiveOffset
from
VkAccelerationStructureGeometryAabbsDataKHR::data
must be a
multiple of 8
VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660
For geometries of type VK_GEOMETRY_TYPE_INSTANCES_KHR
, the offset
primitiveOffset
from
VkAccelerationStructureGeometryInstancesDataKHR::data
must
be a multiple of 16