yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
ad379b7c5
master
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 5struct IntersectionPayload 6{ 7 float3 triangleVerticeCommitted[3]; 8 float3 triangleVerticeCandidate[3]; 9}; 10 11RaytracingAccelerationStructure accelerationStructure; 12 13void 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 RayQueryPositionFetchKHR 29// CHECK: OpExtension "SPV_KHR_ray_query" 30// CHECK: OpExtension "SPV_KHR_ray_tracing_position_fetch" 31// CHECK: OpEntryPoint ClosestHit{{NV|KHR}} %main "main" 32// CHECK: OpRayQueryInitializeKHR %rayQuery{{.*}} 33// CHECK: OpRayQueryGetIntersectionTriangleVertexPositionsKHR %_arr_v3float_{{u?}}int_3{{.*}} %rayQuery{{.*}} %{{u?}}int_0 34// CHECK: OpRayQueryGetIntersectionTriangleVertexPositionsKHR %_arr_v3float_{{u?}}int_3{{.*}} %rayQuery{{.*}} %{{u?}}int_1