#version 460
#extension GL_EXT_ray_tracing : require
#extension GL_EXT_nonuniform_qualifier : require

struct _7
{
    vec4 _m0;
};

struct _11
{
    vec2 _m0;
};

vec2 _20;

layout(location = 0) rayPayloadInEXT _7 payload;
hitAttributeEXT _11 hit;

void main()
{
    payload._m0 = hit._m0.xyxy;
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.4
; Generator: Unknown(30017); 21022
; Bound: 25
; Schema: 0
OpCapability Shader
OpCapability UniformBufferArrayDynamicIndexing
OpCapability SampledImageArrayDynamicIndexing
OpCapability StorageBufferArrayDynamicIndexing
OpCapability StorageImageArrayDynamicIndexing
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 ClosestHitNV %3 "main" %9 %13
OpName %3 "main"
OpName %7 ""
OpName %9 "payload"
OpName %11 ""
OpName %13 "hit"
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeFloat 32
%6 = OpTypeVector %5 4
%7 = OpTypeStruct %6
%8 = OpTypePointer IncomingRayPayloadNV %7
%9 = OpVariable %8 IncomingRayPayloadNV
%10 = OpTypeVector %5 2
%11 = OpTypeStruct %10
%12 = OpTypePointer HitAttributeNV %11
%13 = OpVariable %12 HitAttributeNV
%14 = OpTypePointer HitAttributeNV %10
%16 = OpTypeInt 32 0
%17 = OpConstant %16 0
%21 = OpTypePointer IncomingRayPayloadNV %6
%3 = OpFunction %1 None %2
%4 = OpLabel
%20 = OpUndef %10
OpBranch %23
%23 = OpLabel
%15 = OpInBoundsAccessChain %14 %13 %17
%18 = OpLoad %10 %15
%19 = OpVectorShuffle %6 %18 %20 0 1 0 1
%22 = OpInBoundsAccessChain %21 %9 %17
OpStore %22 %19
OpReturn
OpFunctionEnd
#endif
