vulkan-3.23: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Description

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
Extension and Version Dependencies
  • Requires support for Vulkan 1.0
  • Requires VK_KHR_ray_tracing_pipeline to be enabled for any device-level functionality
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

AccelerationStructureGeometryMotionTrianglesDataNV, AccelerationStructureMatrixMotionInstanceNV, AccelerationStructureMotionInfoFlagsNV, AccelerationStructureMotionInfoNV, AccelerationStructureMotionInstanceDataNV, AccelerationStructureMotionInstanceFlagsNV, AccelerationStructureMotionInstanceNV, AccelerationStructureMotionInstanceTypeNV, AccelerationStructureSRTMotionInstanceNV, PhysicalDeviceRayTracingMotionBlurFeaturesNV, SRTDataNV

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.

Synopsis

Documentation

data PhysicalDeviceRayTracingMotionBlurFeaturesNV Source #

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. PhysicalDeviceRayTracingMotionBlurFeaturesNV can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_NV_ray_tracing_motion_blur, Bool32, StructureType

Constructors

PhysicalDeviceRayTracingMotionBlurFeaturesNV 

Fields

Instances

Instances details
Storable PhysicalDeviceRayTracingMotionBlurFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Show PhysicalDeviceRayTracingMotionBlurFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Eq PhysicalDeviceRayTracingMotionBlurFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

FromCStruct PhysicalDeviceRayTracingMotionBlurFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

ToCStruct PhysicalDeviceRayTracingMotionBlurFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Zero PhysicalDeviceRayTracingMotionBlurFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

data AccelerationStructureGeometryMotionTrianglesDataNV Source #

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.

Valid Usage (Implicit)

See Also

VK_NV_ray_tracing_motion_blur, DeviceOrHostAddressConstKHR, StructureType

Constructors

AccelerationStructureGeometryMotionTrianglesDataNV 

Fields

data AccelerationStructureMotionInfoNV Source #

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

Valid Usage (Implicit)

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInfoFlagsNV, StructureType

Constructors

AccelerationStructureMotionInfoNV 

Fields

Instances

Instances details
Storable AccelerationStructureMotionInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Show AccelerationStructureMotionInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Eq AccelerationStructureMotionInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

FromCStruct AccelerationStructureMotionInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

ToCStruct AccelerationStructureMotionInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Zero AccelerationStructureMotionInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

data SRTDataNV Source #

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 

Fields

  • 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

Instances

Instances details
Storable SRTDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Show SRTDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Eq SRTDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

FromCStruct SRTDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

ToCStruct SRTDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Zero SRTDataNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

data AccelerationStructureSRTMotionInstanceNV Source #

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 struct 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

AccelerationStructureSRTMotionInstanceNV 

Fields

  • transformT0 :: SRTDataNV

    transformT0 is a SRTDataNV structure describing a transformation to be applied to the acceleration structure at time 0.

  • transformT1 :: SRTDataNV

    transformT1 is a SRTDataNV structure describing a transformation to be applied to the acceleration structure at time 1.

  • instanceCustomIndex :: Word32

    instanceCustomIndex is a 24-bit user-specified index value accessible to ray shaders in the InstanceCustomIndexKHR built-in.

    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
  • mask :: Word32

    mask is an 8-bit visibility mask for the geometry. The instance may only be hit if Cull Mask & instance.mask != 0

  • instanceShaderBindingTableRecordOffset :: Word32

    instanceShaderBindingTableRecordOffset is a 24-bit offset used in calculating the hit shader binding table index.

    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
  • flags :: GeometryInstanceFlagsKHR

    flags is an 8-bit mask of GeometryInstanceFlagBitsKHR values to apply to this instance.

    flags must be a valid combination of GeometryInstanceFlagBitsKHR values

  • accelerationStructureReference :: Word64

    accelerationStructureReference is either:

Instances

Instances details
Storable AccelerationStructureSRTMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Show AccelerationStructureSRTMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

FromCStruct AccelerationStructureSRTMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

ToCStruct AccelerationStructureSRTMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Zero AccelerationStructureSRTMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

data AccelerationStructureMatrixMotionInstanceNV Source #

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 struct 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

AccelerationStructureMatrixMotionInstanceNV 

Fields

Instances

Instances details
Storable AccelerationStructureMatrixMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Show AccelerationStructureMatrixMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

FromCStruct AccelerationStructureMatrixMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

ToCStruct AccelerationStructureMatrixMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Zero AccelerationStructureMatrixMotionInstanceNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

data AccelerationStructureMotionInstanceNV Source #

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

Description

Note

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

AccelerationStructureMotionInstanceNV 

Fields

newtype AccelerationStructureMotionInfoFlagsNV Source #

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

Instances

Instances details
Bits AccelerationStructureMotionInfoFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Methods

(.&.) :: AccelerationStructureMotionInfoFlagsNV -> AccelerationStructureMotionInfoFlagsNV -> AccelerationStructureMotionInfoFlagsNV #

(.|.) :: AccelerationStructureMotionInfoFlagsNV -> AccelerationStructureMotionInfoFlagsNV -> AccelerationStructureMotionInfoFlagsNV #

xor :: AccelerationStructureMotionInfoFlagsNV -> AccelerationStructureMotionInfoFlagsNV -> AccelerationStructureMotionInfoFlagsNV #

complement :: AccelerationStructureMotionInfoFlagsNV -> AccelerationStructureMotionInfoFlagsNV #

shift :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

rotate :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

zeroBits :: AccelerationStructureMotionInfoFlagsNV #

bit :: Int -> AccelerationStructureMotionInfoFlagsNV #

setBit :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

clearBit :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

complementBit :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

testBit :: AccelerationStructureMotionInfoFlagsNV -> Int -> Bool #

bitSizeMaybe :: AccelerationStructureMotionInfoFlagsNV -> Maybe Int #

bitSize :: AccelerationStructureMotionInfoFlagsNV -> Int #

isSigned :: AccelerationStructureMotionInfoFlagsNV -> Bool #

shiftL :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

unsafeShiftL :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

shiftR :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

unsafeShiftR :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

rotateL :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

rotateR :: AccelerationStructureMotionInfoFlagsNV -> Int -> AccelerationStructureMotionInfoFlagsNV #

popCount :: AccelerationStructureMotionInfoFlagsNV -> Int #

FiniteBits AccelerationStructureMotionInfoFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Storable AccelerationStructureMotionInfoFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Read AccelerationStructureMotionInfoFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Show AccelerationStructureMotionInfoFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Eq AccelerationStructureMotionInfoFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Ord AccelerationStructureMotionInfoFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Zero AccelerationStructureMotionInfoFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

newtype AccelerationStructureMotionInstanceFlagsNV Source #

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

Instances

Instances details
Bits AccelerationStructureMotionInstanceFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Methods

(.&.) :: AccelerationStructureMotionInstanceFlagsNV -> AccelerationStructureMotionInstanceFlagsNV -> AccelerationStructureMotionInstanceFlagsNV #

(.|.) :: AccelerationStructureMotionInstanceFlagsNV -> AccelerationStructureMotionInstanceFlagsNV -> AccelerationStructureMotionInstanceFlagsNV #

xor :: AccelerationStructureMotionInstanceFlagsNV -> AccelerationStructureMotionInstanceFlagsNV -> AccelerationStructureMotionInstanceFlagsNV #

complement :: AccelerationStructureMotionInstanceFlagsNV -> AccelerationStructureMotionInstanceFlagsNV #

shift :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

rotate :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

zeroBits :: AccelerationStructureMotionInstanceFlagsNV #

bit :: Int -> AccelerationStructureMotionInstanceFlagsNV #

setBit :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

clearBit :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

complementBit :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

testBit :: AccelerationStructureMotionInstanceFlagsNV -> Int -> Bool #

bitSizeMaybe :: AccelerationStructureMotionInstanceFlagsNV -> Maybe Int #

bitSize :: AccelerationStructureMotionInstanceFlagsNV -> Int #

isSigned :: AccelerationStructureMotionInstanceFlagsNV -> Bool #

shiftL :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

unsafeShiftL :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

shiftR :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

unsafeShiftR :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

rotateL :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

rotateR :: AccelerationStructureMotionInstanceFlagsNV -> Int -> AccelerationStructureMotionInstanceFlagsNV #

popCount :: AccelerationStructureMotionInstanceFlagsNV -> Int #

FiniteBits AccelerationStructureMotionInstanceFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Storable AccelerationStructureMotionInstanceFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Read AccelerationStructureMotionInstanceFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Show AccelerationStructureMotionInstanceFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Eq AccelerationStructureMotionInstanceFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Ord AccelerationStructureMotionInstanceFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Zero AccelerationStructureMotionInstanceFlagsNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

newtype AccelerationStructureMotionInstanceTypeNV Source #

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

See Also

VK_NV_ray_tracing_motion_blur, AccelerationStructureMotionInstanceNV

Bundled Patterns

pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV :: AccelerationStructureMotionInstanceTypeNV

ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV specifies that the instance is a static instance with no instance motion.

pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV :: AccelerationStructureMotionInstanceTypeNV

ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV specifies that the instance is a motion instance with motion specified by interpolation between two matrices.

pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV :: AccelerationStructureMotionInstanceTypeNV

ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV specifies that the instance is a motion instance with motion specified by interpolation in the SRT decomposition.

Instances

Instances details
Storable AccelerationStructureMotionInstanceTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Read AccelerationStructureMotionInstanceTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Show AccelerationStructureMotionInstanceTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Eq AccelerationStructureMotionInstanceTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Ord AccelerationStructureMotionInstanceTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

Zero AccelerationStructureMotionInstanceTypeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_ray_tracing_motion_blur

type NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME = "VK_NV_ray_tracing_motion_blur" Source #

data TransformMatrixKHR Source #

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

Instances

Instances details
Storable TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero TransformMatrixKHR Source #

The Identity Matrix

Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AccelerationStructureInstanceKHR Source #

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 struct 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.

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, AccelerationStructureMotionInstanceDataNV, GeometryInstanceFlagsKHR, TransformMatrixKHR

Constructors

AccelerationStructureInstanceKHR 

Fields

Instances

Instances details
Storable AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype GeometryInstanceFlagBitsKHR Source #

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

Bundled Patterns

pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR disables face culling for this instance.

pattern GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR indicates that the facing determination for geometry in this instance is inverted. Because the facing is determined in object space, an instance transform does not change the winding, but a geometry transform does.

pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR causes this instance to act as though GEOMETRY_OPAQUE_BIT_KHR were specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V NoOpaqueKHR ray flag.

pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR causes this instance to act as though GEOMETRY_OPAQUE_BIT_KHR were not specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V OpaqueKHR ray flag.

pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT :: GeometryInstanceFlagBitsKHR 
pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT :: GeometryInstanceFlagBitsKHR 

Instances

Instances details
Bits GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

(.&.) :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

(.|.) :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

xor :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

complement :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

shift :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotate :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

zeroBits :: GeometryInstanceFlagBitsKHR #

bit :: Int -> GeometryInstanceFlagBitsKHR #

setBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

clearBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

complementBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

testBit :: GeometryInstanceFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: GeometryInstanceFlagBitsKHR -> Maybe Int #

bitSize :: GeometryInstanceFlagBitsKHR -> Int #

isSigned :: GeometryInstanceFlagBitsKHR -> Bool #

shiftL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

unsafeShiftL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

shiftR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

unsafeShiftR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotateL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotateR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

popCount :: GeometryInstanceFlagBitsKHR -> Int #

FiniteBits GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype BuildAccelerationStructureFlagBitsKHR Source #

VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional parameters for acceleration structure builds

Description

Note

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.

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, BuildAccelerationStructureFlagsKHR

Bundled Patterns

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR indicates that the specified acceleration structure can be updated with a mode of BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR in AccelerationStructureBuildGeometryInfoKHR or an update of TRUE in cmdBuildAccelerationStructureNV .

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR indicates that the specified acceleration structure can act as the source for a copy acceleration structure command with mode of COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR to produce a compacted acceleration structure.

pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR indicates that the given acceleration structure build should prioritize trace performance over build time.

pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR indicates that the given acceleration structure build should prioritize build time over trace performance.

pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR indicates that this acceleration structure should minimize the size of the scratch memory and the final result acceleration structure, potentially at the expense of build time or trace performance.

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT indicates that the data of the opacity micromaps associated with the specified acceleration structure may change with an acceleration structure update.

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT indicates that the specified acceleration structure may be referenced in an instance with GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT set.

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT indicates that the opacity micromaps associated with the specified acceleration structure may change with an acceleration structure update.

pattern BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV :: BuildAccelerationStructureFlagBitsKHR 

Instances

Instances details
Bits BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

(.&.) :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

(.|.) :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

xor :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

complement :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

shift :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotate :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

zeroBits :: BuildAccelerationStructureFlagBitsKHR #

bit :: Int -> BuildAccelerationStructureFlagBitsKHR #

setBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

clearBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

complementBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

testBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: BuildAccelerationStructureFlagBitsKHR -> Maybe Int #

bitSize :: BuildAccelerationStructureFlagBitsKHR -> Int #

isSigned :: BuildAccelerationStructureFlagBitsKHR -> Bool #

shiftL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

unsafeShiftL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

shiftR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

unsafeShiftR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotateL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotateR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

popCount :: BuildAccelerationStructureFlagBitsKHR -> Int #

FiniteBits BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype AccelerationStructureCreateFlagBitsKHR Source #

VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional creation parameters for acceleration structure

See Also

VK_KHR_acceleration_structure, AccelerationStructureCreateFlagsKHR

Instances

Instances details
Bits AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

(.&.) :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

(.|.) :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

xor :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

complement :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

shift :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotate :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

zeroBits :: AccelerationStructureCreateFlagBitsKHR #

bit :: Int -> AccelerationStructureCreateFlagBitsKHR #

setBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

clearBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

complementBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

testBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: AccelerationStructureCreateFlagBitsKHR -> Maybe Int #

bitSize :: AccelerationStructureCreateFlagBitsKHR -> Int #

isSigned :: AccelerationStructureCreateFlagBitsKHR -> Bool #

shiftL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

unsafeShiftL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

shiftR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

unsafeShiftR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotateL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotateR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

popCount :: AccelerationStructureCreateFlagBitsKHR -> Int #

FiniteBits AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Storable AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure