4
4
#ifndef _NBL_BUILTIN_HLSL_SPIRV_INTRINSICS_RAYTRACING_INCLUDED_
5
5
#define _NBL_BUILTIN_HLSL_SPIRV_INTRINSICS_RAYTRACING_INCLUDED_
6
6
7
- // #include "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl"
7
+ #include "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl"
8
8
9
9
namespace nbl
10
10
{
@@ -13,33 +13,47 @@ namespace hlsl
13
13
namespace spirv
14
14
{
15
15
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
+
16
32
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
17
33
[[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);
19
35
20
36
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
21
37
[[vk::ext_instruction (spv::OpRayQueryProceedKHR)]]
22
- bool rayQueryProceedEXT (/* spv::OpTypeRayQueryKHR function_ptr query */ );
38
+ bool rayQueryProceedEXT ([[vk::ext_reference]] RayQueryKHR query);
23
39
24
40
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
25
41
[[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);
27
43
28
44
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
29
45
[[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);
31
47
32
48
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
33
49
[[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);
35
51
36
52
// position fetch for ray tracing uses gl_HitTriangleVertexPositionsEXT -> HitTriangleVertexPositionsKHR decorated OpVariable
37
53
38
54
[[vk::ext_capability (spv::CapabilityRayQueryPositionFetchKHR)]]
39
55
[[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 ]);
43
57
44
58
}
45
59
}
0 commit comments