@@ -13,7 +13,10 @@ namespace hlsl
1313namespace spirv
1414{
1515
16+ //[[vk::ext_capability(spv::CapabilityRayQueryKHR)]] https://github.com/microsoft/DirectXShaderCompiler/issues/6958
1617using RayQueryKHR = vk::SpirvOpaqueType<spv::OpTypeRayQueryKHR>;
18+
19+ //[[vk::ext_capability(spv::CapabilityAccelerationStructureKHR)]]
1720using AccelerationStructureKHR = vk::SpirvOpaqueType<spv::OpTypeAccelerationStructureKHR>;
1821
1922// matching Ray Query Committed Intersection Type
@@ -26,34 +29,46 @@ static const uint32_t RayQueryCandidateIntersectionTriangleKHR = 0;
2629static const uint32_t RayQueryCandidateIntersectionAABBKHR = 1 ;
2730
2831[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
32+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
2933[[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);
3135
3236[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
37+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
3338[[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);
3540
3641[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
42+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
3743[[vk::ext_instruction (spv::OpRayQueryProceedKHR)]]
38- bool rayQueryProceedEXT ([[vk::ext_reference]] RayQueryKHR query);
44+ bool rayQueryProceedKHR ([[vk::ext_reference]] RayQueryKHR query);
3945
4046[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
47+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
4148[[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);
4350
4451[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
52+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
4553[[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);
4755
4856[[vk::ext_capability (spv::CapabilityRayQueryKHR)]]
57+ [[vk::ext_extension ("SPV_KHR_ray_query" )]]
4958[[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);
5160
5261// 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 ];
5364
5465[[vk::ext_capability (spv::CapabilityRayQueryPositionFetchKHR)]]
66+ [[vk::ext_extension ("SPV_KHR_ray_tracing_position_fetch" )]]
5567[[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
5772
5873}
5974}
0 commit comments