spv.glsl.register.autoassign.frag
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.


Linked fragment stage:


// Module Version 10000
// Generated by (magic number): 80001
// 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 11
                              Decorate 21(g_sSamp1) DescriptorSet 0
                              Decorate 21(g_sSamp1) Binding 5
                              Decorate 27(g_tTex2) DescriptorSet 0
                              Decorate 27(g_tTex2) Binding 14
                              Decorate 29(g_sSamp2) DescriptorSet 0
                              Decorate 29(g_sSamp2) Binding 6
                              Decorate 39(g_tTex3) DescriptorSet 0
                              Decorate 39(g_tTex3) Binding 13
                              Decorate 46(g_sSamp3) DescriptorSet 0
                              Decorate 46(g_sSamp3) Binding 7
                              Decorate 64(g_tTex4) DescriptorSet 0
                              Decorate 64(g_tTex4) Binding 15
                              Decorate 69(g_sSamp4) DescriptorSet 0
                              Decorate 69(g_sSamp4) Binding 8
                              Decorate 84(g_tTex5) DescriptorSet 0
                              Decorate 84(g_tTex5) Binding 16
                              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 24
                              Decorate 119(g_tTex_unused1) DescriptorSet 0
                              Decorate 119(g_tTex_unused1) Binding 10
                              Decorate 121(g_sSamp_unused1) DescriptorSet 0
                              Decorate 126(g_tTex_unused2) DescriptorSet 0
                              Decorate 126(g_tTex_unused2) Binding 12
                              Decorate 128(g_sSamp_unused2) DescriptorSet 0
                              Decorate 141(g_tTex_unused3) DescriptorSet 0
               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
