HORIZON HASKELLDocslts/ghc-10.0.x8174fa42026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8174fa4 · 2026-10-11

Modulevulkan-3.27GHC2021

Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Name

VK_NV_ray_tracing_motion_blur - device extension

VK_NV_ray_tracing_motion_blur

Name String

VK_NV_ray_tracing_motion_blur

Extension Type

Device extension

Registered Extension Number

328

Revision

1

Ratification Status

Not ratified

Extension and Version Dependencies

VK_KHR_ray_tracing_pipeline

SPIR-V Dependencies
Contact
  • Eric Werness

Other Extension Metadata

Last Modified Date

2021-06-16

Interactions and External Dependencies
Contributors
  • Eric Werness, NVIDIA

  • Ashwin Lele, NVIDIA

Description

Ray tracing support in the API provides an efficient mechanism to intersect rays against static geometry, but rendering algorithms often want to support motion, which is more efficiently supported with motion-specific algorithms. This extension adds a set of mechanisms to support fast tracing of moving geometry:

  • A ray pipeline trace call which takes a time parameter

  • Flags to enable motion support in an acceleration structure

  • Support for time-varying vertex positions in a geometry

  • Motion instances to move existing instances over time

The motion represented here is parameterized across a normalized timestep between 0.0 and 1.0. A motion trace using OpTraceRayMotionNV provides a time within that normalized range to be used when intersecting that ray with geometry. The geometry can be provided with motion by a combination of adding a second vertex position for time of 1.0 using AccelerationStructureGeometryMotionTrianglesDataNV and providing multiple transforms in the instance using AccelerationStructureMotionInstanceNV.

New Structures

New Unions

New Enums

New Bitmasks

New Enum Constants

Issues

  1. What size is VkAccelerationStructureMotionInstanceNV?

  • Added a note on the structure size and made the stride explicit in the language.

  1. Allow arrayOfPointers for motion TLAS?

  • Yes, with a packed encoding to minimize the amount of data sent for metadata.

Version History

  • Revision 1, 2020-06-16 (Eric Werness, Ashwin Lele)

    • Initial external release

See Also

No cross-references are available

Document Notes

For more information, see the Vulkan Specification.

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

  • 22 types
  • Packagevulkan-3.27
  • Exports48
  • LanguageGHC2021
  • LicenceBSD-3-Clause
  • SourceVK_NV_ray_tracing_motion_blur.hs

VkPhysicalDeviceRayTracingMotionBlurFeaturesNV - Structure describing the ray tracing motion blur features that can be supported by an implementation

Members

This structure describes the following features:

Description

If the PhysicalDeviceRayTracingMotionBlurFeaturesNV structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. If the application wishes to use a Device with any features described by PhysicalDeviceRayTracingMotionBlurFeaturesNV, it must add an instance of the structure, with the desired feature members set to TRUE, to the pNext chain of DeviceCreateInfo when creating the Device.

Structure Chaining

Extends the structures

See Also

VK_NV_ray_tracing_motion_blur, Bool32, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkAccelerationStructureGeometryMotionTrianglesDataNV - Structure specifying vertex motion in a bottom-level acceleration structure

Description

If AccelerationStructureGeometryMotionTrianglesDataNV is included in the pNext chain of a AccelerationStructureGeometryTrianglesDataKHR structure, the basic vertex positions are used for the position of the triangles in the geometry at time 0.0 and the vertexData in AccelerationStructureGeometryMotionTrianglesDataNV is used for the vertex positions at time 1.0, with positions linearly interpolated at intermediate times.

Indexing for AccelerationStructureGeometryMotionTrianglesDataNV vertexData is equivalent to the basic vertex position data.

Structure Chaining

Extends the structure

See Also

VK_NV_ray_tracing_motion_blur, DeviceOrHostAddressConstKHR, StructureType

Constructors

Instances3Show, ToCStruct, Zero

VkAccelerationStructureMotionInfoNV - Structure specifying the parameters of a newly created acceleration structure object

Structure Chaining

Extends the structure

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInfoFlagsNV, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero
datadata SRTDataNV
#

VkSRTDataNV - Structure specifying a transform in SRT decomposition

Description

This transform decomposition consists of three elements. The first is a matrix S, consisting of a scale, shear, and translation, usually used to define the pivot point of the following rotation. This matrix is constructed from the parameters above by:

[S = left( begin{matrix} sx & a & b & pvx -- 0 & sy & c & pvy -- 0 & 0 & sz & pvz

Constructors

  • SRTDataNV
    • sx :: Float

      sx is the x component of the scale of the transform

    • a :: Float

      a is one component of the shear for the transform

    • b :: Float

      b is one component of the shear for the transform

    • pvx :: Float

      pvx is the x component of the pivot point of the transform

    • sy :: Float

      sy is the y component of the scale of the transform

    • c :: Float

      c is one component of the shear for the transform

    • pvy :: Float

      pvy is the y component of the pivot point of the transform

    • sz :: Float

      sz is the z component of the scale of the transform

    • pvz :: Float

      pvz is the z component of the pivot point of the transform

    • qx :: Float

      qx is the x component of the rotation quaternion

    • qy :: Float

      qy is the y component of the rotation quaternion

    • qz :: Float

      qz is the z component of the rotation quaternion

    • qw :: Float

      qw is the w component of the rotation quaternion

    • tx :: Float

      tx is the x component of the post-rotation translation

    • ty :: Float

      ty is the y component of the post-rotation translation

    • tz :: Float

      tz is the z component of the post-rotation translation

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero
  • Eq SRTDataNVDefined in vulkan-3.27 · Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
  • Show SRTDataNVDefined in vulkan-3.27 · Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
  • Storable SRTDataNVDefined in vulkan-3.27 · Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
  • FromCStruct SRTDataNVDefined in vulkan-3.27 · Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
  • ToCStruct SRTDataNVDefined in vulkan-3.27 · Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
  • Zero SRTDataNVDefined in vulkan-3.27 · Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

VkAccelerationStructureSRTMotionInstanceNV - 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 structure produces the correct layout with existing compilers. The intended bit pattern is for the following:

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)

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInstanceDataNV, GeometryInstanceFlagsKHR, SRTDataNV

Constructors

Instances5Show, Storable, FromCStruct, ToCStruct, Zero

VkAccelerationStructureMatrixMotionInstanceNV - Structure specifying a single acceleration structure matrix 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 structure produces the correct layout with existing compilers. The intended bit pattern is for the following:

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 matrix motion instance at a point in time is derived by component-wise linear interpolation of the two transforms. That is, for a time in [0,1] the resulting transform is

  • transformT0 × (1 - time) + transformT1 × time

Valid Usage (Implicit)

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInstanceDataNV, GeometryInstanceFlagsKHR, TransformMatrixKHR

Constructors

Instances5Show, Storable, FromCStruct, ToCStruct, Zero

VkAccelerationStructureMotionInstanceNV - Structure specifying a single acceleration structure motion instance for building into an acceleration structure geometry

Description

If writing this other than with a standard C compiler, note that the final structure should be 152 bytes in size.

Valid Usage (Implicit)

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInstanceDataNV, AccelerationStructureMotionInstanceFlagsNV, AccelerationStructureMotionInstanceTypeNV

Constructors

Instances3Show, ToCStruct, Zero
Instances3Show, ToCStruct, Zero

VkAccelerationStructureMotionInfoFlagsNV - Reserved for future use

Description

AccelerationStructureMotionInfoFlagsNV is a bitmask type for setting a mask, but is currently reserved for future use.

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInfoNV, Flags

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …

VkAccelerationStructureMotionInstanceFlagsNV - Reserved for future use

Description

AccelerationStructureMotionInstanceFlagsNV is a bitmask type for setting a mask, but is currently reserved for future use.

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInstanceNV, Flags

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …

VkAccelerationStructureMotionInstanceTypeNV - Enum specifying a type of acceleration structure motion instance data for building into an acceleration structure geometry

Description

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInstanceNV

Instances6Eq, Ord, Read, Show, Storable, Zero
datadata TransformMatrixKHR
#

VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix

Valid Usage

  • The first three columns of matrix must define an invertible 3x3 matrix

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, AccelerationStructureInstanceKHR, AccelerationStructureMatrixMotionInstanceNV, VkPartitionedAccelerationStructureWriteInstanceDataNV

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

VkAccelerationStructureInstanceKHR - Structure specifying a single acceleration structure 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 structure 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.

Valid Usage

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, AccelerationStructureMotionInstanceDataNV, GeometryInstanceFlagsKHR, TransformMatrixKHR

Constructors

Instances5Show, Storable, FromCStruct, ToCStruct, Zero
newtypenewtype GeometryInstanceFlagBitsKHR
#

VkGeometryInstanceFlagBitsKHR - Instance flag bits

Description

GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR and GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR must not be used in the same flag.

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, GeometryInstanceFlagsKHR

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …

VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional parameters for acceleration structure builds

Description

BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR and BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR may take more time and memory than a normal build, and so should only be used when those features are needed.

BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR and BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR are allowed to be used together. In that case, the result of the compaction copy is used as the source of a build with mode of BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR to perform the compacted update.

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, BuildAccelerationStructureFlagsKHR

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …

VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional creation parameters for acceleration structure

Description

See Also

VK_KHR_acceleration_structure, AccelerationStructureCreateFlagsKHR

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …