// Copyright (c) 2021 NVIDIA Corporation
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_NV_ray_tracing_motion_blur.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2021-06-16
*Interactions and External Dependencies*::
  - This extension requires
    {spirv}/NV/SPV_NV_ray_tracing_motion_blur.html[`SPV_NV_ray_tracing_motion_blur`]
  - This extension provides API support for
    https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_ray_tracing_motion_blur.txt[`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 code: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
sname:VkAccelerationStructureGeometryMotionTrianglesDataNV and providing
multiple transforms in the instance using
sname:VkAccelerationStructureMotionInstanceNV.

include::{generated}/interfaces/VK_NV_ray_tracing_motion_blur.txt[]

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