@@ -13,7 +13,10 @@ namespace hlsl
13
13
namespace spirv
14
14
{
15
15
16
+ //[[vk::ext_capability(spv::CapabilityRayQueryKHR)]] https://github.com/microsoft/DirectXShaderCompiler/issues/6958
16
17
using RayQueryKHR = vk::SpirvOpaqueType<spv::OpTypeRayQueryKHR>;
18
+
19
+ //[[vk::ext_capability(spv::CapabilityAccelerationStructureKHR)]]
17
20
using AccelerationStructureKHR = vk::SpirvOpaqueType<spv::OpTypeAccelerationStructureKHR>;
18
21
19
22
// matching Ray Query Committed Intersection Type
@@ -26,34 +29,46 @@ static const uint32_t RayQueryCandidateIntersectionTriangleKHR = 0;
26
29
static const uint32_t RayQueryCandidateIntersectionAABBKHR = 1 ;
27
30
28
31
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
32
+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
29
33
[[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);
34
+ void rayQueryInitializeKHR ([[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
35
32
36
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
37
+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
33
38
[[vk::ext_instruction (spv::OpRayQueryInitializeKHR)]]
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);
39
+ void rayQueryInitializeKHR ([[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);
35
40
36
41
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
42
+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
37
43
[[vk::ext_instruction (spv::OpRayQueryProceedKHR)]]
38
- bool rayQueryProceedEXT ([[vk::ext_reference]] RayQueryKHR query);
44
+ bool rayQueryProceedKHR ([[vk::ext_reference]] RayQueryKHR query);
39
45
40
46
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
47
+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
41
48
[[vk::ext_instruction (spv::OpRayQueryGetIntersectionTypeKHR)]]
42
- int rayQueryGetIntersectionTypeEXT ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
49
+ int rayQueryGetIntersectionTypeKHR ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
43
50
44
51
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
52
+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
45
53
[[vk::ext_instruction (spv::OpRayQueryGetIntersectionInstanceIdKHR)]]
46
- int rayQueryGetIntersectionInstanceIdEXT ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
54
+ int rayQueryGetIntersectionInstanceIdKHR ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
47
55
48
56
[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
57
+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
49
58
[[vk::ext_instruction (spv::OpRayQueryGetIntersectionPrimitiveIndexKHR)]]
50
- int rayQueryGetIntersectionPrimitiveIndexEXT ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
59
+ int rayQueryGetIntersectionPrimitiveIndexKHR ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
51
60
52
61
// position fetch for ray tracing uses gl_HitTriangleVertexPositionsEXT -> HitTriangleVertexPositionsKHR decorated OpVariable
62
+ [[vk::ext_builtin_input (spv::BuiltInHitTriangleVertexPositionsKHR)]]
63
+ static const float32_t3 HitTriangleVertexPositionsKHR[3 ];
53
64
54
65
[[vk::ext_capability (spv::CapabilityRayQueryPositionFetchKHR)]]
66
+ [[vk::ext_extension ("SPV_KHR_ray_tracing_position_fetch" )]]
55
67
[[vk::ext_instruction (spv::OpRayQueryGetIntersectionTriangleVertexPositionsKHR)]] // ray query version
56
- void rayQueryGetIntersectionTriangleVertexPositionsEXT ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection, out float32_t3 pos[3 ]);
68
+ void rayQueryGetIntersectionTriangleVertexPositionsKHR ([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection, out float32_t3 pos[3 ]);
69
+ // how else would you pass an array of float3s?
70
+ // attempting to compile this with usage on godbolt gives: fatal error: failed to legalize SPIR-V: Id 3346 is defined more than once
71
+ // but without usage is fine
57
72
58
73
}
59
74
}
0 commit comments