// Covers accelerationStructureEXT as a resourceheap member used by ray queries.
#version 460
#extension GL_EXT_descriptor_heap : require
#extension GL_EXT_structured_descriptor_heap : require
#extension GL_EXT_ray_query : require

layout(local_size_x = 1) in;

layout(heap_offset = 4096) resourceheap RayHeap {
    accelerationStructureEXT topLevelAs;
} rayHeap;

layout(binding = 0, std430) buffer Output {
    uint values[2];
} outputBuffer;

void main()
{
    rayQueryEXT rayQuery;
    rayQueryInitializeEXT(rayQuery, rayHeap.topLevelAs, 0u, 0xFFu, vec3(0.0), 0.0, vec3(1.0, 0.0, 0.0), 1000.0);

    outputBuffer.values[0] = rayQueryProceedEXT(rayQuery) ? 1u : 0u;
    outputBuffer.values[1] = rayQueryGetRayFlagsEXT(rayQuery);
}
