44#ifndef _NBL_BUILTIN_HLSL_SPIRV_INTRINSICS_RAYTRACING_INCLUDED_
55#define _NBL_BUILTIN_HLSL_SPIRV_INTRINSICS_RAYTRACING_INCLUDED_
66
7- // #include "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl"
7+ #include "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl"
88
99namespace nbl
1010{
@@ -13,33 +13,47 @@ namespace hlsl
1313namespace spirv
1414{
1515
16+ using RayQueryKHR = vk::SpirvOpaqueType<spv::OpTypeRayQueryKHR>;
17+ using AccelerationStructureKHR = vk::SpirvOpaqueType<spv::OpTypeAccelerationStructureKHR>;
18+
19+ // matching Ray Query Committed Intersection Type
20+ static const uint32_t RayQueryCommittedIntersectionNoneKHR = 0 ;
21+ static const uint32_t RayQueryCommittedIntersectionTriangleKHR = 1 ;
22+ static const uint32_t RayQueryCommittedIntersectionGeneratedKHR = 2 ;
23+
24+ // matching Ray Query Candidate Intersection Type
25+ static const uint32_t RayQueryCandidateIntersectionTriangleKHR = 0 ;
26+ static const uint32_t RayQueryCandidateIntersectionAABBKHR = 1 ;
27+
28+ [[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
29+ [[vk::ext_instruction (spv::OpRayQueryInitializeKHR)]]
30+ void rayQueryInitializeEXT ([[vk::ext_reference]] RayQueryKHR query, [[vk::ext_reference]] AccelerationStructureKHR AS, uint32_t flags, uint32_t cull mask, float3 origin, float32_t tmin, float3 direction, float32_t tmax);
31+
1632[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
1733[[vk::ext_instruction (spv::OpRayQueryInitializeKHR)]]
18- void rayQueryInitializeEXT (/* spv::OpTypeRayQueryKHR function_ptr query, spv::OpTypeAccelerationStructureKHR AS, uint32_t flags, uint32_t cull mask, float3 origin, float32_t tmin, float3 direction, float32_t tmax*/ );
34+ void rayQueryInitializeEXT ([[vk::ext_reference]] RayQueryKHR query, [[vk::ext_reference]] RaytracingAccelerationStructure AS, uint32_t flags, uint32_t cull mask, float3 origin, float32_t tmin, float3 direction, float32_t tmax);
1935
2036[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
2137[[vk::ext_instruction (spv::OpRayQueryProceedKHR)]]
22- bool rayQueryProceedEXT (/* spv::OpTypeRayQueryKHR function_ptr query */ );
38+ bool rayQueryProceedEXT ([[vk::ext_reference]] RayQueryKHR query);
2339
2440[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
2541[[vk::ext_instruction (spv::OpRayQueryGetIntersectionTypeKHR)]]
26- int rayQueryGetIntersectionTypeEXT (/* spv::OpTypeRayQueryKHR function_ptr query, uint32_t intersection (candidate 0, commited 1) */ );
42+ int rayQueryGetIntersectionTypeEXT ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
2743
2844[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
2945[[vk::ext_instruction (spv::OpRayQueryGetIntersectionInstanceIdKHR)]]
30- int rayQueryGetIntersectionInstanceIdEXT (/* spv::OpTypeRayQueryKHR function_ptr query, uint32_t intersection (candidate 0, commited 1) */ );
46+ int rayQueryGetIntersectionInstanceIdEXT ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
3147
3248[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
3349[[vk::ext_instruction (spv::OpRayQueryGetIntersectionPrimitiveIndexKHR)]]
34- int rayQueryGetIntersectionPrimitiveIndexEXT (/* spv::OpTypeRayQueryKHR function_ptr query, uint32_t intersection (candidate 0, commited 1) */ );
50+ int rayQueryGetIntersectionPrimitiveIndexEXT ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
3551
3652// position fetch for ray tracing uses gl_HitTriangleVertexPositionsEXT -> HitTriangleVertexPositionsKHR decorated OpVariable
3753
3854[[vk::ext_capability (spv::CapabilityRayQueryPositionFetchKHR)]]
3955[[vk::ext_instruction (spv::OpRayQueryGetIntersectionTriangleVertexPositionsKHR)]] // ray query version
40- // get intersection triangle vertex position - gl_HitTriangleVertexPositionsEXT
41- // returns 3-array float3 vertex positions
42- void rayQueryGetIntersectionTriangleVertexPositionsEXT (/* spv::OpTypeRayQueryKHR function_ptr query, uint32_t intersection (candidate 0, commited 1), out float3 positions[3] */ );
56+ void rayQueryGetIntersectionTriangleVertexPositionsEXT ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection, out float32_t3 pos[3 ]);
4357
4458}
4559}
0 commit comments