#version 460
#extension GL_EXT_ray_query : require
#extension GL_EXT_ray_tracing : require
#extension GL_EXT_ray_flags_primitive_culling : require
layout(primitive_culling);

layout(set = 0, binding = 0) uniform accelerationStructureEXT AS0;
layout(set = 0, binding = 1) uniform accelerationStructureEXT AS1;

layout(set = 0, binding = 2) uniform Params
{
	uint ray_flags;
	uint cull_mask;
	vec3 origin;
	float tmin;
	vec3 dir;
	float tmax;
	float thit;
};

rayQueryEXT q2[2];

void main()
{
	rayQueryEXT q;
	bool res;
	uint type;
	float fval;
	vec3 fvals;
	int ival;
	mat4x3 matrices;

	rayQueryInitializeEXT(q, AS0, ray_flags, cull_mask, origin, tmin, dir, tmax);
	rayQueryInitializeEXT(q2[1], AS1, ray_flags, cull_mask, origin, tmin, dir, tmax);

	res = rayQueryProceedEXT(q);
	rayQueryTerminateEXT(q2[0]);
	rayQueryGenerateIntersectionEXT(q, thit);
	rayQueryConfirmIntersectionEXT(q2[1]);
	fval = rayQueryGetRayTMinEXT(q);
	fvals = rayQueryGetWorldRayDirectionEXT(q);
	fvals = rayQueryGetWorldRayOriginEXT(q);
	type = rayQueryGetIntersectionTypeEXT(q2[1], true);
	type = rayQueryGetIntersectionTypeEXT(q2[0], false);
	res = rayQueryGetIntersectionCandidateAABBOpaqueEXT(q2[1]);
	fval = rayQueryGetIntersectionTEXT(q2[1], true);
	fval = rayQueryGetIntersectionTEXT(q2[1], false);
	ival = rayQueryGetIntersectionInstanceCustomIndexEXT(q, true);
	ival = rayQueryGetIntersectionInstanceIdEXT(q2[0], false);
	ival = rayQueryGetIntersectionGeometryIndexEXT(q2[1], false);
	ival = rayQueryGetIntersectionPrimitiveIndexEXT(q, true);
	fvals.xy = rayQueryGetIntersectionBarycentricsEXT(q2[0], false);
	res = rayQueryGetIntersectionFrontFaceEXT(q, true);
	fvals = rayQueryGetIntersectionObjectRayDirectionEXT(q, false);
	fvals = rayQueryGetIntersectionObjectRayOriginEXT(q2[0], true);
	matrices = rayQueryGetIntersectionObjectToWorldEXT(q, false);
	matrices = rayQueryGetIntersectionWorldToObjectEXT(q2[1], true);
}
