; SPIR-V
; Version: 1.0
; Generator: Google Shaderc over Glslang; 6
; Bound: 70
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
	       OpEntryPoint Vertex %entry_vert_ "entry_vert" %_ %iUV %oUV %pos
	       OpEntryPoint Fragment %entry_frag_ "entry_frag" %iUV %colour
               OpSource GLSL 450
               OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
               OpSourceExtension "GL_GOOGLE_include_directive"
               OpName %getData_ "getData("
               OpName %entry_vert_ "entry_vert("
               OpName %entry_frag_ "entry_frag("
               OpName %Ubo "Ubo"
               OpMemberName %Ubo 0 "data"
               OpName %ubo "ubo"
               OpName %oUV "oUV"
               OpName %iUV "iUV"
               OpName %gl_PerVertex "gl_PerVertex"
               OpMemberName %gl_PerVertex 0 "gl_Position"
               OpName %_ ""
               OpName %pos "pos"
               OpName %PushConstantVert "PushConstantVert"
               OpMemberName %PushConstantVert 0 "val"
               OpName %push_constant_vert "push_constant_vert"
               OpName %PushConstantFrag "PushConstantFrag"
               OpMemberName %PushConstantFrag 0 "val"
               OpName %push_constant_frag "push_constant_frag"
               OpName %colour "colour"
               OpName %tex "tex"
               OpMemberDecorate %Ubo 0 Offset 0
               OpDecorate %Ubo Block
               OpDecorate %ubo DescriptorSet 0
               OpDecorate %ubo Binding 1
               OpDecorate %oUV Location 0
               OpDecorate %iUV Location 0
               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
               OpDecorate %gl_PerVertex Block
               OpDecorate %pos Location 1
               OpMemberDecorate %PushConstantVert 0 Offset 0
               OpDecorate %PushConstantVert Block
               OpDecorate %colour Location 0
               OpDecorate %tex DescriptorSet 0
               OpDecorate %tex Binding 0
       %void = OpTypeVoid
          %3 = OpTypeFunction %void
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
          %8 = OpTypeFunction %v4float
        %Ubo = OpTypeStruct %v4float
%_ptr_Uniform_Ubo = OpTypePointer Uniform %Ubo
        %ubo = OpVariable %_ptr_Uniform_Ubo Uniform
        %int = OpTypeInt 32 1
      %int_0 = OpConstant %int 0
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
    %v2float = OpTypeVector %float 2
%_ptr_Output_v2float = OpTypePointer Output %v2float
        %oUV = OpVariable %_ptr_Output_v2float Output
%_ptr_Input_v2float = OpTypePointer Input %v2float
        %iUV = OpVariable %_ptr_Input_v2float Input
%gl_PerVertex = OpTypeStruct %v4float
%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
          %_ = OpVariable %_ptr_Output_gl_PerVertex Output
    %v3float = OpTypeVector %float 3
%_ptr_Input_v3float = OpTypePointer Input %v3float
        %pos = OpVariable %_ptr_Input_v3float Input
    %float_1 = OpConstant %float 1
%PushConstantVert = OpTypeStruct %float
%_ptr_PushConstant_PushConstantVert = OpTypePointer PushConstant %PushConstantVert
%push_constant_vert = OpVariable %_ptr_PushConstant_PushConstantVert PushConstant
%PushConstantFrag = OpTypeStruct %float
%_ptr_PushConstant_PushConstantFrag = OpTypePointer PushConstant %PushConstantFrag
%push_constant_frag = OpVariable %_ptr_PushConstant_PushConstantFrag PushConstant
%_ptr_PushConstant_float = OpTypePointer PushConstant %float
%_ptr_Output_v4float = OpTypePointer Output %v4float
     %colour = OpVariable %_ptr_Output_v4float Output
         %55 = OpTypeImage %float 2D 0 0 0 1 Unknown
         %56 = OpTypeSampledImage %55
%_ptr_UniformConstant_56 = OpTypePointer UniformConstant %56
        %tex = OpVariable %_ptr_UniformConstant_56 UniformConstant
    %float_0 = OpConstant %float 0
   %getData_ = OpFunction %v4float None %8
         %10 = OpLabel
         %21 = OpAccessChain %_ptr_Uniform_v4float %ubo %int_0
         %22 = OpLoad %v4float %21
               OpReturnValue %22
               OpFunctionEnd
%entry_vert_ = OpFunction %void None %3
         %12 = OpLabel
         %30 = OpLoad %v2float %iUV
               OpStore %oUV %30
         %37 = OpLoad %v3float %pos
         %39 = OpCompositeExtract %float %37 0
         %40 = OpCompositeExtract %float %37 1
         %41 = OpCompositeExtract %float %37 2
         %42 = OpCompositeConstruct %v4float %39 %40 %41 %float_1
         %47 = OpAccessChain %_ptr_PushConstant_float %push_constant_vert %int_0
         %48 = OpLoad %float %47
         %49 = OpVectorTimesScalar %v4float %42 %48
         %50 = OpFunctionCall %v4float %getData_
         %51 = OpFMul %v4float %49 %50
         %53 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %53 %51
               OpReturn
               OpFunctionEnd
%entry_frag_ = OpFunction %void None %3
         %14 = OpLabel
         %59 = OpLoad %56 %tex
         %60 = OpLoad %v2float %iUV
         %62 = OpImageSampleExplicitLod %v4float %59 %60 Lod %float_0
         %63 = OpAccessChain %_ptr_PushConstant_float %push_constant_frag %int_0
         %64 = OpLoad %float %63
         %65 = OpVectorTimesScalar %v4float %62 %64
         %66 = OpFunctionCall %v4float %getData_
         %67 = OpFMul %v4float %65 %66
               OpStore %colour %67
               OpReturn
               OpFunctionEnd
