#version 460
#extension GL_EXT_ray_query : require
#extension GL_EXT_ray_flags_primitive_culling : require
#extension GL_EXT_nonuniform_qualifier : require
layout(primitive_culling);
layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;

layout(set = 0, binding = 0, std140) uniform _14_16
{
    vec4 _m0[1];
} _16;

layout(set = 0, binding = 0) uniform accelerationStructureEXT _8[];

rayQueryEXT RayQueryHeap;

void main()
{
    uint _32[4];
    _32[0u] = 0u;
    _32[1u] = 0u;
    _32[2u] = 0u;
    _32[3u] = 0u;
    uvec4 _49 = floatBitsToUint(_16._m0[0u]);
    rayQueryInitializeEXT(RayQueryHeap, _8[_49.x], 4u, 255u, vec3(float(gl_GlobalInvocationID.x) + 0.5, float(gl_GlobalInvocationID.y) + 0.5, -1.0), 0.100000001490116119384765625, vec3(0.0, 0.0, 1.0), 1000.0);
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.3
; Generator: Unknown(30017); 21022
; Bound: 68
; Schema: 0
OpCapability Shader
OpCapability RayQueryKHR
OpCapability RayTraversalPrimitiveCullingKHR
OpCapability RuntimeDescriptorArray
OpExtension "SPV_EXT_descriptor_indexing"
OpExtension "SPV_KHR_ray_query"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %3 "main" %22
OpExecutionMode %3 LocalSize 8 8 1
OpName %3 "main"
OpName %14 ""
OpName %19 "RayQueryHeap"
OpDecorate %8 DescriptorSet 0
OpDecorate %8 Binding 0
OpDecorate %13 ArrayStride 16
OpMemberDecorate %14 0 Offset 0
OpDecorate %14 Block
OpDecorate %16 DescriptorSet 0
OpDecorate %16 Binding 0
OpDecorate %22 BuiltIn GlobalInvocationId
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeAccelerationStructureKHR
%6 = OpTypeRuntimeArray %5
%7 = OpTypePointer UniformConstant %6
%8 = OpVariable %7 UniformConstant
%9 = OpTypeInt 32 0
%10 = OpConstant %9 1
%11 = OpTypeFloat 32
%12 = OpTypeVector %11 4
%13 = OpTypeArray %12 %10
%14 = OpTypeStruct %13
%15 = OpTypePointer Uniform %14
%16 = OpVariable %15 Uniform
%17 = OpTypeRayQueryKHR
%18 = OpTypePointer Private %17
%19 = OpVariable %18 Private
%20 = OpTypeVector %9 3
%21 = OpTypePointer Input %20
%22 = OpVariable %21 Input
%23 = OpTypePointer Input %9
%25 = OpConstant %9 0
%29 = OpConstant %9 4
%30 = OpTypeArray %9 %29
%31 = OpTypePointer Function %30
%36 = OpConstant %11 0.5
%38 = OpTypePointer Function %9
%42 = OpConstant %9 2
%44 = OpConstant %9 3
%45 = OpTypePointer Uniform %12
%48 = OpTypeVector %9 4
%54 = OpTypePointer UniformConstant %5
%57 = OpConstant %9 255
%58 = OpConstant %11 0
%59 = OpConstant %11 -1
%60 = OpConstant %11 1
%61 = OpTypeVector %11 3
%63 = OpConstant %11 0.100000001
%65 = OpConstant %11 1000
%3 = OpFunction %1 None %2
%4 = OpLabel
%32 = OpVariable %31 Function
OpBranch %66
%66 = OpLabel
%24 = OpAccessChain %23 %22 %25
%26 = OpLoad %9 %24
%27 = OpAccessChain %23 %22 %10
%28 = OpLoad %9 %27
%33 = OpConvertUToF %11 %26
%34 = OpConvertUToF %11 %28
%35 = OpFAdd %11 %33 %36
%37 = OpFAdd %11 %34 %36
%39 = OpInBoundsAccessChain %38 %32 %25
OpStore %39 %25
%40 = OpInBoundsAccessChain %38 %32 %10
OpStore %40 %25
%41 = OpInBoundsAccessChain %38 %32 %42
OpStore %41 %25
%43 = OpInBoundsAccessChain %38 %32 %44
OpStore %43 %25
%46 = OpAccessChain %45 %16 %25 %25
%47 = OpLoad %12 %46
%49 = OpBitcast %48 %47
%50 = OpCompositeExtract %9 %49 1
%51 = OpInBoundsAccessChain %38 %32 %50
%52 = OpLoad %9 %51
%53 = OpCompositeExtract %9 %49 0
%55 = OpAccessChain %54 %8 %53
%56 = OpLoad %5 %55
%62 = OpCompositeConstruct %61 %35 %37 %59
%64 = OpCompositeConstruct %61 %58 %58 %60
OpRayQueryInitializeKHR %19 %56 %29 %57 %62 %63 %64 %65
OpReturn
OpFunctionEnd
#endif
