spv.accessChain.frag
Warning, version 420 is not yet complete; most version-specific features are present, but some are missing.


Linked fragment stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 198

                              Source GLSL 420
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginLowerLeft
                              Name 4  "main"
                              Name 9  "S"
                              MemberName 9(S) 0  "color"
                              Name 12  "GetColor1(struct-S-vf31;"
                              Name 11  "i"
                              Name 19  "GetColor2(struct-S-vf31;i1;"
                              Name 17  "i"
                              Name 18  "comp"
                              Name 23  "GetColor3(struct-S-vf31;i1;"
                              Name 21  "i"
                              Name 22  "comp"
                              Name 27  "GetColor4(struct-S-vf31;i1;"
                              Name 25  "i"
                              Name 26  "comp"
                              Name 31  "GetColor5(struct-S-vf31;i1;"
                              Name 29  "i"
                              Name 30  "comp"
                              Name 35  "GetColor6(struct-S-vf31;i1;"
                              Name 33  "i"
                              Name 34  "comp"
                              Name 39  "GetColor7(struct-S-vf31;i1;"
                              Name 37  "i"
                              Name 38  "comp"
                              Name 43  "GetColor8(struct-S-vf31;i1;"
                              Name 41  "i"
                              Name 42  "comp"
                              Name 47  "GetColor9(struct-S-vf31;i1;"
                              Name 45  "i"
                              Name 46  "comp"
                              Name 51  "GetColor10(struct-S-vf31;i1;"
                              Name 49  "i"
                              Name 50  "comp"
                              Name 55  "GetColor11(struct-S-vf31;i1;"
                              Name 53  "i"
                              Name 54  "comp"
                              Name 59  "GetColor12(struct-S-vf31;i1;"
                              Name 57  "i"
                              Name 58  "comp"
                              Name 63  "GetColor13(struct-S-vf31;i1;"
                              Name 61  "i"
                              Name 62  "comp"
                              Name 66  "OutColor"
                              Name 145  "s"
                              Name 150  "u"
                              Name 151  "param"
                              Name 155  "param"
                              Name 159  "param"
                              Name 163  "param"
                              Name 167  "param"
                              Name 171  "param"
                              Name 175  "param"
                              Name 179  "param"
                              Name 183  "param"
                              Name 187  "param"
                              Name 191  "param"
                              Name 195  "param"
                              Decorate 66(OutColor) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeFloat 32
               8:             TypeVector 7(float) 3
            9(S):             TypeStruct 8(fvec3)
              10:             TypeFunction 2 9(S)
              14:             TypeInt 32 1
              15:             TypePointer Function 14(int)
              16:             TypeFunction 2 9(S) 15(ptr)
              65:             TypePointer Output 8(fvec3)
    66(OutColor):     65(ptr) Variable Output
              67:     14(int) Constant 0
              68:             TypeInt 32 0
              69:     68(int) Constant 0
              97:             TypeVector 7(float) 2
             110:     68(int) Constant 2
             142:    7(float) Constant 0
             143:    8(fvec3) ConstantComposite 142 142 142
             144:             TypePointer Function 9(S)
             149:             TypePointer UniformConstant 14(int)
          150(u):    149(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
          145(s):    144(ptr) Variable Function
      151(param):     15(ptr) Variable Function
      155(param):     15(ptr) Variable Function
      159(param):     15(ptr) Variable Function
      163(param):     15(ptr) Variable Function
      167(param):     15(ptr) Variable Function
      171(param):     15(ptr) Variable Function
      175(param):     15(ptr) Variable Function
      179(param):     15(ptr) Variable Function
      183(param):     15(ptr) Variable Function
      187(param):     15(ptr) Variable Function
      191(param):     15(ptr) Variable Function
      195(param):     15(ptr) Variable Function
                              Store 66(OutColor) 143
             146:        9(S) Load 145(s)
             147:           2 FunctionCall 12(GetColor1(struct-S-vf31;) 146
             148:        9(S) Load 145(s)
             152:     14(int) Load 150(u)
                              Store 151(param) 152
             153:           2 FunctionCall 19(GetColor2(struct-S-vf31;i1;) 148 151(param)
             154:        9(S) Load 145(s)
             156:     14(int) Load 150(u)
                              Store 155(param) 156
             157:           2 FunctionCall 23(GetColor3(struct-S-vf31;i1;) 154 155(param)
             158:        9(S) Load 145(s)
             160:     14(int) Load 150(u)
                              Store 159(param) 160
             161:           2 FunctionCall 27(GetColor4(struct-S-vf31;i1;) 158 159(param)
             162:        9(S) Load 145(s)
             164:     14(int) Load 150(u)
                              Store 163(param) 164
             165:           2 FunctionCall 31(GetColor5(struct-S-vf31;i1;) 162 163(param)
             166:        9(S) Load 145(s)
             168:     14(int) Load 150(u)
                              Store 167(param) 168
             169:           2 FunctionCall 35(GetColor6(struct-S-vf31;i1;) 166 167(param)
             170:        9(S) Load 145(s)
             172:     14(int) Load 150(u)
                              Store 171(param) 172
             173:           2 FunctionCall 39(GetColor7(struct-S-vf31;i1;) 170 171(param)
             174:        9(S) Load 145(s)
             176:     14(int) Load 150(u)
                              Store 175(param) 176
             177:           2 FunctionCall 43(GetColor8(struct-S-vf31;i1;) 174 175(param)
             178:        9(S) Load 145(s)
             180:     14(int) Load 150(u)
                              Store 179(param) 180
             181:           2 FunctionCall 47(GetColor9(struct-S-vf31;i1;) 178 179(param)
             182:        9(S) Load 145(s)
             184:     14(int) Load 150(u)
                              Store 183(param) 184
             185:           2 FunctionCall 51(GetColor10(struct-S-vf31;i1;) 182 183(param)
             186:        9(S) Load 145(s)
             188:     14(int) Load 150(u)
                              Store 187(param) 188
             189:           2 FunctionCall 55(GetColor11(struct-S-vf31;i1;) 186 187(param)
             190:        9(S) Load 145(s)
             192:     14(int) Load 150(u)
                              Store 191(param) 192
             193:           2 FunctionCall 59(GetColor12(struct-S-vf31;i1;) 190 191(param)
             194:        9(S) Load 145(s)
             196:     14(int) Load 150(u)
                              Store 195(param) 196
             197:           2 FunctionCall 63(GetColor13(struct-S-vf31;i1;) 194 195(param)
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
12(GetColor1(struct-S-vf31;):           2 Function None 10
           11(i):        9(S) FunctionParameter
              13:             Label
              70:    7(float) CompositeExtract 11(i) 0 0
              71:    8(fvec3) Load 66(OutColor)
              72:    8(fvec3) CompositeConstruct 70 70 70
              73:    8(fvec3) FAdd 71 72
                              Store 66(OutColor) 73
                              Return
                              FunctionEnd
19(GetColor2(struct-S-vf31;i1;):           2 Function None 16
           17(i):        9(S) FunctionParameter
        18(comp):     15(ptr) FunctionParameter
              20:             Label
              74:     14(int) Load 18(comp)
              75:    8(fvec3) CompositeExtract 17(i) 0
              76:    7(float) VectorExtractDynamic 75 74
              77:    8(fvec3) Load 66(OutColor)
              78:    8(fvec3) CompositeConstruct 76 76 76
              79:    8(fvec3) FAdd 77 78
                              Store 66(OutColor) 79
                              Return
                              FunctionEnd
23(GetColor3(struct-S-vf31;i1;):           2 Function None 16
           21(i):        9(S) FunctionParameter
        22(comp):     15(ptr) FunctionParameter
              24:             Label
              80:     14(int) Load 22(comp)
              81:    8(fvec3) CompositeExtract 21(i) 0
              82:    7(float) VectorExtractDynamic 81 80
              83:    8(fvec3) Load 66(OutColor)
              84:    8(fvec3) CompositeConstruct 82 82 82
              85:    8(fvec3) FAdd 83 84
                              Store 66(OutColor) 85
                              Return
                              FunctionEnd
27(GetColor4(struct-S-vf31;i1;):           2 Function None 16
           25(i):        9(S) FunctionParameter
        26(comp):     15(ptr) FunctionParameter
              28:             Label
              86:     14(int) Load 26(comp)
              87:    8(fvec3) CompositeExtract 25(i) 0
              88:    7(float) VectorExtractDynamic 87 86
              89:    8(fvec3) Load 66(OutColor)
              90:    8(fvec3) CompositeConstruct 88 88 88
              91:    8(fvec3) FAdd 89 90
                              Store 66(OutColor) 91
                              Return
                              FunctionEnd
31(GetColor5(struct-S-vf31;i1;):           2 Function None 16
           29(i):        9(S) FunctionParameter
        30(comp):     15(ptr) FunctionParameter
              32:             Label
              92:    8(fvec3) CompositeExtract 29(i) 0
              93:    8(fvec3) Load 66(OutColor)
              94:    8(fvec3) FAdd 93 92
                              Store 66(OutColor) 94
                              Return
                              FunctionEnd
35(GetColor6(struct-S-vf31;i1;):           2 Function None 16
           33(i):        9(S) FunctionParameter
        34(comp):     15(ptr) FunctionParameter
              36:             Label
              95:     14(int) Load 34(comp)
              96:    8(fvec3) CompositeExtract 33(i) 0
              98:   97(fvec2) VectorShuffle 96 96 1 0
              99:    7(float) VectorExtractDynamic 98 95
             100:    8(fvec3) Load 66(OutColor)
             101:    8(fvec3) CompositeConstruct 99 99 99
             102:    8(fvec3) FAdd 100 101
                              Store 66(OutColor) 102
                              Return
                              FunctionEnd
39(GetColor7(struct-S-vf31;i1;):           2 Function None 16
           37(i):        9(S) FunctionParameter
        38(comp):     15(ptr) FunctionParameter
              40:             Label
             103:    8(fvec3) CompositeExtract 37(i) 0
             104:   97(fvec2) VectorShuffle 103 103 0 1
             105:    8(fvec3) Load 66(OutColor)
             106:   97(fvec2) VectorShuffle 105 105 0 1
             107:   97(fvec2) FAdd 106 104
             108:    8(fvec3) Load 66(OutColor)
             109:    8(fvec3) VectorShuffle 108 107 3 4 2
                              Store 66(OutColor) 109
                              Return
                              FunctionEnd
43(GetColor8(struct-S-vf31;i1;):           2 Function None 16
           41(i):        9(S) FunctionParameter
        42(comp):     15(ptr) FunctionParameter
              44:             Label
             111:    7(float) CompositeExtract 41(i) 0 2
             112:    8(fvec3) Load 66(OutColor)
             113:    8(fvec3) CompositeConstruct 111 111 111
             114:    8(fvec3) FAdd 112 113
                              Store 66(OutColor) 114
                              Return
                              FunctionEnd
47(GetColor9(struct-S-vf31;i1;):           2 Function None 16
           45(i):        9(S) FunctionParameter
        46(comp):     15(ptr) FunctionParameter
              48:             Label
             115:    8(fvec3) CompositeExtract 45(i) 0
             116:    8(fvec3) Load 66(OutColor)
             117:    8(fvec3) VectorShuffle 116 116 2 0 1
             118:    8(fvec3) FAdd 117 115
             119:    8(fvec3) Load 66(OutColor)
             120:    8(fvec3) VectorShuffle 119 118 4 5 3
                              Store 66(OutColor) 120
                              Return
                              FunctionEnd
51(GetColor10(struct-S-vf31;i1;):           2 Function None 16
           49(i):        9(S) FunctionParameter
        50(comp):     15(ptr) FunctionParameter
              52:             Label
             121:    8(fvec3) CompositeExtract 49(i) 0
             122:   97(fvec2) VectorShuffle 121 121 0 1
             123:    8(fvec3) Load 66(OutColor)
             124:   97(fvec2) VectorShuffle 123 123 2 1
             125:   97(fvec2) FAdd 124 122
             126:    8(fvec3) Load 66(OutColor)
             127:    8(fvec3) VectorShuffle 126 125 0 4 3
                              Store 66(OutColor) 127
                              Return
                              FunctionEnd
55(GetColor11(struct-S-vf31;i1;):           2 Function None 16
           53(i):        9(S) FunctionParameter
        54(comp):     15(ptr) FunctionParameter
              56:             Label
             128:    8(fvec3) CompositeExtract 53(i) 0
             129:   97(fvec2) VectorShuffle 128 128 0 1
             130:    8(fvec3) Load 66(OutColor)
             131:   97(fvec2) VectorShuffle 130 130 0 2
             132:   97(fvec2) FAdd 131 129
             133:    8(fvec3) Load 66(OutColor)
             134:    8(fvec3) VectorShuffle 133 132 3 1 4
                              Store 66(OutColor) 134
                              Return
                              FunctionEnd
59(GetColor12(struct-S-vf31;i1;):           2 Function None 16
           57(i):        9(S) FunctionParameter
        58(comp):     15(ptr) FunctionParameter
              60:             Label
             135:     14(int) Load 58(comp)
             136:    7(float) CompositeExtract 57(i) 0 0
             137:    8(fvec3) Load 66(OutColor)
             138:    7(float) VectorExtractDynamic 137 135
             139:    7(float) FAdd 138 136
             140:    8(fvec3) Load 66(OutColor)
             141:    8(fvec3) VectorInsertDynamic 140 139 135
                              Store 66(OutColor) 141
                              Return
                              FunctionEnd
63(GetColor13(struct-S-vf31;i1;):           2 Function None 16
           61(i):        9(S) FunctionParameter
        62(comp):     15(ptr) FunctionParameter
              64:             Label
                              Return
                              FunctionEnd
