From a8c8b1698d8aff5d2cf2ddfd664d506096dbaf0f Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Mon, 11 Oct 2021 12:50:56 -0400 Subject: Support for GL_NV_ray_tracing_motion_blur vk extension (#1964) * #include an absolute path didn't work - because paths were taken to always be relative. * Upgrade to GLSLANG 11.16.0+ * Small edit to readme - really to kick another build. * Upgrade slang-binaries to include new glslang binaries. * Update slang-binaries to include linux-x86 * Upgrade slang-binaries. * Support for GL_NV_ray_tracing_motion_blur extension. --- source/slang/hlsl.meta.slang | 77 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) (limited to 'source') diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index aa833a5e7..465a7633f 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -4512,6 +4512,73 @@ void TraceRay( Payload = p; } + +// NOTE! +// The name of the following functions may change when DXR supports +// a feature similar to the `GL_NV_ray_tracing_motion_blur` extension + +void TraceMotionRay( + RaytracingAccelerationStructure AccelerationStructure, + uint RayFlags, + uint InstanceInclusionMask, + uint RayContributionToHitGroupIndex, + uint MultiplierForGeometryContributionToHitGroupIndex, + uint MissShaderIndex, + RayDesc Ray, + float CurrentTime, + inout payload_t Payload); + +__target_intrinsic(glsl, "traceRayMotionNV") +__glsl_version(460) +__glsl_extension(GL_NV_ray_tracing_motion_blur) +__glsl_extension(GL_EXT_ray_tracing) +void __traceMotionRay( + RaytracingAccelerationStructure AccelerationStructure, + uint RayFlags, + uint InstanceInclusionMask, + uint RayContributionToHitGroupIndex, + uint MultiplierForGeometryContributionToHitGroupIndex, + uint MissShaderIndex, + float3 Origin, + float TMin, + float3 Direction, + float TMax, + float CurrentTime, + int PayloadLocation); + +__generic +__specialized_for_target(glsl) +void TraceMotionRay( + RaytracingAccelerationStructure AccelerationStructure, + uint RayFlags, + uint InstanceInclusionMask, + uint RayContributionToHitGroupIndex, + uint MultiplierForGeometryContributionToHitGroupIndex, + uint MissShaderIndex, + RayDesc Ray, + float CurrentTime, + inout payload_t Payload) +{ + [__vulkanRayPayload] + static payload_t p; + + p = Payload; + __traceMotionRay( + AccelerationStructure, + RayFlags, + InstanceInclusionMask, + RayContributionToHitGroupIndex, + MultiplierForGeometryContributionToHitGroupIndex, + MissShaderIndex, + Ray.Origin, + Ray.TMin, + Ray.Direction, + Ray.TMax, + CurrentTime, + __rayPayloadLocation(p)); + Payload = p; +} + // 10.3.3 __target_intrinsic(hlsl) bool ReportHit(float tHit, uint hitKind, A attributes); @@ -4642,6 +4709,16 @@ __target_intrinsic(GL_NV_ray_tracing, "(gl_WorldToObjectNV)") __target_intrinsic(GL_EXT_ray_tracing, "(gl_WorldToObject3x4EXT)") float4x3 WorldToObject4x3(); +// NOTE! +// The name of the following functions may change when DXR supports +// a feature similar to the `GL_NV_ray_tracing_motion_blur` extension + +__target_intrinsic(glsl, "(gl_CurrentRayTimeNV)") +__glsl_version(460) +__glsl_extension(GL_NV_ray_tracing_motion_blur) +__glsl_extension(GL_EXT_ray_tracing) +float RayCurrentTime(); + // Note: The provisional DXR spec included these unadorned // `ObjectToWorld()` and `WorldToObject()` functions, so // we will forward them to the new names as a convience -- cgit v1.2.3