|
| 1 | +// rayquery-closesthit.slang |
| 2 | +//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_EXT_ray_tracing -stage closesthit -entry main -target spirv-assembly |
| 3 | +//TEST:SIMPLE(filecheck=CHECK): -stage closesthit -entry main -target spirv-assembly -emit-spirv-directly |
| 4 | + |
| 5 | +struct IntersectionPayload |
| 6 | +{ |
| 7 | + float3 triangleVerticeCommitted[3]; |
| 8 | + float3 triangleVerticeCandidate[3]; |
| 9 | +}; |
| 10 | + |
| 11 | +RaytracingAccelerationStructure accelerationStructure; |
| 12 | + |
| 13 | +void main( |
| 14 | + BuiltInTriangleIntersectionAttributes attributes, |
| 15 | + in out IntersectionPayload ioPayload) |
| 16 | +{ |
| 17 | + RayQuery<RAY_FLAG_NONE> rayQuery; |
| 18 | + |
| 19 | + uint instanceInclusionMask = 0x00; |
| 20 | + RayDesc rayDesc; |
| 21 | + rayQuery.TraceRayInline(accelerationStructure, RAY_FLAG_NONE, instanceInclusionMask, rayDesc); |
| 22 | + |
| 23 | + ioPayload.triangleVerticeCommitted = rayQuery.CandidateGetIntersectionTriangleVertexPositions(); |
| 24 | + ioPayload.triangleVerticeCandidate = rayQuery.CommittedGetIntersectionTriangleVertexPositions(); |
| 25 | +} |
| 26 | + |
| 27 | +// CHECK: OpCapability RayQueryKHR |
| 28 | +// CHECK: OpCapability RayTracingPositionFetchKHR |
| 29 | +// CHECK: OpCapability RayQueryPositionFetchKHR |
| 30 | +// CHECK: OpExtension "SPV_KHR_ray_query" |
| 31 | +// CHECK: OpExtension "SPV_KHR_ray_tracing_position_fetch" |
| 32 | +// CHECK: OpEntryPoint ClosestHitNV %main "main" |
| 33 | +// CHECK: OpRayQueryInitializeKHR %rayQuery{{.*}} |
| 34 | +// CHECK: OpRayQueryGetIntersectionTriangleVertexPositionsKHR %_arr_v3float_{{u?}}int_3{{.*}} %rayQuery{{.*}} %{{u?}}int_0 |
| 35 | +// CHECK: OpRayQueryGetIntersectionTriangleVertexPositionsKHR %_arr_v3float_{{u?}}int_3{{.*}} %rayQuery{{.*}} %{{u?}}int_1 |
0 commit comments