VK_NV_ray_tracing_motion_blur(3)

# VK_NV_ray_tracing_motion_blur(3) Manual Page

## Name

VK_NV_ray_tracing_motion_blur - device extension

Loading… please wait.

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

  - 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 `VkAccelerationStructureGeometryMotionTrianglesDataNV` and providing multiple transforms in the instance using `VkAccelerationStructureMotionInstanceNV`.

## New Structures

- VkAccelerationStructureMatrixMotionInstanceNV

- VkAccelerationStructureMotionInstanceNV

- VkAccelerationStructureSRTMotionInstanceNV

- VkSRTDataNV

- Extending VkAccelerationStructureCreateInfoKHR:

  - VkAccelerationStructureMotionInfoNV

- Extending VkAccelerationStructureGeometryTrianglesDataKHR:

  - VkAccelerationStructureGeometryMotionTrianglesDataNV

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceRayTracingMotionBlurFeaturesNV

## New Unions

- VkAccelerationStructureMotionInstanceDataNV

## New Enums

- VkAccelerationStructureMotionInstanceTypeNV

## New Bitmasks

- VkAccelerationStructureMotionInfoFlagsNV

- VkAccelerationStructureMotionInstanceFlagsNV

## New Enum Constants

- `VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME`

- `VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION`

- Extending VkAccelerationStructureCreateFlagBitsKHR:

  - `VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV`

- Extending VkBuildAccelerationStructureFlagBitsKHR:

  - `VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV`

- Extending VkPipelineCreateFlagBits:

  - `VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV`

  - `VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV`

## Issues

(1) What size is VkAccelerationStructureMotionInstanceNV?

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

(2) 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

VkAccelerationStructureGeometryMotionTrianglesDataNV, VkAccelerationStructureMatrixMotionInstanceNV, VkAccelerationStructureMotionInfoFlagsNV, VkAccelerationStructureMotionInfoNV, VkAccelerationStructureMotionInstanceDataNV, VkAccelerationStructureMotionInstanceFlagsNV, VkAccelerationStructureMotionInstanceNV, VkAccelerationStructureMotionInstanceTypeNV, VkAccelerationStructureSRTMotionInstanceNV, VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, VkSRTDataNV

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

## Copyright

Copyright 2014-2022 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0