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