diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 77 |
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 |
