summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2021-10-11 12:50:56 -0400
committerGitHub <noreply@github.com>2021-10-11 12:50:56 -0400
commita8c8b1698d8aff5d2cf2ddfd664d506096dbaf0f (patch)
treee1b5a56fd829acbd50075c7a6c854a07b79225f5 /source
parent7aa0375f7419b21029e3bcc0a71e05e959f2f9e9 (diff)
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.
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang77
1 files changed, 77 insertions, 0 deletions
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<payload_t>(
+ 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<payload_t>
+__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<A>(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