1
+ // Copyright (C) 2023 - DevSH Graphics Programming Sp. z O.O.
2
+ // This file is part of the "Nabla Engine".
3
+ // For conditions of distribution and use, see copyright notice in nabla.h
4
+ #ifndef _NBL_BUILTIN_HLSL_SPIRV_INTRINSICS_RAYTRACING_INCLUDED_
5
+ #define _NBL_BUILTIN_HLSL_SPIRV_INTRINSICS_RAYTRACING_INCLUDED_
6
+
7
+ // #include "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl"
8
+
9
+ namespace nbl
10
+ {
11
+ namespace hlsl
12
+ {
13
+ namespace spirv
14
+ {
15
+
16
+ [[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
17
+ [[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*/ );
19
+
20
+ [[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
21
+ [[vk::ext_instruction (spv::OpRayQueryProceedKHR)]]
22
+ bool rayQueryProceedEXT (/* spv::OpTypeRayQueryKHR function_ptr query */ );
23
+
24
+ [[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
25
+ [[vk::ext_instruction (spv::OpRayQueryGetIntersectionTypeKHR)]]
26
+ int rayQueryGetIntersectionTypeEXT (/* spv::OpTypeRayQueryKHR function_ptr query, uint32_t intersection (candidate 0, commited 1) */ );
27
+
28
+ [[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
29
+ [[vk::ext_instruction (spv::OpRayQueryGetIntersectionInstanceIdKHR)]]
30
+ int rayQueryGetIntersectionInstanceIdEXT (/* spv::OpTypeRayQueryKHR function_ptr query, uint32_t intersection (candidate 0, commited 1) */ );
31
+
32
+ [[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
33
+ [[vk::ext_instruction (spv::OpRayQueryGetIntersectionPrimitiveIndexKHR)]]
34
+ int rayQueryGetIntersectionPrimitiveIndexEXT (/* spv::OpTypeRayQueryKHR function_ptr query, uint32_t intersection (candidate 0, commited 1) */ );
35
+
36
+ // position fetch for ray tracing uses gl_HitTriangleVertexPositionsEXT -> HitTriangleVertexPositionsKHR decorated OpVariable
37
+
38
+ [[vk::ext_capability (spv::CapabilityRayQueryPositionFetchKHR)]]
39
+ [[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] */ );
43
+
44
+ }
45
+ }
46
+ }
47
+
48
+ #endif // _NBL_BUILTIN_HLSL_SPIRV_INTRINSICS_RAYTRACING_INCLUDED_
0 commit comments