summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorkaizhangNV <149626564+kaizhangNV@users.noreply.github.com>2024-01-23 17:56:21 -0600
committerGitHub <noreply@github.com>2024-01-23 15:56:21 -0800
commitaf91e770f99da18ae97d6b601c706343cece11e9 (patch)
treefb604be730153f0d6940d0dd150673cfe2900dc5 /tests
parent5902acdabc4445a65741a7a6a3a95f223e301059 (diff)
Add support for rayQueryGetIntersectionTriangleVertexPositionsEXT (#3463)
Add a member function to RayQuery<RAY_FLAG> class GetIntersectionTriangleVertexPositions to support the GLSL built-int rayQueryGetIntersectionTriangleVertexPositionsEXT. Also add new test file under tests/vkray/rayquery-closesthit.slang to test this functionality.
Diffstat (limited to 'tests')
-rw-r--r--tests/vkray/rayquery-closesthit.slang35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/vkray/rayquery-closesthit.slang b/tests/vkray/rayquery-closesthit.slang
new file mode 100644
index 000000000..6576e09bd
--- /dev/null
+++ b/tests/vkray/rayquery-closesthit.slang
@@ -0,0 +1,35 @@
+// rayquery-closesthit.slang
+//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_EXT_ray_tracing -stage closesthit -entry main -target spirv-assembly
+//TEST:SIMPLE(filecheck=CHECK): -stage closesthit -entry main -target spirv-assembly -emit-spirv-directly
+
+struct IntersectionPayload
+{
+ float3 triangleVerticeCommitted[3];
+ float3 triangleVerticeCandidate[3];
+};
+
+RaytracingAccelerationStructure accelerationStructure;
+
+void main(
+ BuiltInTriangleIntersectionAttributes attributes,
+ in out IntersectionPayload ioPayload)
+{
+ RayQuery<RAY_FLAG_NONE> rayQuery;
+
+ uint instanceInclusionMask = 0x00;
+ RayDesc rayDesc;
+ rayQuery.TraceRayInline(accelerationStructure, RAY_FLAG_NONE, instanceInclusionMask, rayDesc);
+
+ ioPayload.triangleVerticeCommitted = rayQuery.CandidateGetIntersectionTriangleVertexPositions();
+ ioPayload.triangleVerticeCandidate = rayQuery.CommittedGetIntersectionTriangleVertexPositions();
+}
+
+// CHECK: OpCapability RayQueryKHR
+// CHECK: OpCapability RayTracingPositionFetchKHR
+// CHECK: OpCapability RayQueryPositionFetchKHR
+// CHECK: OpExtension "SPV_KHR_ray_query"
+// CHECK: OpExtension "SPV_KHR_ray_tracing_position_fetch"
+// CHECK: OpEntryPoint ClosestHitNV %main "main"
+// CHECK: OpRayQueryInitializeKHR %rayQuery{{.*}}
+// CHECK: OpRayQueryGetIntersectionTriangleVertexPositionsKHR %_arr_v3float_{{u?}}int_3{{.*}} %rayQuery{{.*}} %{{u?}}int_0
+// CHECK: OpRayQueryGetIntersectionTriangleVertexPositionsKHR %_arr_v3float_{{u?}}int_3{{.*}} %rayQuery{{.*}} %{{u?}}int_1