Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
- Contact
- Eric Werness
Other Extension Metadata
- Last Modified Date
- 2021-06-16
- Interactions and External Dependencies
- This extension requires SPV_NV_ray_tracing_motion_blur
- This extension provides API support for GL_NV_ray_tracing_motion_blur
- 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
AccelerationStructureMotionInstanceNV
AccelerationStructureSRTMotionInstanceNV
SRTDataNV
Extending
AccelerationStructureCreateInfoKHR
:Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:
New Unions
New Enums
New Bitmasks
New Enum Constants
NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION
Extending
AccelerationStructureCreateFlagBitsKHR
:Extending
BuildAccelerationStructureFlagBitsKHR
:Extending
PipelineCreateFlagBits
:Extending
StructureType
:
Issues
- What size is VkAccelerationStructureMotionInstanceNV?
- Added a note on the structure size and made the stride explicit in the language.
- 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
- data PhysicalDeviceRayTracingMotionBlurFeaturesNV = PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
- data AccelerationStructureGeometryMotionTrianglesDataNV = AccelerationStructureGeometryMotionTrianglesDataNV {}
- data AccelerationStructureMotionInfoNV = AccelerationStructureMotionInfoNV {}
- data SRTDataNV = SRTDataNV {}
- data AccelerationStructureSRTMotionInstanceNV = AccelerationStructureSRTMotionInstanceNV {}
- data AccelerationStructureMatrixMotionInstanceNV = AccelerationStructureMatrixMotionInstanceNV {}
- data AccelerationStructureMotionInstanceNV = AccelerationStructureMotionInstanceNV {}
- data AccelerationStructureMotionInstanceDataNV
- newtype AccelerationStructureMotionInfoFlagsNV = AccelerationStructureMotionInfoFlagsNV Flags
- newtype AccelerationStructureMotionInstanceFlagsNV = AccelerationStructureMotionInstanceFlagsNV Flags
- newtype AccelerationStructureMotionInstanceTypeNV where
- AccelerationStructureMotionInstanceTypeNV Int32
- pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV :: AccelerationStructureMotionInstanceTypeNV
- pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV :: AccelerationStructureMotionInstanceTypeNV
- pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV :: AccelerationStructureMotionInstanceTypeNV
- type NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION = 1
- pattern NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION :: forall a. Integral a => a
- type NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME = "VK_NV_ray_tracing_motion_blur"
- pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- data TransformMatrixKHR = TransformMatrixKHR {
- matrixRow0 :: (Float, Float, Float, Float)
- matrixRow1 :: (Float, Float, Float, Float)
- matrixRow2 :: (Float, Float, Float, Float)
- data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR {}
- data DeviceOrHostAddressConstKHR
- newtype GeometryInstanceFlagBitsKHR where
- GeometryInstanceFlagBitsKHR Flags
- pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT :: GeometryInstanceFlagBitsKHR
- type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR
- newtype BuildAccelerationStructureFlagBitsKHR where
- BuildAccelerationStructureFlagBitsKHR Flags
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV :: BuildAccelerationStructureFlagBitsKHR
- type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR
- newtype AccelerationStructureCreateFlagBitsKHR where
- AccelerationStructureCreateFlagBitsKHR Flags
- pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR :: AccelerationStructureCreateFlagBitsKHR
- pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV :: AccelerationStructureCreateFlagBitsKHR
- pattern ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT :: AccelerationStructureCreateFlagBitsKHR
- type AccelerationStructureCreateFlagsKHR = AccelerationStructureCreateFlagBitsKHR
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
Instances
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
AccelerationStructureGeometryMotionTrianglesDataNV | |
|
Instances
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
AccelerationStructureMotionInfoNV | |
|
Instances
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
SRTDataNV | |
|
Instances
Storable SRTDataNV Source # | |
Show SRTDataNV Source # | |
Eq SRTDataNV Source # | |
FromCStruct SRTDataNV Source # | |
ToCStruct SRTDataNV Source # | |
Zero SRTDataNV Source # | |
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
AccelerationStructureSRTMotionInstanceNV | |
|
Instances
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
AccelerationStructureMatrixMotionInstanceNV | |
|
Instances
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)
-
type
must be a validAccelerationStructureMotionInstanceTypeNV
value
-
flags
must be0
-
If
type
isACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV
, thestaticInstance
member ofdata
must be a validAccelerationStructureInstanceKHR
structure -
If
type
isACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV
, thematrixMotionInstance
member ofdata
must be a validAccelerationStructureMatrixMotionInstanceNV
structure -
If
type
isACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV
, thesrtMotionInstance
member ofdata
must be a validAccelerationStructureSRTMotionInstanceNV
structure
See Also
VK_NV_ray_tracing_motion_blur,
AccelerationStructureMotionInstanceDataNV
,
AccelerationStructureMotionInstanceFlagsNV
,
AccelerationStructureMotionInstanceTypeNV
AccelerationStructureMotionInstanceNV | |
|
Instances
data AccelerationStructureMotionInstanceDataNV Source #
StaticInstance AccelerationStructureInstanceKHR | |
MatrixMotionInstance AccelerationStructureMatrixMotionInstanceNV | |
SrtMotionInstance AccelerationStructureSRTMotionInstanceNV |
Instances
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
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
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
pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV :: AccelerationStructureMotionInstanceTypeNV |
|
pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV :: AccelerationStructureMotionInstanceTypeNV |
|
pattern ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV :: AccelerationStructureMotionInstanceTypeNV |
|
Instances
pattern NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION :: forall a. Integral a => a Source #
type NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME = "VK_NV_ray_tracing_motion_blur" Source #
pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
data TransformMatrixKHR Source #
VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix
Valid Usage
See Also
VK_KHR_acceleration_structure,
VK_NV_ray_tracing,
AccelerationStructureInstanceKHR
,
AccelerationStructureMatrixMotionInstanceNV
TransformMatrixKHR | |
|
Instances
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
AccelerationStructureInstanceKHR | |
|
Instances
data DeviceOrHostAddressConstKHR Source #
Instances
Show DeviceOrHostAddressConstKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_acceleration_structure showsPrec :: Int -> DeviceOrHostAddressConstKHR -> ShowS # show :: DeviceOrHostAddressConstKHR -> String # showList :: [DeviceOrHostAddressConstKHR] -> ShowS # | |
ToCStruct DeviceOrHostAddressConstKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_acceleration_structure withCStruct :: DeviceOrHostAddressConstKHR -> (Ptr DeviceOrHostAddressConstKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr DeviceOrHostAddressConstKHR -> DeviceOrHostAddressConstKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr DeviceOrHostAddressConstKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DeviceOrHostAddressConstKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
Zero DeviceOrHostAddressConstKHR Source # | |
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
Instances
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
Instances
newtype AccelerationStructureCreateFlagBitsKHR Source #
VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional creation parameters for acceleration structure
See Also
VK_KHR_acceleration_structure,
AccelerationStructureCreateFlagsKHR
pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR :: AccelerationStructureCreateFlagBitsKHR |
|
pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV :: AccelerationStructureCreateFlagBitsKHR | |
pattern ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT :: AccelerationStructureCreateFlagBitsKHR |
|