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