diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2021-10-11 12:50:56 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-11 12:50:56 -0400 |
| commit | a8c8b1698d8aff5d2cf2ddfd664d506096dbaf0f (patch) | |
| tree | e1b5a56fd829acbd50075c7a6c854a07b79225f5 /source | |
| parent | 7aa0375f7419b21029e3bcc0a71e05e959f2f9e9 (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.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 |
