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

struct _14
{
    vec4 _m0;
};

layout(set = 0, binding = 0) uniform accelerationStructureEXT AS;
layout(set = 0, binding = 0) uniform writeonly image2D IMG;
layout(location = 0) rayPayloadEXT _14 _16;

void main()
{
    traceRayEXT(AS, 273u, 0u, 1u, 2u, 3u, vec3(1.0, 2.0, 3.0), 7.0, vec3(4.0, 5.0, 6.0), 8.0, 0);
    imageStore(IMG, ivec2(uvec2(0u)), vec4(_16._m0));
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.4
; Generator: Unknown(30017); 21022
; Bound: 48
; Schema: 0
OpCapability Shader
OpCapability UniformBufferArrayDynamicIndexing
OpCapability SampledImageArrayDynamicIndexing
OpCapability StorageBufferArrayDynamicIndexing
OpCapability StorageImageArrayDynamicIndexing
OpCapability StorageImageWriteWithoutFormat
OpCapability RayTraversalPrimitiveCullingKHR
OpCapability RayTracingKHR
OpCapability RuntimeDescriptorArray
OpCapability UniformBufferArrayNonUniformIndexing
OpCapability SampledImageArrayNonUniformIndexing
OpCapability StorageBufferArrayNonUniformIndexing
OpCapability StorageImageArrayNonUniformIndexing
OpExtension "SPV_EXT_descriptor_indexing"
OpExtension "SPV_KHR_ray_tracing"
OpMemoryModel Logical GLSL450
OpEntryPoint RayGenerationNV %3 "main" %8 %12 %16
OpName %3 "main"
OpName %8 "AS"
OpName %12 "IMG"
OpName %14 ""
OpDecorate %8 DescriptorSet 0
OpDecorate %8 Binding 0
OpDecorate %12 DescriptorSet 0
OpDecorate %12 Binding 0
OpDecorate %12 NonReadable
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeInt 32 1
%6 = OpTypeAccelerationStructureKHR
%7 = OpTypePointer UniformConstant %6
%8 = OpVariable %7 UniformConstant
%9 = OpTypeFloat 32
%10 = OpTypeImage %9 2D 0 0 0 2 Unknown
%11 = OpTypePointer UniformConstant %10
%12 = OpVariable %11 UniformConstant
%13 = OpTypeVector %9 4
%14 = OpTypeStruct %13
%15 = OpTypePointer RayPayloadNV %14
%16 = OpVariable %15 RayPayloadNV
%18 = OpTypeInt 32 0
%19 = OpConstant %18 273
%20 = OpConstant %18 0
%21 = OpConstant %18 1
%22 = OpConstant %18 2
%23 = OpConstant %18 3
%24 = OpConstant %9 1
%25 = OpConstant %9 4
%26 = OpConstant %9 2
%27 = OpConstant %9 5
%28 = OpConstant %9 3
%29 = OpConstant %9 6
%30 = OpConstant %9 7
%31 = OpConstant %9 8
%32 = OpTypeVector %9 3
%35 = OpTypePointer RayPayloadNV %13
%43 = OpTypeVector %18 2
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %46
%46 = OpLabel
%17 = OpLoad %6 %8
%33 = OpCompositeConstruct %32 %24 %26 %28
%34 = OpCompositeConstruct %32 %25 %27 %29
OpTraceRayKHR %17 %19 %20 %21 %22 %23 %33 %30 %34 %31 %16
%36 = OpInBoundsAccessChain %35 %16 %20
%37 = OpLoad %13 %36
%38 = OpLoad %10 %12
%39 = OpCompositeExtract %9 %37 0
%40 = OpCompositeExtract %9 %37 1
%41 = OpCompositeExtract %9 %37 2
%42 = OpCompositeExtract %9 %37 3
%44 = OpCompositeConstruct %43 %20 %20
%45 = OpCompositeConstruct %13 %39 %40 %41 %42
OpImageWrite %38 %44 %45
OpReturn
OpFunctionEnd
#endif
