#version 460 #extension GL_EXT_ray_query : require #extension GL_EXT_ray_flags_primitive_culling : require #extension GL_EXT_ray_tracing : require layout(primitive_culling); layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; layout(set = 0, binding = 1, std140) uniform Params { uint ray_flags; uint cull_mask; vec3 origin; float tmin; vec3 dir; float tmax; float thit; uvec2 bda; } _19; layout(set = 0, binding = 0) uniform accelerationStructureEXT AS; rayQueryEXT q; rayQueryEXT q2[2]; void main() { rayQueryInitializeEXT(q, AS, _19.ray_flags, _19.cull_mask, _19.origin, _19.tmin, _19.dir, _19.tmax); rayQueryInitializeEXT(q2[1], accelerationStructureEXT(_19.bda), _19.ray_flags, _19.cull_mask, _19.origin, _19.tmin, _19.dir, _19.tmax); bool _67 = rayQueryProceedEXT(q); rayQueryTerminateEXT(q2[0]); rayQueryGenerateIntersectionEXT(q, _19.thit); rayQueryConfirmIntersectionEXT(q2[1]); float _75 = rayQueryGetRayTMinEXT(q); uint _79 = rayQueryGetRayFlagsEXT(q2[0]); vec3 _82 = rayQueryGetWorldRayDirectionEXT(q); vec3 _83 = rayQueryGetWorldRayOriginEXT(q); uint _86 = rayQueryGetIntersectionTypeEXT(q2[1], bool(1)); bool _88 = rayQueryGetIntersectionCandidateAABBOpaqueEXT(q2[1]); float _91 = rayQueryGetIntersectionTEXT(q2[1], bool(0)); int _94 = rayQueryGetIntersectionInstanceCustomIndexEXT(q, bool(1)); int _96 = rayQueryGetIntersectionInstanceIdEXT(q2[0], bool(0)); uint _97 = rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(q, bool(1)); int _99 = rayQueryGetIntersectionGeometryIndexEXT(q2[1], bool(0)); int _100 = rayQueryGetIntersectionPrimitiveIndexEXT(q, bool(1)); vec2 _103 = rayQueryGetIntersectionBarycentricsEXT(q2[0], bool(0)); bool _110 = rayQueryGetIntersectionFrontFaceEXT(q, bool(1)); vec3 _111 = rayQueryGetIntersectionObjectRayDirectionEXT(q, bool(0)); vec3 _113 = rayQueryGetIntersectionObjectRayOriginEXT(q2[0], bool(1)); mat4x3 _117 = rayQueryGetIntersectionObjectToWorldEXT(q, bool(0)); mat4x3 _119 = rayQueryGetIntersectionWorldToObjectEXT(q2[1], bool(1)); }