diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 3635069e7..44d5fbe83 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -10208,6 +10208,42 @@ ${{{{ auto ccTF = candidateOrCommitted == 0 ? "false" : "true"; }}}} + __glsl_extension(GL_EXT_ray_query) + __glsl_extension(GL_EXT_ray_tracing_position_fetch) + __glsl_version(460) + [__NoSideEffect] + void __glslGetIntersectionTriangleVertexPositions$(ccName)(out float3 arr[3]) + { + __intrinsic_asm "rayQueryGetIntersectionTriangleVertexPositionsEXT($0, $(ccTF), $1)"; + }; + + __glsl_extension(GL_EXT_ray_query) + __glsl_extension(GL_EXT_ray_tracing_position_fetch) + __glsl_version(460) + [__NoSideEffect] + float3[3] $(ccName)GetIntersectionTriangleVertexPositions() + { + typedef float3[3] float3Arr3; + __target_switch + { + case glsl: + float3 output[3]; + __glslGetIntersectionTriangleVertexPositions$(ccName)(output); + return output; + case spirv: + uint iCandidateOrCommitted = $(candidateOrCommitted); + return spirv_asm + { + OpCapability RayQueryKHR; + OpCapability RayTracingPositionFetchKHR; + OpCapability RayQueryPositionFetchKHR; + OpExtension "SPV_KHR_ray_query"; + OpExtension "SPV_KHR_ray_tracing_position_fetch"; + result: $$float3Arr3 = OpRayQueryGetIntersectionTriangleVertexPositionsKHR &this $iCandidateOrCommitted; + }; + } + }; + // CandidateObjectToWorld3x4, CandidateWorldToObject4x3 // CommittedObjectToWorld3x4, CommittedObjectToWorld4x3 ${{{{ |
