@@ -86,14 +86,109 @@ static const float32_t3 HitTriangleVertexPositionsKHR[3];
8686[[vk::ext_instruction (spv::OpRayQueryGetIntersectionTriangleVertexPositionsKHR)]]
8787float3 rayQueryGetIntersectionTriangleVertexPositionsKHR ([[vk::ext_reference]] RayQueryKHR query, uint32_t committed)[3 ];
8888
89+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
90+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
91+ [[vk::ext_builtin_input (spv::BuiltInLaunchIdKHR)]]
92+ static const uint32_t3 LaunchIdKHR;
93+
94+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
95+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
96+ [[vk::ext_builtin_input (spv::BuiltInLaunchSizeKHR)]]
97+ static const uint32_t3 LaunchSizeKHR;
98+
99+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
100+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
101+ [[vk::ext_builtin_input (spv::BuiltInInstanceCustomIndexKHR)]]
102+ static const uint32_t InstanceCustomIndexKHR;
103+
104+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
105+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
106+ [[vk::ext_builtin_input (spv::BuiltInRayGeometryIndexKHR)]]
107+ static const uint32_t RayGeometryIndexKHR;
108+
109+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
110+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
111+ [[vk::ext_builtin_input (spv::BuiltInWorldRayOriginKHR)]]
112+ static const float32_t3 WorldRayOriginKHR;
89113
114+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
115+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
116+ [[vk::ext_builtin_input (spv::BuiltInWorldRayDirectionKHR)]]
117+ static const float32_t3 WorldRayDirectionKHR;
118+
119+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
120+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
121+ [[vk::ext_builtin_input (spv::BuiltInObjectRayOriginKHR)]]
122+ static const float32_t3 ObjectRayOriginKHR;
123+
124+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
125+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
126+ [[vk::ext_builtin_input (spv::BuiltInObjectRayDirectionKHR)]]
127+ static const float32_t3 ObjectRayDirectionKHR;
90128
91- //! Ray Tracing Pipeline stuff (TODO: @kevyu)
129+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
130+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
131+ [[vk::ext_builtin_input (spv::BuiltInRayTminKHR)]]
132+ static const float32_t RayTminKHR;
133+
134+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
135+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
136+ [[vk::ext_builtin_input (spv::BuiltInRayTmaxKHR)]]
137+ static const float32_t RayTmaxKHR;
138+
139+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
140+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
141+ [[vk::ext_builtin_input (spv::BuiltInObjectToWorldKHR)]]
142+ static const float32_t4x3 ObjectToWorldKHR;
143+
144+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
145+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
146+ [[vk::ext_builtin_input (spv::BuiltInWorldToObjectKHR)]]
147+ static const float32_t4x3 WorldToObjectKHR;
148+
149+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
150+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
151+ [[vk::ext_builtin_input (spv::BuiltInHitKindKHR)]]
152+ static const uint32_t HitKindKHR;
153+
154+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
155+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
156+ [[vk::ext_builtin_input (spv::BuiltInIncomingRayFlagsKHR)]]
157+ static const uint32_t IncomingRayFlagsKHR;
158+
159+ template <typename PayloadT>
160+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
161+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
162+ [[vk::ext_instruction (spv::OpTraceRayKHR)]]
163+ void traceRayKHR (AccelerationStructureKHR AS, uint32_t rayFlags, uint32_t cullMask, uint32_t sbtOffset, uint32_t sbtStride, uint32_t missIndex, float32_t3 rayOrigin, float32_t rayTmin, float32_t3 rayDirection, float32_t rayTmax, [[vk::ext_reference]] PayloadT payload);
164+
165+ template <typename PayloadT>
166+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
167+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
168+ [[vk::ext_instruction (spv::OpTraceRayKHR)]]
169+ void traceRayKHR (RaytracingAccelerationStructure AS, uint32_t rayFlags, uint32_t cullMask, uint32_t sbtOffset, uint32_t sbtStride, uint32_t missIndex, float32_t3 rayOrigin, float32_t rayTmin, float32_t3 rayDirection, float32_t rayTmax, [[vk::ext_reference]] PayloadT payload);
170+
171+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
172+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
173+ [[vk::ext_instruction (spv::OpReportIntersectionKHR)]]
174+ bool reportIntersectionKHR (float32_t hit, uint32_t hitKind);
175+
176+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
177+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
178+ [[vk::ext_instruction (spv::OpIgnoreIntersectionKHR)]]
179+ void ignoreIntersectionKHR ();
92180
93181[[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
94182[[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
95183[[vk::ext_instruction (spv::OpTerminateRayKHR)]]
96- void terminateRay ();
184+ void terminateRayKHR ();
185+
186+ template <typename T>
187+ [[vk::ext_capability (spv::CapabilityRayTracingKHR)]]
188+ [[vk::ext_extension ("SPV_KHR_ray_tracing" )]]
189+ [[vk::ext_instruction (spv::OpExecuteCallableKHR)]]
190+ void executeCallable (uint32_t sbtIndex, [[vk::ext_reference]] T payload);
191+
97192
98193}
99194}
0 commit comments