spv.glsl.register.noautoassign.frag
// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 142

                              Capability Shader
                              Capability Sampled1D
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 137
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "Func1("
                              Name 11  "Func2("
                              Name 13  "Func2_unused("
                              Name 17  "g_tTex1"
                              Name 21  "g_sSamp1"
                              Name 27  "g_tTex2"
                              Name 29  "g_sSamp2"
                              Name 39  "g_tTex3"
                              Name 46  "g_sSamp3"
                              Name 64  "g_tTex4"
                              Name 69  "g_sSamp4"
                              Name 84  "g_tTex5"
                              Name 86  "g_sSamp5"
                              Name 93  "MyStruct_t"
                              MemberName 93(MyStruct_t) 0  "a"
                              MemberName 93(MyStruct_t) 1  "b"
                              MemberName 93(MyStruct_t) 2  "c"
                              Name 95  "myblock"
                              MemberName 95(myblock) 0  "mystruct"
                              MemberName 95(myblock) 1  "myvec4_a"
                              MemberName 95(myblock) 2  "myvec4_b"
                              MemberName 95(myblock) 3  "myint4_a"
                              Name 97  ""
                              Name 119  "g_tTex_unused1"
                              Name 121  "g_sSamp_unused1"
                              Name 126  "g_tTex_unused2"
                              Name 128  "g_sSamp_unused2"
                              Name 137  "FragColor"
                              Name 141  "g_tTex_unused3"
                              Decorate 17(g_tTex1) DescriptorSet 0
                              Decorate 17(g_tTex1) Binding 17
                              Decorate 21(g_sSamp1) DescriptorSet 0
                              Decorate 21(g_sSamp1) Binding 5
                              Decorate 27(g_tTex2) DescriptorSet 0
                              Decorate 27(g_tTex2) Binding 18
                              Decorate 29(g_sSamp2) DescriptorSet 0
                              Decorate 29(g_sSamp2) Binding 6
                              Decorate 39(g_tTex3) DescriptorSet 0
                              Decorate 39(g_tTex3) Binding 19
                              Decorate 46(g_sSamp3) DescriptorSet 0
                              Decorate 46(g_sSamp3) Binding 7
                              Decorate 64(g_tTex4) DescriptorSet 0
                              Decorate 64(g_tTex4) Binding 20
                              Decorate 69(g_sSamp4) DescriptorSet 0
                              Decorate 69(g_sSamp4) Binding 8
                              Decorate 84(g_tTex5) DescriptorSet 0
                              Decorate 84(g_tTex5) Binding 21
                              Decorate 86(g_sSamp5) DescriptorSet 0
                              Decorate 86(g_sSamp5) Binding 9
                              MemberDecorate 93(MyStruct_t) 0 Offset 0
                              MemberDecorate 93(MyStruct_t) 1 Offset 4
                              MemberDecorate 93(MyStruct_t) 2 Offset 16
                              MemberDecorate 95(myblock) 0 Offset 0
                              MemberDecorate 95(myblock) 1 Offset 32
                              MemberDecorate 95(myblock) 2 Offset 48
                              MemberDecorate 95(myblock) 3 Offset 64
                              Decorate 95(myblock) Block
                              Decorate 97 DescriptorSet 0
                              Decorate 97 Binding 19
                              Decorate 119(g_tTex_unused1) DescriptorSet 0
                              Decorate 119(g_tTex_unused1) Binding 22
                              Decorate 121(g_sSamp_unused1) DescriptorSet 0
                              Decorate 121(g_sSamp_unused1) Binding 10
                              Decorate 126(g_tTex_unused2) DescriptorSet 0
                              Decorate 126(g_tTex_unused2) Binding 23
                              Decorate 128(g_sSamp_unused2) DescriptorSet 0
                              Decorate 128(g_sSamp_unused2) Binding 11
                              Decorate 137(FragColor) Location 0
                              Decorate 141(g_tTex_unused3) DescriptorSet 0
                              Decorate 141(g_tTex_unused3) Binding 24
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
              15:             TypeImage 6(float) 1D sampled format:Unknown
              16:             TypePointer UniformConstant 15
     17(g_tTex1):     16(ptr) Variable UniformConstant
              19:             TypeSampler
              20:             TypePointer UniformConstant 19
    21(g_sSamp1):     20(ptr) Variable UniformConstant
              23:             TypeSampledImage 15
              25:    6(float) Constant 1036831949
     27(g_tTex2):     16(ptr) Variable UniformConstant
    29(g_sSamp2):     20(ptr) Variable UniformConstant
              32:    6(float) Constant 1045220557
              35:             TypeInt 32 0
              36:     35(int) Constant 2
              37:             TypeArray 15 36
              38:             TypePointer UniformConstant 37
     39(g_tTex3):     38(ptr) Variable UniformConstant
              40:             TypeInt 32 1
              41:     40(int) Constant 0
              44:             TypeArray 19 36
              45:             TypePointer UniformConstant 44
    46(g_sSamp3):     45(ptr) Variable UniformConstant
              50:    6(float) Constant 1050253722
              53:     40(int) Constant 1
              61:     35(int) Constant 3
              62:             TypeArray 15 61
              63:             TypePointer UniformConstant 62
     64(g_tTex4):     63(ptr) Variable UniformConstant
              67:             TypeArray 19 61
              68:             TypePointer UniformConstant 67
    69(g_sSamp4):     68(ptr) Variable UniformConstant
              73:    6(float) Constant 1053609165
              76:     40(int) Constant 2
     84(g_tTex5):     16(ptr) Variable UniformConstant
    86(g_sSamp5):     20(ptr) Variable UniformConstant
              89:    6(float) Constant 1056964608
              92:             TypeVector 6(float) 3
  93(MyStruct_t):             TypeStruct 40(int) 6(float) 92(fvec3)
              94:             TypeVector 40(int) 4
     95(myblock):             TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4)
              96:             TypePointer Uniform 95(myblock)
              97:     96(ptr) Variable Uniform
              98:     35(int) Constant 1
              99:             TypePointer Uniform 6(float)
119(g_tTex_unused1):     16(ptr) Variable UniformConstant
121(g_sSamp_unused1):     20(ptr) Variable UniformConstant
             124:    6(float) Constant 1066192077
126(g_tTex_unused2):     16(ptr) Variable UniformConstant
128(g_sSamp_unused2):     20(ptr) Variable UniformConstant
             131:    6(float) Constant 1067030938
             136:             TypePointer Output 7(fvec4)
  137(FragColor):    136(ptr) Variable Output
141(g_tTex_unused3):     16(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
             138:    7(fvec4) FunctionCall 9(Func1()
             139:    7(fvec4) FunctionCall 11(Func2()
             140:    7(fvec4) FAdd 138 139
                              Store 137(FragColor) 140
                              Return
                              FunctionEnd
       9(Func1():    7(fvec4) Function None 8
              10:             Label
              18:          15 Load 17(g_tTex1)
              22:          19 Load 21(g_sSamp1)
              24:          23 SampledImage 18 22
              26:    7(fvec4) ImageSampleImplicitLod 24 25
              28:          15 Load 27(g_tTex2)
              30:          19 Load 29(g_sSamp2)
              31:          23 SampledImage 28 30
              33:    7(fvec4) ImageSampleImplicitLod 31 32
              34:    7(fvec4) FAdd 26 33
              42:     16(ptr) AccessChain 39(g_tTex3) 41
              43:          15 Load 42
              47:     20(ptr) AccessChain 46(g_sSamp3) 41
              48:          19 Load 47
              49:          23 SampledImage 43 48
              51:    7(fvec4) ImageSampleImplicitLod 49 50
              52:    7(fvec4) FAdd 34 51
              54:     16(ptr) AccessChain 39(g_tTex3) 53
              55:          15 Load 54
              56:     20(ptr) AccessChain 46(g_sSamp3) 53
              57:          19 Load 56
              58:          23 SampledImage 55 57
              59:    7(fvec4) ImageSampleImplicitLod 58 50
              60:    7(fvec4) FAdd 52 59
              65:     16(ptr) AccessChain 64(g_tTex4) 53
              66:          15 Load 65
              70:     20(ptr) AccessChain 69(g_sSamp4) 53
              71:          19 Load 70
              72:          23 SampledImage 66 71
              74:    7(fvec4) ImageSampleImplicitLod 72 73
              75:    7(fvec4) FAdd 60 74
              77:     16(ptr) AccessChain 64(g_tTex4) 76
              78:          15 Load 77
              79:     20(ptr) AccessChain 69(g_sSamp4) 76
              80:          19 Load 79
              81:          23 SampledImage 78 80
              82:    7(fvec4) ImageSampleImplicitLod 81 73
              83:    7(fvec4) FAdd 75 82
              85:          15 Load 84(g_tTex5)
              87:          19 Load 86(g_sSamp5)
              88:          23 SampledImage 85 87
              90:    7(fvec4) ImageSampleImplicitLod 88 89
              91:    7(fvec4) FAdd 83 90
             100:     99(ptr) AccessChain 97 41 76 98
             101:    6(float) Load 100
             102:    7(fvec4) CompositeConstruct 101 101 101 101
             103:    7(fvec4) FAdd 91 102
                              ReturnValue 103
                              FunctionEnd
      11(Func2():    7(fvec4) Function None 8
              12:             Label
             106:          15 Load 17(g_tTex1)
             107:          19 Load 21(g_sSamp1)
             108:          23 SampledImage 106 107
             109:    7(fvec4) ImageSampleImplicitLod 108 25
             110:     16(ptr) AccessChain 39(g_tTex3) 53
             111:          15 Load 110
             112:     20(ptr) AccessChain 46(g_sSamp3) 53
             113:          19 Load 112
             114:          23 SampledImage 111 113
             115:    7(fvec4) ImageSampleImplicitLod 114 50
             116:    7(fvec4) FAdd 109 115
                              ReturnValue 116
                              FunctionEnd
13(Func2_unused():    7(fvec4) Function None 8
              14:             Label
             120:          15 Load 119(g_tTex_unused1)
             122:          19 Load 121(g_sSamp_unused1)
             123:          23 SampledImage 120 122
             125:    7(fvec4) ImageSampleImplicitLod 123 124
             127:          15 Load 126(g_tTex_unused2)
             129:          19 Load 128(g_sSamp_unused2)
             130:          23 SampledImage 127 129
             132:    7(fvec4) ImageSampleImplicitLod 130 131
             133:    7(fvec4) FAdd 125 132
                              ReturnValue 133
                              FunctionEnd
