Class VkAccelerationStructureSRTMotionInstanceNV

java.lang.Object
org.lwjgl.system.Pointer.Default
org.lwjgl.system.Struct<VkAccelerationStructureSRTMotionInstanceNV>
org.lwjgl.vulkan.VkAccelerationStructureSRTMotionInstanceNV
All Implemented Interfaces:
AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer

public class VkAccelerationStructureSRTMotionInstanceNV extends org.lwjgl.system.Struct<VkAccelerationStructureSRTMotionInstanceNV> implements org.lwjgl.system.NativeResource
Structure specifying a single acceleration structure SRT motion instance for building into an acceleration structure geometry.
Description

The C language specification does not define the ordering of bit-fields, but in practice, this struct produces the correct layout with existing compilers. The intended bit pattern is for the following:

  • instanceCustomIndex and mask occupy the same memory as if a single uint32_t was specified in their place
    • instanceCustomIndex occupies the 24 least significant bits of that memory
    • mask occupies the 8 most significant bits of that memory
  • instanceShaderBindingTableRecordOffset and flags occupy the same memory as if a single uint32_t was specified in their place
    • instanceShaderBindingTableRecordOffset occupies the 24 least significant bits of that memory
    • flags occupies the 8 most significant bits of that memory

If a compiler produces code that diverges from that pattern, applications must employ another method to set values according to the correct bit pattern.

The transform for a SRT motion instance at a point in time is derived from component-wise linear interpolation of the two SRT transforms. That is, for a time in [0,1] the resulting transform is

transformT0 × (1 - time) + transformT1 × time
Valid Usage (Implicit)
  • flags must be a valid combination of VkGeometryInstanceFlagBitsKHR values
See Also

VkAccelerationStructureMotionInstanceDataNV, VkSRTDataNV

Layout


 struct VkAccelerationStructureSRTMotionInstanceNV {
     VkSRTDataNV transformT0();
     VkSRTDataNV transformT1();
     uint32_t instanceCustomIndex() : 24;
     uint32_t mask() : 8;
     uint32_t instanceShaderBindingTableRecordOffset() : 24;
     VkGeometryInstanceFlagsKHR flags() : 8;
     uint64_t accelerationStructureReference();
 }