SPV: Fix issue #320: Fetch needs to extract the image.
authorJohn Kessenich <cepheus@frii.com>
Fri, 3 Jun 2016 05:45:21 +0000 (23:45 -0600)
committerJohn Kessenich <cepheus@frii.com>
Fri, 3 Jun 2016 05:47:29 +0000 (23:47 -0600)
GLSL takes a traditional sampler, but SPIR-V wants just the
sampled image, not the combined sampler and image.

SPIRV/GlslangToSpv.cpp
Test/baseResults/spv.newTexture.frag.out
Test/baseResults/spv.sparseTexture.frag.out
Test/baseResults/spv.texture.frag.out

index 5609769..cfbee00 100755 (executable)
@@ -2558,6 +2558,13 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
             bias = true;
     }
 
+    // See if the sampler param should really be just the SPV image part
+    if (cracked.fetch) {
+        // a fetch needs to have the image extracted first
+        if (builder.isSampledImage(params.sampler))
+            params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
+    }
+
     // set the rest of the arguments
 
     params.coords = arguments[1];
index 1c99ac0..4390e26 100755 (executable)
@@ -7,7 +7,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 278
+// Id's are bound by 282
 
                               Capability Shader
                               Capability SampledRect
@@ -15,7 +15,7 @@ Linked fragment stage:
                               Capability ImageQuery
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 17 26 29 55 81 84 91 247 277
+                              EntryPoint Fragment 4  "main" 17 26 29 55 81 84 92 251 281
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 430
                               Name 4  "main"
@@ -31,24 +31,24 @@ Linked fragment stage:
                               Name 64  "s2DShadow"
                               Name 81  "ic3D"
                               Name 84  "ic1D"
-                              Name 91  "ic2D"
-                              Name 100  "sr"
-                              Name 125  "sCube"
-                              Name 136  "s2DArrayShadow"
-                              Name 164  "iv"
-                              Name 168  "is2D"
-                              Name 203  "is3D"
-                              Name 215  "isCube"
-                              Name 227  "is2DArray"
-                              Name 237  "iv2"
-                              Name 241  "sCubeShadow"
-                              Name 247  "FragData"
-                              Name 259  "is2Dms"
-                              Name 263  "us2D"
-                              Name 267  "us3D"
-                              Name 271  "usCube"
-                              Name 275  "us2DArray"
-                              Name 277  "ic4D"
+                              Name 92  "ic2D"
+                              Name 102  "sr"
+                              Name 128  "sCube"
+                              Name 139  "s2DArrayShadow"
+                              Name 167  "iv"
+                              Name 171  "is2D"
+                              Name 206  "is3D"
+                              Name 218  "isCube"
+                              Name 230  "is2DArray"
+                              Name 241  "iv2"
+                              Name 245  "sCubeShadow"
+                              Name 251  "FragData"
+                              Name 263  "is2Dms"
+                              Name 267  "us2D"
+                              Name 271  "us3D"
+                              Name 275  "usCube"
+                              Name 279  "us2DArray"
+                              Name 281  "ic4D"
                               Decorate 13(s2D) DescriptorSet 0
                               Decorate 23(sCubeArrayShadow) DescriptorSet 0
                               Decorate 42(s3D) DescriptorSet 0
@@ -56,21 +56,21 @@ Linked fragment stage:
                               Decorate 64(s2DShadow) DescriptorSet 0
                               Decorate 81(ic3D) Flat
                               Decorate 84(ic1D) Flat
-                              Decorate 91(ic2D) Flat
-                              Decorate 100(sr) DescriptorSet 0
-                              Decorate 125(sCube) DescriptorSet 0
-                              Decorate 136(s2DArrayShadow) DescriptorSet 0
-                              Decorate 168(is2D) DescriptorSet 0
-                              Decorate 203(is3D) DescriptorSet 0
-                              Decorate 215(isCube) DescriptorSet 0
-                              Decorate 227(is2DArray) DescriptorSet 0
-                              Decorate 241(sCubeShadow) DescriptorSet 0
-                              Decorate 259(is2Dms) DescriptorSet 0
-                              Decorate 263(us2D) DescriptorSet 0
-                              Decorate 267(us3D) DescriptorSet 0
-                              Decorate 271(usCube) DescriptorSet 0
-                              Decorate 275(us2DArray) DescriptorSet 0
-                              Decorate 277(ic4D) Flat
+                              Decorate 92(ic2D) Flat
+                              Decorate 102(sr) DescriptorSet 0
+                              Decorate 128(sCube) DescriptorSet 0
+                              Decorate 139(s2DArrayShadow) DescriptorSet 0
+                              Decorate 171(is2D) DescriptorSet 0
+                              Decorate 206(is3D) DescriptorSet 0
+                              Decorate 218(isCube) DescriptorSet 0
+                              Decorate 230(is2DArray) DescriptorSet 0
+                              Decorate 245(sCubeShadow) DescriptorSet 0
+                              Decorate 263(is2Dms) DescriptorSet 0
+                              Decorate 267(us2D) DescriptorSet 0
+                              Decorate 271(us3D) DescriptorSet 0
+                              Decorate 275(usCube) DescriptorSet 0
+                              Decorate 279(us2DArray) DescriptorSet 0
+                              Decorate 281(ic4D) Flat
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -119,78 +119,78 @@ Linked fragment stage:
         81(ic3D):     80(ptr) Variable Input
               83:             TypePointer Input 67(int)
         84(ic1D):     83(ptr) Variable Input
-              90:             TypePointer Input 68(ivec2)
-        91(ic2D):     90(ptr) Variable Input
-              93:     67(int) Constant 4
-              97:             TypeImage 6(float) Rect sampled format:Unknown
-              98:             TypeSampledImage 97
-              99:             TypePointer UniformConstant 98
-         100(sr):     99(ptr) Variable UniformConstant
-             103:   68(ivec2) ConstantComposite 93 93
-             122:             TypeImage 6(float) Cube sampled format:Unknown
-             123:             TypeSampledImage 122
-             124:             TypePointer UniformConstant 123
-      125(sCube):    124(ptr) Variable UniformConstant
-             133:             TypeImage 6(float) 2D depth array sampled format:Unknown
-             134:             TypeSampledImage 133
-             135:             TypePointer UniformConstant 134
-136(s2DArrayShadow):    135(ptr) Variable UniformConstant
-             143:     32(int) Constant 0
-             162:             TypeVector 67(int) 4
-             163:             TypePointer Function 162(ivec4)
-             165:             TypeImage 67(int) 2D sampled format:Unknown
-             166:             TypeSampledImage 165
-             167:             TypePointer UniformConstant 166
-       168(is2D):    167(ptr) Variable UniformConstant
-             200:             TypeImage 67(int) 3D sampled format:Unknown
-             201:             TypeSampledImage 200
-             202:             TypePointer UniformConstant 201
-       203(is3D):    202(ptr) Variable UniformConstant
-             206:    6(float) Constant 1082549862
-             212:             TypeImage 67(int) Cube sampled format:Unknown
-             213:             TypeSampledImage 212
-             214:             TypePointer UniformConstant 213
-     215(isCube):    214(ptr) Variable UniformConstant
-             224:             TypeImage 67(int) 2D array sampled format:Unknown
-             225:             TypeSampledImage 224
-             226:             TypePointer UniformConstant 225
-  227(is2DArray):    226(ptr) Variable UniformConstant
-             236:             TypePointer Function 68(ivec2)
-             238:             TypeImage 6(float) Cube depth sampled format:Unknown
-             239:             TypeSampledImage 238
-             240:             TypePointer UniformConstant 239
-241(sCubeShadow):    240(ptr) Variable UniformConstant
-             243:     67(int) Constant 2
-             246:             TypePointer Output 7(fvec4)
-   247(FragData):    246(ptr) Variable Output
-             251:    6(float) Constant 0
-             256:             TypeImage 67(int) 2D multi-sampled sampled format:Unknown
-             257:             TypeSampledImage 256
-             258:             TypePointer UniformConstant 257
-     259(is2Dms):    258(ptr) Variable UniformConstant
-             260:             TypeImage 32(int) 2D sampled format:Unknown
+              91:             TypePointer Input 68(ivec2)
+        92(ic2D):     91(ptr) Variable Input
+              94:     67(int) Constant 4
+              99:             TypeImage 6(float) Rect sampled format:Unknown
+             100:             TypeSampledImage 99
+             101:             TypePointer UniformConstant 100
+         102(sr):    101(ptr) Variable UniformConstant
+             105:   68(ivec2) ConstantComposite 94 94
+             125:             TypeImage 6(float) Cube sampled format:Unknown
+             126:             TypeSampledImage 125
+             127:             TypePointer UniformConstant 126
+      128(sCube):    127(ptr) Variable UniformConstant
+             136:             TypeImage 6(float) 2D depth array sampled format:Unknown
+             137:             TypeSampledImage 136
+             138:             TypePointer UniformConstant 137
+139(s2DArrayShadow):    138(ptr) Variable UniformConstant
+             146:     32(int) Constant 0
+             165:             TypeVector 67(int) 4
+             166:             TypePointer Function 165(ivec4)
+             168:             TypeImage 67(int) 2D sampled format:Unknown
+             169:             TypeSampledImage 168
+             170:             TypePointer UniformConstant 169
+       171(is2D):    170(ptr) Variable UniformConstant
+             203:             TypeImage 67(int) 3D sampled format:Unknown
+             204:             TypeSampledImage 203
+             205:             TypePointer UniformConstant 204
+       206(is3D):    205(ptr) Variable UniformConstant
+             209:    6(float) Constant 1082549862
+             215:             TypeImage 67(int) Cube sampled format:Unknown
+             216:             TypeSampledImage 215
+             217:             TypePointer UniformConstant 216
+     218(isCube):    217(ptr) Variable UniformConstant
+             227:             TypeImage 67(int) 2D array sampled format:Unknown
+             228:             TypeSampledImage 227
+             229:             TypePointer UniformConstant 228
+  230(is2DArray):    229(ptr) Variable UniformConstant
+             240:             TypePointer Function 68(ivec2)
+             242:             TypeImage 6(float) Cube depth sampled format:Unknown
+             243:             TypeSampledImage 242
+             244:             TypePointer UniformConstant 243
+245(sCubeShadow):    244(ptr) Variable UniformConstant
+             247:     67(int) Constant 2
+             250:             TypePointer Output 7(fvec4)
+   251(FragData):    250(ptr) Variable Output
+             255:    6(float) Constant 0
+             260:             TypeImage 67(int) 2D multi-sampled sampled format:Unknown
              261:             TypeSampledImage 260
              262:             TypePointer UniformConstant 261
-       263(us2D):    262(ptr) Variable UniformConstant
-             264:             TypeImage 32(int) 3D sampled format:Unknown
+     263(is2Dms):    262(ptr) Variable UniformConstant
+             264:             TypeImage 32(int) 2D sampled format:Unknown
              265:             TypeSampledImage 264
              266:             TypePointer UniformConstant 265
-       267(us3D):    266(ptr) Variable UniformConstant
-             268:             TypeImage 32(int) Cube sampled format:Unknown
+       267(us2D):    266(ptr) Variable UniformConstant
+             268:             TypeImage 32(int) 3D sampled format:Unknown
              269:             TypeSampledImage 268
              270:             TypePointer UniformConstant 269
-     271(usCube):    270(ptr) Variable UniformConstant
-             272:             TypeImage 32(int) 2D array sampled format:Unknown
+       271(us3D):    270(ptr) Variable UniformConstant
+             272:             TypeImage 32(int) Cube sampled format:Unknown
              273:             TypeSampledImage 272
              274:             TypePointer UniformConstant 273
-  275(us2DArray):    274(ptr) Variable UniformConstant
-             276:             TypePointer Input 162(ivec4)
-       277(ic4D):    276(ptr) Variable Input
+     275(usCube):    274(ptr) Variable UniformConstant
+             276:             TypeImage 32(int) 2D array sampled format:Unknown
+             277:             TypeSampledImage 276
+             278:             TypePointer UniformConstant 277
+  279(us2DArray):    278(ptr) Variable UniformConstant
+             280:             TypePointer Input 165(ivec4)
+       281(ic4D):    280(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
             9(v):      8(ptr) Variable Function
-         164(iv):    163(ptr) Variable Function
-        237(iv2):    236(ptr) Variable Function
+         167(iv):    166(ptr) Variable Function
+        241(iv2):    240(ptr) Variable Function
               14:          11 Load 13(s2D)
               18:   15(fvec2) Load 17(c2D)
               19:    7(fvec4) ImageSampleImplicitLod 14 18
@@ -229,153 +229,157 @@ Linked fragment stage:
               78:          40 Load 42(s3D)
               82:   79(ivec3) Load 81(ic3D)
               85:     67(int) Load 84(ic1D)
-              86:    7(fvec4) ImageFetch 78 82 Lod 85
-              87:    7(fvec4) Load 9(v)
-              88:    7(fvec4) FAdd 87 86
-                              Store 9(v) 88
-              89:          11 Load 13(s2D)
-              92:   68(ivec2) Load 91(ic2D)
-              94:    7(fvec4) ImageFetch 89 92 Lod ConstOffset 93 70
-              95:    7(fvec4) Load 9(v)
-              96:    7(fvec4) FAdd 95 94
-                              Store 9(v) 96
-             101:          98 Load 100(sr)
-             102:   68(ivec2) Load 91(ic2D)
-             104:    7(fvec4) ImageFetch 101 102 ConstOffset 103
-             105:    7(fvec4) Load 9(v)
-             106:    7(fvec4) FAdd 105 104
-                              Store 9(v) 106
-             107:          62 Load 64(s2DShadow)
-             108:   53(fvec3) Load 55(c3D)
-             109:    6(float) Load 29(c1D)
-             110:    6(float) CompositeExtract 108 2
-             111:    6(float) ImageSampleDrefExplicitLod 107 108 110 Lod ConstOffset 109 70
-             112:     34(ptr) AccessChain 9(v) 33
-             113:    6(float) Load 112
-             114:    6(float) FAdd 113 111
+              86:          39 Image 78
+              87:    7(fvec4) ImageFetch 86 82 Lod 85
+              88:    7(fvec4) Load 9(v)
+              89:    7(fvec4) FAdd 88 87
+                              Store 9(v) 89
+              90:          11 Load 13(s2D)
+              93:   68(ivec2) Load 92(ic2D)
+              95:          10 Image 90
+              96:    7(fvec4) ImageFetch 95 93 Lod ConstOffset 94 70
+              97:    7(fvec4) Load 9(v)
+              98:    7(fvec4) FAdd 97 96
+                              Store 9(v) 98
+             103:         100 Load 102(sr)
+             104:   68(ivec2) Load 92(ic2D)
+             106:          99 Image 103
+             107:    7(fvec4) ImageFetch 106 104 ConstOffset 105
+             108:    7(fvec4) Load 9(v)
+             109:    7(fvec4) FAdd 108 107
+                              Store 9(v) 109
+             110:          62 Load 64(s2DShadow)
+             111:   53(fvec3) Load 55(c3D)
+             112:    6(float) Load 29(c1D)
+             113:    6(float) CompositeExtract 111 2
+             114:    6(float) ImageSampleDrefExplicitLod 110 111 113 Lod ConstOffset 112 70
              115:     34(ptr) AccessChain 9(v) 33
-                              Store 115 114
-             116:          11 Load 13(s2D)
-             117:   53(fvec3) Load 55(c3D)
-             118:    6(float) Load 29(c1D)
-             119:    7(fvec4) ImageSampleProjExplicitLod 116 117 Lod ConstOffset 118 70
-             120:    7(fvec4) Load 9(v)
-             121:    7(fvec4) FAdd 120 119
-                              Store 9(v) 121
-             126:         123 Load 125(sCube)
-             127:   53(fvec3) Load 55(c3D)
-             128:   53(fvec3) Load 55(c3D)
-             129:   53(fvec3) Load 55(c3D)
-             130:    7(fvec4) ImageSampleExplicitLod 126 127 Grad 128 129
-             131:    7(fvec4) Load 9(v)
-             132:    7(fvec4) FAdd 131 130
-                              Store 9(v) 132
-             137:         134 Load 136(s2DArrayShadow)
-             138:    7(fvec4) Load 26(c4D)
-             139:   15(fvec2) Load 17(c2D)
-             140:   15(fvec2) Load 17(c2D)
-             141:    6(float) CompositeExtract 138 3
-             142:    6(float) ImageSampleDrefExplicitLod 137 138 141 Grad ConstOffset 139 140 70
-             144:     34(ptr) AccessChain 9(v) 143
-             145:    6(float) Load 144
-             146:    6(float) FAdd 145 142
-             147:     34(ptr) AccessChain 9(v) 143
-                              Store 147 146
-             148:          40 Load 42(s3D)
-             149:    7(fvec4) Load 26(c4D)
-             150:   53(fvec3) Load 55(c3D)
-             151:   53(fvec3) Load 55(c3D)
-             152:    7(fvec4) ImageSampleProjExplicitLod 148 149 Grad 150 151
-             153:    7(fvec4) Load 9(v)
-             154:    7(fvec4) FAdd 153 152
-                              Store 9(v) 154
-             155:          11 Load 13(s2D)
-             156:   53(fvec3) Load 55(c3D)
-             157:   15(fvec2) Load 17(c2D)
-             158:   15(fvec2) Load 17(c2D)
-             159:    7(fvec4) ImageSampleProjExplicitLod 155 156 Grad ConstOffset 157 158 70
-             160:    7(fvec4) Load 9(v)
-             161:    7(fvec4) FAdd 160 159
-                              Store 9(v) 161
-             169:         166 Load 168(is2D)
-             170:   15(fvec2) Load 17(c2D)
-             171:  162(ivec4) ImageSampleImplicitLod 169 170
-                              Store 164(iv) 171
-             172:  162(ivec4) Load 164(iv)
-             173:    7(fvec4) ConvertSToF 172
-             174:    7(fvec4) Load 9(v)
-             175:    7(fvec4) FAdd 174 173
-                              Store 9(v) 175
-             176:         166 Load 168(is2D)
-             177:    7(fvec4) Load 26(c4D)
-             178:  162(ivec4) ImageSampleProjImplicitLod 176 177 ConstOffset 70
-                              Store 164(iv) 178
-             179:  162(ivec4) Load 164(iv)
-             180:    7(fvec4) ConvertSToF 179
-             181:    7(fvec4) Load 9(v)
-             182:    7(fvec4) FAdd 181 180
-                              Store 9(v) 182
-             183:         166 Load 168(is2D)
-             184:   53(fvec3) Load 55(c3D)
-             185:    6(float) Load 29(c1D)
-             186:  162(ivec4) ImageSampleProjExplicitLod 183 184 Lod 185
-                              Store 164(iv) 186
-             187:  162(ivec4) Load 164(iv)
-             188:    7(fvec4) ConvertSToF 187
-             189:    7(fvec4) Load 9(v)
-             190:    7(fvec4) FAdd 189 188
-                              Store 9(v) 190
-             191:         166 Load 168(is2D)
-             192:   53(fvec3) Load 55(c3D)
-             193:   15(fvec2) Load 17(c2D)
-             194:   15(fvec2) Load 17(c2D)
-             195:  162(ivec4) ImageSampleProjExplicitLod 191 192 Grad 193 194
-                              Store 164(iv) 195
-             196:  162(ivec4) Load 164(iv)
-             197:    7(fvec4) ConvertSToF 196
-             198:    7(fvec4) Load 9(v)
-             199:    7(fvec4) FAdd 198 197
-                              Store 9(v) 199
-             204:         201 Load 203(is3D)
-             205:   53(fvec3) Load 55(c3D)
-             207:  162(ivec4) ImageSampleImplicitLod 204 205 Bias 206
-                              Store 164(iv) 207
-             208:  162(ivec4) Load 164(iv)
-             209:    7(fvec4) ConvertSToF 208
-             210:    7(fvec4) Load 9(v)
-             211:    7(fvec4) FAdd 210 209
-                              Store 9(v) 211
-             216:         213 Load 215(isCube)
-             217:   53(fvec3) Load 55(c3D)
-             218:    6(float) Load 29(c1D)
-             219:  162(ivec4) ImageSampleExplicitLod 216 217 Lod 218
-                              Store 164(iv) 219
-             220:  162(ivec4) Load 164(iv)
-             221:    7(fvec4) ConvertSToF 220
-             222:    7(fvec4) Load 9(v)
-             223:    7(fvec4) FAdd 222 221
-                              Store 9(v) 223
-             228:         225 Load 227(is2DArray)
-             229:   79(ivec3) Load 81(ic3D)
-             230:     67(int) Load 84(ic1D)
-             231:  162(ivec4) ImageFetch 228 229 Lod 230
-                              Store 164(iv) 231
-             232:  162(ivec4) Load 164(iv)
-             233:    7(fvec4) ConvertSToF 232
-             234:    7(fvec4) Load 9(v)
-             235:    7(fvec4) FAdd 234 233
-                              Store 9(v) 235
-             242:         239 Load 241(sCubeShadow)
-             244:         238 Image 242
-             245:   68(ivec2) ImageQuerySizeLod 244 243
-                              Store 237(iv2) 245
-             248:    7(fvec4) Load 9(v)
-             249:   68(ivec2) Load 237(iv2)
-             250:   15(fvec2) ConvertSToF 249
-             252:    6(float) CompositeExtract 250 0
-             253:    6(float) CompositeExtract 250 1
-             254:    7(fvec4) CompositeConstruct 252 253 251 251
-             255:    7(fvec4) FAdd 248 254
-                              Store 247(FragData) 255
+             116:    6(float) Load 115
+             117:    6(float) FAdd 116 114
+             118:     34(ptr) AccessChain 9(v) 33
+                              Store 118 117
+             119:          11 Load 13(s2D)
+             120:   53(fvec3) Load 55(c3D)
+             121:    6(float) Load 29(c1D)
+             122:    7(fvec4) ImageSampleProjExplicitLod 119 120 Lod ConstOffset 121 70
+             123:    7(fvec4) Load 9(v)
+             124:    7(fvec4) FAdd 123 122
+                              Store 9(v) 124
+             129:         126 Load 128(sCube)
+             130:   53(fvec3) Load 55(c3D)
+             131:   53(fvec3) Load 55(c3D)
+             132:   53(fvec3) Load 55(c3D)
+             133:    7(fvec4) ImageSampleExplicitLod 129 130 Grad 131 132
+             134:    7(fvec4) Load 9(v)
+             135:    7(fvec4) FAdd 134 133
+                              Store 9(v) 135
+             140:         137 Load 139(s2DArrayShadow)
+             141:    7(fvec4) Load 26(c4D)
+             142:   15(fvec2) Load 17(c2D)
+             143:   15(fvec2) Load 17(c2D)
+             144:    6(float) CompositeExtract 141 3
+             145:    6(float) ImageSampleDrefExplicitLod 140 141 144 Grad ConstOffset 142 143 70
+             147:     34(ptr) AccessChain 9(v) 146
+             148:    6(float) Load 147
+             149:    6(float) FAdd 148 145
+             150:     34(ptr) AccessChain 9(v) 146
+                              Store 150 149
+             151:          40 Load 42(s3D)
+             152:    7(fvec4) Load 26(c4D)
+             153:   53(fvec3) Load 55(c3D)
+             154:   53(fvec3) Load 55(c3D)
+             155:    7(fvec4) ImageSampleProjExplicitLod 151 152 Grad 153 154
+             156:    7(fvec4) Load 9(v)
+             157:    7(fvec4) FAdd 156 155
+                              Store 9(v) 157
+             158:          11 Load 13(s2D)
+             159:   53(fvec3) Load 55(c3D)
+             160:   15(fvec2) Load 17(c2D)
+             161:   15(fvec2) Load 17(c2D)
+             162:    7(fvec4) ImageSampleProjExplicitLod 158 159 Grad ConstOffset 160 161 70
+             163:    7(fvec4) Load 9(v)
+             164:    7(fvec4) FAdd 163 162
+                              Store 9(v) 164
+             172:         169 Load 171(is2D)
+             173:   15(fvec2) Load 17(c2D)
+             174:  165(ivec4) ImageSampleImplicitLod 172 173
+                              Store 167(iv) 174
+             175:  165(ivec4) Load 167(iv)
+             176:    7(fvec4) ConvertSToF 175
+             177:    7(fvec4) Load 9(v)
+             178:    7(fvec4) FAdd 177 176
+                              Store 9(v) 178
+             179:         169 Load 171(is2D)
+             180:    7(fvec4) Load 26(c4D)
+             181:  165(ivec4) ImageSampleProjImplicitLod 179 180 ConstOffset 70
+                              Store 167(iv) 181
+             182:  165(ivec4) Load 167(iv)
+             183:    7(fvec4) ConvertSToF 182
+             184:    7(fvec4) Load 9(v)
+             185:    7(fvec4) FAdd 184 183
+                              Store 9(v) 185
+             186:         169 Load 171(is2D)
+             187:   53(fvec3) Load 55(c3D)
+             188:    6(float) Load 29(c1D)
+             189:  165(ivec4) ImageSampleProjExplicitLod 186 187 Lod 188
+                              Store 167(iv) 189
+             190:  165(ivec4) Load 167(iv)
+             191:    7(fvec4) ConvertSToF 190
+             192:    7(fvec4) Load 9(v)
+             193:    7(fvec4) FAdd 192 191
+                              Store 9(v) 193
+             194:         169 Load 171(is2D)
+             195:   53(fvec3) Load 55(c3D)
+             196:   15(fvec2) Load 17(c2D)
+             197:   15(fvec2) Load 17(c2D)
+             198:  165(ivec4) ImageSampleProjExplicitLod 194 195 Grad 196 197
+                              Store 167(iv) 198
+             199:  165(ivec4) Load 167(iv)
+             200:    7(fvec4) ConvertSToF 199
+             201:    7(fvec4) Load 9(v)
+             202:    7(fvec4) FAdd 201 200
+                              Store 9(v) 202
+             207:         204 Load 206(is3D)
+             208:   53(fvec3) Load 55(c3D)
+             210:  165(ivec4) ImageSampleImplicitLod 207 208 Bias 209
+                              Store 167(iv) 210
+             211:  165(ivec4) Load 167(iv)
+             212:    7(fvec4) ConvertSToF 211
+             213:    7(fvec4) Load 9(v)
+             214:    7(fvec4) FAdd 213 212
+                              Store 9(v) 214
+             219:         216 Load 218(isCube)
+             220:   53(fvec3) Load 55(c3D)
+             221:    6(float) Load 29(c1D)
+             222:  165(ivec4) ImageSampleExplicitLod 219 220 Lod 221
+                              Store 167(iv) 222
+             223:  165(ivec4) Load 167(iv)
+             224:    7(fvec4) ConvertSToF 223
+             225:    7(fvec4) Load 9(v)
+             226:    7(fvec4) FAdd 225 224
+                              Store 9(v) 226
+             231:         228 Load 230(is2DArray)
+             232:   79(ivec3) Load 81(ic3D)
+             233:     67(int) Load 84(ic1D)
+             234:         227 Image 231
+             235:  165(ivec4) ImageFetch 234 232 Lod 233
+                              Store 167(iv) 235
+             236:  165(ivec4) Load 167(iv)
+             237:    7(fvec4) ConvertSToF 236
+             238:    7(fvec4) Load 9(v)
+             239:    7(fvec4) FAdd 238 237
+                              Store 9(v) 239
+             246:         243 Load 245(sCubeShadow)
+             248:         242 Image 246
+             249:   68(ivec2) ImageQuerySizeLod 248 247
+                              Store 241(iv2) 249
+             252:    7(fvec4) Load 9(v)
+             253:   68(ivec2) Load 241(iv2)
+             254:   15(fvec2) ConvertSToF 253
+             256:    6(float) CompositeExtract 254 0
+             257:    6(float) CompositeExtract 254 1
+             258:    7(fvec4) CompositeConstruct 256 257 255 255
+             259:    7(fvec4) FAdd 252 258
+                              Store 251(FragData) 259
                               Return
                               FunctionEnd
index 315e1bb..ae48f41 100644 (file)
@@ -7,7 +7,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 433
+// Id's are bound by 438
 
                               Capability Shader
                               Capability SampledRect
@@ -15,7 +15,7 @@ Linked fragment stage:
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 33 48 89 360 388 400 418
+                              EntryPoint Fragment 4  "main" 33 48 89 365 393 405 423
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_ARB_sparse_texture2"
@@ -39,17 +39,17 @@ Linked fragment stage:
                               Name 111  "ResType"
                               Name 140  "us2DRect"
                               Name 154  "s2DArrayShadow"
-                              Name 186  "s2DMS"
-                              Name 223  "is2DArray"
-                              Name 256  "sCubeShadow"
-                              Name 289  "s2DRectShadow"
-                              Name 360  "offsets"
-                              Name 385  "i2D"
-                              Name 388  "ic2"
-                              Name 397  "ii3D"
-                              Name 400  "ic3"
-                              Name 409  "i2DMS"
-                              Name 418  "outColor"
+                              Name 188  "s2DMS"
+                              Name 228  "is2DArray"
+                              Name 261  "sCubeShadow"
+                              Name 294  "s2DRectShadow"
+                              Name 365  "offsets"
+                              Name 390  "i2D"
+                              Name 393  "ic2"
+                              Name 402  "ii3D"
+                              Name 405  "ic3"
+                              Name 414  "i2DMS"
+                              Name 423  "outColor"
                               Decorate 29(s2D) DescriptorSet 0
                               Decorate 44(s3D) DescriptorSet 0
                               Decorate 59(isCube) DescriptorSet 0
@@ -58,16 +58,16 @@ Linked fragment stage:
                               Decorate 108(usCubeArray) DescriptorSet 0
                               Decorate 140(us2DRect) DescriptorSet 0
                               Decorate 154(s2DArrayShadow) DescriptorSet 0
-                              Decorate 186(s2DMS) DescriptorSet 0
-                              Decorate 223(is2DArray) DescriptorSet 0
-                              Decorate 256(sCubeShadow) DescriptorSet 0
-                              Decorate 289(s2DRectShadow) DescriptorSet 0
-                              Decorate 360(offsets) Flat
-                              Decorate 385(i2D) DescriptorSet 0
-                              Decorate 388(ic2) Flat
-                              Decorate 397(ii3D) DescriptorSet 0
-                              Decorate 400(ic3) Flat
-                              Decorate 409(i2DMS) DescriptorSet 0
+                              Decorate 188(s2DMS) DescriptorSet 0
+                              Decorate 228(is2DArray) DescriptorSet 0
+                              Decorate 261(sCubeShadow) DescriptorSet 0
+                              Decorate 294(s2DRectShadow) DescriptorSet 0
+                              Decorate 365(offsets) Flat
+                              Decorate 390(i2D) DescriptorSet 0
+                              Decorate 393(ic2) Flat
+                              Decorate 402(ii3D) DescriptorSet 0
+                              Decorate 405(ic3) Flat
+                              Decorate 414(i2DMS) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -143,58 +143,58 @@ Linked fragment stage:
              157:      6(int) Constant 5
              158:  143(ivec2) ConstantComposite 157 157
              159:     20(int) Constant 2
-             183:             TypeImage 10(float) 2D multi-sampled sampled format:Unknown
-             184:             TypeSampledImage 183
-             185:             TypePointer UniformConstant 184
-      186(s2DMS):    185(ptr) Variable UniformConstant
-             190:      6(int) Constant 4
-             199:  129(ivec3) ConstantComposite 190 190 190
-             220:             TypeImage 6(int) 2D array sampled format:Unknown
-             221:             TypeSampledImage 220
-             222:             TypePointer UniformConstant 221
-  223(is2DArray):    222(ptr) Variable UniformConstant
-             226:      6(int) Constant 6
-             227:  143(ivec2) ConstantComposite 226 226
-             235:      6(int) Constant 7
-             236:  143(ivec2) ConstantComposite 235 235
-             253:             TypeImage 10(float) Cube depth sampled format:Unknown
-             254:             TypeSampledImage 253
-             255:             TypePointer UniformConstant 254
-256(sCubeShadow):    255(ptr) Variable UniformConstant
-             286:             TypeImage 10(float) Rect depth sampled format:Unknown
-             287:             TypeSampledImage 286
-             288:             TypePointer UniformConstant 287
-289(s2DRectShadow):    288(ptr) Variable UniformConstant
-             294:     20(int) Constant 3
-             306:  143(ivec2) ConstantComposite 130 130
-             335:  143(ivec2) ConstantComposite 190 190
-             357:     20(int) Constant 4
-             358:             TypeArray 143(ivec2) 357
-             359:             TypePointer Input 358
-    360(offsets):    359(ptr) Variable Input
-             383:             TypeImage 10(float) 2D nonsampled format:Rgba32f
-             384:             TypePointer UniformConstant 383
-        385(i2D):    384(ptr) Variable UniformConstant
-             387:             TypePointer Input 143(ivec2)
-        388(ic2):    387(ptr) Variable Input
-             395:             TypeImage 6(int) 3D nonsampled format:Rgba32i
-             396:             TypePointer UniformConstant 395
-       397(ii3D):    396(ptr) Variable UniformConstant
-             399:             TypePointer Input 129(ivec3)
-        400(ic3):    399(ptr) Variable Input
-             407:             TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f
-             408:             TypePointer UniformConstant 407
-      409(i2DMS):    408(ptr) Variable UniformConstant
-             417:             TypePointer Output 11(fvec4)
-   418(outColor):    417(ptr) Variable Output
-             421:             TypeBool
+             185:             TypeImage 10(float) 2D multi-sampled sampled format:Unknown
+             186:             TypeSampledImage 185
+             187:             TypePointer UniformConstant 186
+      188(s2DMS):    187(ptr) Variable UniformConstant
+             192:      6(int) Constant 4
+             202:  129(ivec3) ConstantComposite 192 192 192
+             225:             TypeImage 6(int) 2D array sampled format:Unknown
+             226:             TypeSampledImage 225
+             227:             TypePointer UniformConstant 226
+  228(is2DArray):    227(ptr) Variable UniformConstant
+             231:      6(int) Constant 6
+             232:  143(ivec2) ConstantComposite 231 231
+             240:      6(int) Constant 7
+             241:  143(ivec2) ConstantComposite 240 240
+             258:             TypeImage 10(float) Cube depth sampled format:Unknown
+             259:             TypeSampledImage 258
+             260:             TypePointer UniformConstant 259
+261(sCubeShadow):    260(ptr) Variable UniformConstant
+             291:             TypeImage 10(float) Rect depth sampled format:Unknown
+             292:             TypeSampledImage 291
+             293:             TypePointer UniformConstant 292
+294(s2DRectShadow):    293(ptr) Variable UniformConstant
+             299:     20(int) Constant 3
+             311:  143(ivec2) ConstantComposite 130 130
+             340:  143(ivec2) ConstantComposite 192 192
+             362:     20(int) Constant 4
+             363:             TypeArray 143(ivec2) 362
+             364:             TypePointer Input 363
+    365(offsets):    364(ptr) Variable Input
+             388:             TypeImage 10(float) 2D nonsampled format:Rgba32f
+             389:             TypePointer UniformConstant 388
+        390(i2D):    389(ptr) Variable UniformConstant
+             392:             TypePointer Input 143(ivec2)
+        393(ic2):    392(ptr) Variable Input
+             400:             TypeImage 6(int) 3D nonsampled format:Rgba32i
+             401:             TypePointer UniformConstant 400
+       402(ii3D):    401(ptr) Variable UniformConstant
+             404:             TypePointer Input 129(ivec3)
+        405(ic3):    404(ptr) Variable Input
+             412:             TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f
+             413:             TypePointer UniformConstant 412
+      414(i2DMS):    413(ptr) Variable UniformConstant
+             422:             TypePointer Output 11(fvec4)
+   423(outColor):    422(ptr) Variable Output
+             426:             TypeBool
          4(main):           2 Function None 3
                5:             Label
      8(resident):      7(ptr) Variable Function
        13(texel):     12(ptr) Variable Function
       18(itexel):     17(ptr) Variable Function
       23(utexel):     22(ptr) Variable Function
-             419:     12(ptr) Variable Function
+             424:     12(ptr) Variable Function
                               Store 8(resident) 9
                               Store 13(texel) 15
                               Store 18(itexel) 19
@@ -308,281 +308,286 @@ Linked fragment stage:
              167:          27 Load 29(s2D)
              168:   31(fvec2) Load 33(c2)
              169:  143(ivec2) ConvertFToS 168
-             170: 35(ResType) ImageSparseFetch 167 169 Lod 130
-             171:   11(fvec4) CompositeExtract 170 1
-                              Store 13(texel) 171
-             172:      6(int) CompositeExtract 170 0
-             173:      6(int) Load 8(resident)
-             174:      6(int) BitwiseOr 173 172
-                              Store 8(resident) 174
-             175:         138 Load 140(us2DRect)
-             176:   31(fvec2) Load 33(c2)
-             177:  143(ivec2) ConvertFToS 176
-             178:111(ResType) ImageSparseFetch 175 177
-             179:   21(ivec4) CompositeExtract 178 1
-                              Store 23(utexel) 179
-             180:      6(int) CompositeExtract 178 0
-             181:      6(int) Load 8(resident)
-             182:      6(int) BitwiseOr 181 180
-                              Store 8(resident) 182
-             187:         184 Load 186(s2DMS)
-             188:   31(fvec2) Load 33(c2)
-             189:  143(ivec2) ConvertFToS 188
-             191: 35(ResType) ImageSparseFetch 187 189 Sample 190
-             192:   11(fvec4) CompositeExtract 191 1
-                              Store 13(texel) 192
-             193:      6(int) CompositeExtract 191 0
-             194:      6(int) Load 8(resident)
-             195:      6(int) BitwiseOr 194 193
-                              Store 8(resident) 195
-             196:          42 Load 44(s3D)
-             197:   46(fvec3) Load 48(c3)
-             198:  129(ivec3) ConvertFToS 197
-             200: 35(ResType) ImageSparseFetch 196 198 Lod ConstOffset 130 199
-             201:   11(fvec4) CompositeExtract 200 1
-                              Store 13(texel) 201
-             202:      6(int) CompositeExtract 200 0
-             203:      6(int) Load 8(resident)
-             204:      6(int) BitwiseOr 203 202
-                              Store 8(resident) 204
-             205:         138 Load 140(us2DRect)
-             206:   31(fvec2) Load 33(c2)
-             207:  143(ivec2) ConvertFToS 206
-             208:111(ResType) ImageSparseFetch 205 207 ConstOffset 145
-             209:   21(ivec4) CompositeExtract 208 1
-                              Store 23(utexel) 209
-             210:      6(int) CompositeExtract 208 0
-             211:      6(int) Load 8(resident)
-             212:      6(int) BitwiseOr 211 210
-                              Store 8(resident) 212
-             213:          27 Load 29(s2D)
-             214:   31(fvec2) Load 33(c2)
-             215: 35(ResType) ImageSparseSampleExplicitLod 213 214 Lod ConstOffset 50 158
-             216:   11(fvec4) CompositeExtract 215 1
-                              Store 13(texel) 216
-             217:      6(int) CompositeExtract 215 0
-             218:      6(int) Load 8(resident)
-             219:      6(int) BitwiseOr 218 217
-                              Store 8(resident) 219
-             224:         221 Load 223(is2DArray)
-             225:   46(fvec3) Load 48(c3)
-             228: 62(ResType) ImageSparseSampleExplicitLod 224 225 Lod ConstOffset 50 227
-             229:   16(ivec4) CompositeExtract 228 1
-                              Store 18(itexel) 229
-             230:      6(int) CompositeExtract 228 0
-             231:      6(int) Load 8(resident)
-             232:      6(int) BitwiseOr 231 230
-                              Store 8(resident) 232
-             233:          69 Load 71(s2DShadow)
-             234:   46(fvec3) Load 48(c3)
-             237:     74(ptr) AccessChain 13(texel) 159
-             238:   10(float) CompositeExtract 234 2
-             239: 77(ResType) ImageSparseSampleDrefExplicitLod 233 234 238 Lod ConstOffset 50 236
-             240:   10(float) CompositeExtract 239 1
-                              Store 237 240
-             241:      6(int) CompositeExtract 239 0
-             242:      6(int) Load 8(resident)
-             243:      6(int) BitwiseOr 242 241
-                              Store 8(resident) 243
-             244:          42 Load 44(s3D)
-             245:   46(fvec3) Load 48(c3)
-             246:   46(fvec3) Load 48(c3)
-             247:   46(fvec3) Load 48(c3)
-             248: 35(ResType) ImageSparseSampleExplicitLod 244 245 Grad 246 247
-             249:   11(fvec4) CompositeExtract 248 1
-                              Store 13(texel) 249
-             250:      6(int) CompositeExtract 248 0
-             251:      6(int) Load 8(resident)
-             252:      6(int) BitwiseOr 251 250
-                              Store 8(resident) 252
-             257:         254 Load 256(sCubeShadow)
-             258:   11(fvec4) Load 89(c4)
-             259:   46(fvec3) Load 48(c3)
-             260:   46(fvec3) Load 48(c3)
-             261:     74(ptr) AccessChain 13(texel) 119
-             262:   10(float) CompositeExtract 258 3
-             263: 77(ResType) ImageSparseSampleDrefExplicitLod 257 258 262 Grad 259 260
-             264:   10(float) CompositeExtract 263 1
-                              Store 261 264
-             265:      6(int) CompositeExtract 263 0
-             266:      6(int) Load 8(resident)
-             267:      6(int) BitwiseOr 266 265
-                              Store 8(resident) 267
-             268:         106 Load 108(usCubeArray)
-             269:   11(fvec4) Load 89(c4)
-             270:   46(fvec3) Load 48(c3)
-             271:   46(fvec3) Load 48(c3)
-             272:111(ResType) ImageSparseSampleExplicitLod 268 269 Grad 270 271
-             273:   21(ivec4) CompositeExtract 272 1
-                              Store 23(utexel) 273
-             274:      6(int) CompositeExtract 272 0
-             275:      6(int) Load 8(resident)
-             276:      6(int) BitwiseOr 275 274
-                              Store 8(resident) 276
-             277:          27 Load 29(s2D)
-             278:   31(fvec2) Load 33(c2)
-             279:   31(fvec2) Load 33(c2)
-             280:   31(fvec2) Load 33(c2)
-             281: 35(ResType) ImageSparseSampleExplicitLod 277 278 Grad ConstOffset 279 280 158
-             282:   11(fvec4) CompositeExtract 281 1
-                              Store 13(texel) 282
-             283:      6(int) CompositeExtract 281 0
-             284:      6(int) Load 8(resident)
-             285:      6(int) BitwiseOr 284 283
-                              Store 8(resident) 285
-             290:         287 Load 289(s2DRectShadow)
-             291:   46(fvec3) Load 48(c3)
-             292:   31(fvec2) Load 33(c2)
-             293:   31(fvec2) Load 33(c2)
-             295:     74(ptr) AccessChain 13(texel) 294
-             296:   10(float) CompositeExtract 291 2
-             297: 77(ResType) ImageSparseSampleDrefExplicitLod 290 291 296 Grad ConstOffset 292 293 227
-             298:   10(float) CompositeExtract 297 1
-                              Store 295 298
-             299:      6(int) CompositeExtract 297 0
-             300:      6(int) Load 8(resident)
-             301:      6(int) BitwiseOr 300 299
-                              Store 8(resident) 301
-             302:         221 Load 223(is2DArray)
-             303:   46(fvec3) Load 48(c3)
-             304:   31(fvec2) Load 33(c2)
-             305:   31(fvec2) Load 33(c2)
-             307: 62(ResType) ImageSparseSampleExplicitLod 302 303 Grad ConstOffset 304 305 306
-             308:   16(ivec4) CompositeExtract 307 1
-                              Store 18(itexel) 308
-             309:      6(int) CompositeExtract 307 0
-             310:      6(int) Load 8(resident)
-             311:      6(int) BitwiseOr 310 309
-                              Store 8(resident) 311
-             312:          27 Load 29(s2D)
-             313:   31(fvec2) Load 33(c2)
-             314: 35(ResType) ImageSparseGather 312 313 9
-             315:   11(fvec4) CompositeExtract 314 1
-                              Store 13(texel) 315
-             316:      6(int) CompositeExtract 314 0
-             317:      6(int) Load 8(resident)
-             318:      6(int) BitwiseOr 317 316
-                              Store 8(resident) 318
-             319:         221 Load 223(is2DArray)
-             320:   46(fvec3) Load 48(c3)
-             321: 62(ResType) ImageSparseGather 319 320 130
-             322:   16(ivec4) CompositeExtract 321 1
-                              Store 18(itexel) 322
-             323:      6(int) CompositeExtract 321 0
-             324:      6(int) Load 8(resident)
-             325:      6(int) BitwiseOr 324 323
-                              Store 8(resident) 325
-             326:         152 Load 154(s2DArrayShadow)
-             327:   46(fvec3) Load 48(c3)
-             328: 35(ResType) ImageSparseDrefGather 326 327 50
-             329:   11(fvec4) CompositeExtract 328 1
-                              Store 13(texel) 329
-             330:      6(int) CompositeExtract 328 0
-             331:      6(int) Load 8(resident)
-             332:      6(int) BitwiseOr 331 330
-                              Store 8(resident) 332
-             333:          27 Load 29(s2D)
-             334:   31(fvec2) Load 33(c2)
-             336: 35(ResType) ImageSparseGather 333 334 9 ConstOffset 335
-             337:   11(fvec4) CompositeExtract 336 1
-                              Store 13(texel) 337
-             338:      6(int) CompositeExtract 336 0
-             339:      6(int) Load 8(resident)
-             340:      6(int) BitwiseOr 339 338
-                              Store 8(resident) 340
-             341:         221 Load 223(is2DArray)
-             342:   46(fvec3) Load 48(c3)
-             343: 62(ResType) ImageSparseGather 341 342 130 ConstOffset 158
-             344:   16(ivec4) CompositeExtract 343 1
-                              Store 18(itexel) 344
-             345:      6(int) CompositeExtract 343 0
-             346:      6(int) Load 8(resident)
-             347:      6(int) BitwiseOr 346 345
-                              Store 8(resident) 347
-             348:         287 Load 289(s2DRectShadow)
-             349:   31(fvec2) Load 33(c2)
-             350: 35(ResType) ImageSparseDrefGather 348 349 50 ConstOffset 236
-             351:   11(fvec4) CompositeExtract 350 1
-                              Store 13(texel) 351
-             352:      6(int) CompositeExtract 350 0
-             353:      6(int) Load 8(resident)
-             354:      6(int) BitwiseOr 353 352
-                              Store 8(resident) 354
-             355:          27 Load 29(s2D)
-             356:   31(fvec2) Load 33(c2)
-             361:         358 Load 360(offsets)
-             362: 35(ResType) ImageSparseGather 355 356 9 ConstOffsets 361
-             363:   11(fvec4) CompositeExtract 362 1
-                              Store 13(texel) 363
-             364:      6(int) CompositeExtract 362 0
-             365:      6(int) Load 8(resident)
-             366:      6(int) BitwiseOr 365 364
-                              Store 8(resident) 366
-             367:         221 Load 223(is2DArray)
-             368:   46(fvec3) Load 48(c3)
-             369:         358 Load 360(offsets)
-             370: 62(ResType) ImageSparseGather 367 368 130 ConstOffsets 369
-             371:   16(ivec4) CompositeExtract 370 1
-                              Store 18(itexel) 371
-             372:      6(int) CompositeExtract 370 0
-             373:      6(int) Load 8(resident)
-             374:      6(int) BitwiseOr 373 372
-                              Store 8(resident) 374
-             375:         287 Load 289(s2DRectShadow)
-             376:   31(fvec2) Load 33(c2)
-             377:         358 Load 360(offsets)
-             378: 35(ResType) ImageSparseDrefGather 375 376 50 ConstOffsets 377
-             379:   11(fvec4) CompositeExtract 378 1
-                              Store 13(texel) 379
-             380:      6(int) CompositeExtract 378 0
-             381:      6(int) Load 8(resident)
-             382:      6(int) BitwiseOr 381 380
-                              Store 8(resident) 382
-             386:         383 Load 385(i2D)
-             389:  143(ivec2) Load 388(ic2)
-             390: 35(ResType) ImageSparseRead 386 389
-             391:   11(fvec4) CompositeExtract 390 1
-                              Store 13(texel) 391
-             392:      6(int) CompositeExtract 390 0
-             393:      6(int) Load 8(resident)
-             394:      6(int) BitwiseOr 393 392
-                              Store 8(resident) 394
-             398:         395 Load 397(ii3D)
-             401:  129(ivec3) Load 400(ic3)
-             402: 62(ResType) ImageSparseRead 398 401
-             403:   16(ivec4) CompositeExtract 402 1
-                              Store 18(itexel) 403
-             404:      6(int) CompositeExtract 402 0
-             405:      6(int) Load 8(resident)
-             406:      6(int) BitwiseOr 405 404
-                              Store 8(resident) 406
-             410:         407 Load 409(i2DMS)
-             411:  143(ivec2) Load 388(ic2)
-             412: 35(ResType) ImageSparseRead 410 411 Sample 144
-             413:   11(fvec4) CompositeExtract 412 1
-                              Store 13(texel) 413
-             414:      6(int) CompositeExtract 412 0
-             415:      6(int) Load 8(resident)
-             416:      6(int) BitwiseOr 415 414
-                              Store 8(resident) 416
+             170:          26 Image 167
+             171: 35(ResType) ImageSparseFetch 170 169 Lod 130
+             172:   11(fvec4) CompositeExtract 171 1
+                              Store 13(texel) 172
+             173:      6(int) CompositeExtract 171 0
+             174:      6(int) Load 8(resident)
+             175:      6(int) BitwiseOr 174 173
+                              Store 8(resident) 175
+             176:         138 Load 140(us2DRect)
+             177:   31(fvec2) Load 33(c2)
+             178:  143(ivec2) ConvertFToS 177
+             179:         137 Image 176
+             180:111(ResType) ImageSparseFetch 179 178
+             181:   21(ivec4) CompositeExtract 180 1
+                              Store 23(utexel) 181
+             182:      6(int) CompositeExtract 180 0
+             183:      6(int) Load 8(resident)
+             184:      6(int) BitwiseOr 183 182
+                              Store 8(resident) 184
+             189:         186 Load 188(s2DMS)
+             190:   31(fvec2) Load 33(c2)
+             191:  143(ivec2) ConvertFToS 190
+             193:         185 Image 189
+             194: 35(ResType) ImageSparseFetch 193 191 Sample 192
+             195:   11(fvec4) CompositeExtract 194 1
+                              Store 13(texel) 195
+             196:      6(int) CompositeExtract 194 0
+             197:      6(int) Load 8(resident)
+             198:      6(int) BitwiseOr 197 196
+                              Store 8(resident) 198
+             199:          42 Load 44(s3D)
+             200:   46(fvec3) Load 48(c3)
+             201:  129(ivec3) ConvertFToS 200
+             203:          41 Image 199
+             204: 35(ResType) ImageSparseFetch 203 201 Lod ConstOffset 130 202
+             205:   11(fvec4) CompositeExtract 204 1
+                              Store 13(texel) 205
+             206:      6(int) CompositeExtract 204 0
+             207:      6(int) Load 8(resident)
+             208:      6(int) BitwiseOr 207 206
+                              Store 8(resident) 208
+             209:         138 Load 140(us2DRect)
+             210:   31(fvec2) Load 33(c2)
+             211:  143(ivec2) ConvertFToS 210
+             212:         137 Image 209
+             213:111(ResType) ImageSparseFetch 212 211 ConstOffset 145
+             214:   21(ivec4) CompositeExtract 213 1
+                              Store 23(utexel) 214
+             215:      6(int) CompositeExtract 213 0
+             216:      6(int) Load 8(resident)
+             217:      6(int) BitwiseOr 216 215
+                              Store 8(resident) 217
+             218:          27 Load 29(s2D)
+             219:   31(fvec2) Load 33(c2)
+             220: 35(ResType) ImageSparseSampleExplicitLod 218 219 Lod ConstOffset 50 158
+             221:   11(fvec4) CompositeExtract 220 1
+                              Store 13(texel) 221
+             222:      6(int) CompositeExtract 220 0
+             223:      6(int) Load 8(resident)
+             224:      6(int) BitwiseOr 223 222
+                              Store 8(resident) 224
+             229:         226 Load 228(is2DArray)
+             230:   46(fvec3) Load 48(c3)
+             233: 62(ResType) ImageSparseSampleExplicitLod 229 230 Lod ConstOffset 50 232
+             234:   16(ivec4) CompositeExtract 233 1
+                              Store 18(itexel) 234
+             235:      6(int) CompositeExtract 233 0
+             236:      6(int) Load 8(resident)
+             237:      6(int) BitwiseOr 236 235
+                              Store 8(resident) 237
+             238:          69 Load 71(s2DShadow)
+             239:   46(fvec3) Load 48(c3)
+             242:     74(ptr) AccessChain 13(texel) 159
+             243:   10(float) CompositeExtract 239 2
+             244: 77(ResType) ImageSparseSampleDrefExplicitLod 238 239 243 Lod ConstOffset 50 241
+             245:   10(float) CompositeExtract 244 1
+                              Store 242 245
+             246:      6(int) CompositeExtract 244 0
+             247:      6(int) Load 8(resident)
+             248:      6(int) BitwiseOr 247 246
+                              Store 8(resident) 248
+             249:          42 Load 44(s3D)
+             250:   46(fvec3) Load 48(c3)
+             251:   46(fvec3) Load 48(c3)
+             252:   46(fvec3) Load 48(c3)
+             253: 35(ResType) ImageSparseSampleExplicitLod 249 250 Grad 251 252
+             254:   11(fvec4) CompositeExtract 253 1
+                              Store 13(texel) 254
+             255:      6(int) CompositeExtract 253 0
+             256:      6(int) Load 8(resident)
+             257:      6(int) BitwiseOr 256 255
+                              Store 8(resident) 257
+             262:         259 Load 261(sCubeShadow)
+             263:   11(fvec4) Load 89(c4)
+             264:   46(fvec3) Load 48(c3)
+             265:   46(fvec3) Load 48(c3)
+             266:     74(ptr) AccessChain 13(texel) 119
+             267:   10(float) CompositeExtract 263 3
+             268: 77(ResType) ImageSparseSampleDrefExplicitLod 262 263 267 Grad 264 265
+             269:   10(float) CompositeExtract 268 1
+                              Store 266 269
+             270:      6(int) CompositeExtract 268 0
+             271:      6(int) Load 8(resident)
+             272:      6(int) BitwiseOr 271 270
+                              Store 8(resident) 272
+             273:         106 Load 108(usCubeArray)
+             274:   11(fvec4) Load 89(c4)
+             275:   46(fvec3) Load 48(c3)
+             276:   46(fvec3) Load 48(c3)
+             277:111(ResType) ImageSparseSampleExplicitLod 273 274 Grad 275 276
+             278:   21(ivec4) CompositeExtract 277 1
+                              Store 23(utexel) 278
+             279:      6(int) CompositeExtract 277 0
+             280:      6(int) Load 8(resident)
+             281:      6(int) BitwiseOr 280 279
+                              Store 8(resident) 281
+             282:          27 Load 29(s2D)
+             283:   31(fvec2) Load 33(c2)
+             284:   31(fvec2) Load 33(c2)
+             285:   31(fvec2) Load 33(c2)
+             286: 35(ResType) ImageSparseSampleExplicitLod 282 283 Grad ConstOffset 284 285 158
+             287:   11(fvec4) CompositeExtract 286 1
+                              Store 13(texel) 287
+             288:      6(int) CompositeExtract 286 0
+             289:      6(int) Load 8(resident)
+             290:      6(int) BitwiseOr 289 288
+                              Store 8(resident) 290
+             295:         292 Load 294(s2DRectShadow)
+             296:   46(fvec3) Load 48(c3)
+             297:   31(fvec2) Load 33(c2)
+             298:   31(fvec2) Load 33(c2)
+             300:     74(ptr) AccessChain 13(texel) 299
+             301:   10(float) CompositeExtract 296 2
+             302: 77(ResType) ImageSparseSampleDrefExplicitLod 295 296 301 Grad ConstOffset 297 298 232
+             303:   10(float) CompositeExtract 302 1
+                              Store 300 303
+             304:      6(int) CompositeExtract 302 0
+             305:      6(int) Load 8(resident)
+             306:      6(int) BitwiseOr 305 304
+                              Store 8(resident) 306
+             307:         226 Load 228(is2DArray)
+             308:   46(fvec3) Load 48(c3)
+             309:   31(fvec2) Load 33(c2)
+             310:   31(fvec2) Load 33(c2)
+             312: 62(ResType) ImageSparseSampleExplicitLod 307 308 Grad ConstOffset 309 310 311
+             313:   16(ivec4) CompositeExtract 312 1
+                              Store 18(itexel) 313
+             314:      6(int) CompositeExtract 312 0
+             315:      6(int) Load 8(resident)
+             316:      6(int) BitwiseOr 315 314
+                              Store 8(resident) 316
+             317:          27 Load 29(s2D)
+             318:   31(fvec2) Load 33(c2)
+             319: 35(ResType) ImageSparseGather 317 318 9
+             320:   11(fvec4) CompositeExtract 319 1
+                              Store 13(texel) 320
+             321:      6(int) CompositeExtract 319 0
+             322:      6(int) Load 8(resident)
+             323:      6(int) BitwiseOr 322 321
+                              Store 8(resident) 323
+             324:         226 Load 228(is2DArray)
+             325:   46(fvec3) Load 48(c3)
+             326: 62(ResType) ImageSparseGather 324 325 130
+             327:   16(ivec4) CompositeExtract 326 1
+                              Store 18(itexel) 327
+             328:      6(int) CompositeExtract 326 0
+             329:      6(int) Load 8(resident)
+             330:      6(int) BitwiseOr 329 328
+                              Store 8(resident) 330
+             331:         152 Load 154(s2DArrayShadow)
+             332:   46(fvec3) Load 48(c3)
+             333: 35(ResType) ImageSparseDrefGather 331 332 50
+             334:   11(fvec4) CompositeExtract 333 1
+                              Store 13(texel) 334
+             335:      6(int) CompositeExtract 333 0
+             336:      6(int) Load 8(resident)
+             337:      6(int) BitwiseOr 336 335
+                              Store 8(resident) 337
+             338:          27 Load 29(s2D)
+             339:   31(fvec2) Load 33(c2)
+             341: 35(ResType) ImageSparseGather 338 339 9 ConstOffset 340
+             342:   11(fvec4) CompositeExtract 341 1
+                              Store 13(texel) 342
+             343:      6(int) CompositeExtract 341 0
+             344:      6(int) Load 8(resident)
+             345:      6(int) BitwiseOr 344 343
+                              Store 8(resident) 345
+             346:         226 Load 228(is2DArray)
+             347:   46(fvec3) Load 48(c3)
+             348: 62(ResType) ImageSparseGather 346 347 130 ConstOffset 158
+             349:   16(ivec4) CompositeExtract 348 1
+                              Store 18(itexel) 349
+             350:      6(int) CompositeExtract 348 0
+             351:      6(int) Load 8(resident)
+             352:      6(int) BitwiseOr 351 350
+                              Store 8(resident) 352
+             353:         292 Load 294(s2DRectShadow)
+             354:   31(fvec2) Load 33(c2)
+             355: 35(ResType) ImageSparseDrefGather 353 354 50 ConstOffset 241
+             356:   11(fvec4) CompositeExtract 355 1
+                              Store 13(texel) 356
+             357:      6(int) CompositeExtract 355 0
+             358:      6(int) Load 8(resident)
+             359:      6(int) BitwiseOr 358 357
+                              Store 8(resident) 359
+             360:          27 Load 29(s2D)
+             361:   31(fvec2) Load 33(c2)
+             366:         363 Load 365(offsets)
+             367: 35(ResType) ImageSparseGather 360 361 9 ConstOffsets 366
+             368:   11(fvec4) CompositeExtract 367 1
+                              Store 13(texel) 368
+             369:      6(int) CompositeExtract 367 0
+             370:      6(int) Load 8(resident)
+             371:      6(int) BitwiseOr 370 369
+                              Store 8(resident) 371
+             372:         226 Load 228(is2DArray)
+             373:   46(fvec3) Load 48(c3)
+             374:         363 Load 365(offsets)
+             375: 62(ResType) ImageSparseGather 372 373 130 ConstOffsets 374
+             376:   16(ivec4) CompositeExtract 375 1
+                              Store 18(itexel) 376
+             377:      6(int) CompositeExtract 375 0
+             378:      6(int) Load 8(resident)
+             379:      6(int) BitwiseOr 378 377
+                              Store 8(resident) 379
+             380:         292 Load 294(s2DRectShadow)
+             381:   31(fvec2) Load 33(c2)
+             382:         363 Load 365(offsets)
+             383: 35(ResType) ImageSparseDrefGather 380 381 50 ConstOffsets 382
+             384:   11(fvec4) CompositeExtract 383 1
+                              Store 13(texel) 384
+             385:      6(int) CompositeExtract 383 0
+             386:      6(int) Load 8(resident)
+             387:      6(int) BitwiseOr 386 385
+                              Store 8(resident) 387
+             391:         388 Load 390(i2D)
+             394:  143(ivec2) Load 393(ic2)
+             395: 35(ResType) ImageSparseRead 391 394
+             396:   11(fvec4) CompositeExtract 395 1
+                              Store 13(texel) 396
+             397:      6(int) CompositeExtract 395 0
+             398:      6(int) Load 8(resident)
+             399:      6(int) BitwiseOr 398 397
+                              Store 8(resident) 399
+             403:         400 Load 402(ii3D)
+             406:  129(ivec3) Load 405(ic3)
+             407: 62(ResType) ImageSparseRead 403 406
+             408:   16(ivec4) CompositeExtract 407 1
+                              Store 18(itexel) 408
+             409:      6(int) CompositeExtract 407 0
+             410:      6(int) Load 8(resident)
+             411:      6(int) BitwiseOr 410 409
+                              Store 8(resident) 411
+             415:         412 Load 414(i2DMS)
+             416:  143(ivec2) Load 393(ic2)
+             417: 35(ResType) ImageSparseRead 415 416 Sample 144
+             418:   11(fvec4) CompositeExtract 417 1
+                              Store 13(texel) 418
+             419:      6(int) CompositeExtract 417 0
              420:      6(int) Load 8(resident)
-             422:   421(bool) ImageSparseTexelsResident 420
-                              SelectionMerge 424 None
-                              BranchConditional 422 423 426
-             423:               Label
-             425:   11(fvec4)   Load 13(texel)
-                                Store 419 425
-                                Branch 424
-             426:               Label
-             427:   16(ivec4)   Load 18(itexel)
-             428:   11(fvec4)   ConvertSToF 427
-             429:   21(ivec4)   Load 23(utexel)
-             430:   11(fvec4)   ConvertUToF 429
-             431:   11(fvec4)   FAdd 428 430
-                                Store 419 431
-                                Branch 424
-             424:             Label
-             432:   11(fvec4) Load 419
-                              Store 418(outColor) 432
+             421:      6(int) BitwiseOr 420 419
+                              Store 8(resident) 421
+             425:      6(int) Load 8(resident)
+             427:   426(bool) ImageSparseTexelsResident 425
+                              SelectionMerge 429 None
+                              BranchConditional 427 428 431
+             428:               Label
+             430:   11(fvec4)   Load 13(texel)
+                                Store 424 430
+                                Branch 429
+             431:               Label
+             432:   16(ivec4)   Load 18(itexel)
+             433:   11(fvec4)   ConvertSToF 432
+             434:   21(ivec4)   Load 23(utexel)
+             435:   11(fvec4)   ConvertUToF 434
+             436:   11(fvec4)   FAdd 433 435
+                                Store 424 436
+                                Branch 429
+             429:             Label
+             437:   11(fvec4) Load 424
+                              Store 423(outColor) 437
                               Return
                               FunctionEnd
index df5fe2b..b579475 100755 (executable)
@@ -9,13 +9,13 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 290
+// Id's are bound by 291
 
                               Capability Shader
                               Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 47 276 279 282 288 289
+                              EntryPoint Fragment 4  "main" 47 277 280 283 289 290
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 140
                               Name 4  "main"
@@ -36,13 +36,13 @@ Linked fragment stage:
                               Name 158  "shadowSampler2D"
                               Name 207  "iCoords2D"
                               Name 212  "iLod"
-                              Name 221  "gradX"
-                              Name 224  "gradY"
-                              Name 276  "gl_FragColor"
-                              Name 279  "u"
-                              Name 282  "blend"
-                              Name 288  "scale"
-                              Name 289  "t"
+                              Name 222  "gradX"
+                              Name 225  "gradY"
+                              Name 277  "gl_FragColor"
+                              Name 280  "u"
+                              Name 283  "blend"
+                              Name 289  "scale"
+                              Name 290  "t"
                               Decorate 32(texSampler1D) DescriptorSet 0
                               Decorate 72(texSampler2D) DescriptorSet 0
                               Decorate 98(texSampler3D) DescriptorSet 0
@@ -101,18 +101,18 @@ Linked fragment stage:
              210:  205(ivec2) ConstantComposite 208 209
              211:             TypePointer Function 204(int)
              213:    204(int) Constant 1
-             220:             TypePointer Function 45(fvec2)
-             249:    204(int) Constant 3
-             250:    204(int) Constant 4294967289
-             251:  205(ivec2) ConstantComposite 249 250
-             275:             TypePointer Output 22(fvec4)
-276(gl_FragColor):    275(ptr) Variable Output
-             278:             TypePointer Input 22(fvec4)
-          279(u):    278(ptr) Variable Input
-             281:             TypePointer Input 6(float)
-      282(blend):    281(ptr) Variable Input
-      288(scale):     46(ptr) Variable Input
-          289(t):     46(ptr) Variable Input
+             221:             TypePointer Function 45(fvec2)
+             250:    204(int) Constant 3
+             251:    204(int) Constant 4294967289
+             252:  205(ivec2) ConstantComposite 250 251
+             276:             TypePointer Output 22(fvec4)
+277(gl_FragColor):    276(ptr) Variable Output
+             279:             TypePointer Input 22(fvec4)
+          280(u):    279(ptr) Variable Input
+             282:             TypePointer Input 6(float)
+      283(blend):    282(ptr) Variable Input
+      289(scale):     46(ptr) Variable Input
+          290(t):     46(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
    8(blendscale):      7(ptr) Variable Function
@@ -125,8 +125,8 @@ Linked fragment stage:
        26(color):     23(ptr) Variable Function
   207(iCoords2D):    206(ptr) Variable Function
        212(iLod):    211(ptr) Variable Function
-      221(gradX):    220(ptr) Variable Function
-      224(gradY):    220(ptr) Variable Function
+      222(gradX):    221(ptr) Variable Function
+      225(gradY):    221(ptr) Variable Function
                               Store 8(blendscale) 9
                               Store 10(bias) 11
                               Store 12(lod) 13
@@ -312,73 +312,74 @@ Linked fragment stage:
              214:          70 Load 72(texSampler2D)
              215:  205(ivec2) Load 207(iCoords2D)
              216:    204(int) Load 212(iLod)
-             217:   22(fvec4) ImageFetch 214 215 Lod 216
-             218:   22(fvec4) Load 26(color)
-             219:   22(fvec4) FAdd 218 217
-                              Store 26(color) 219
-             222:   45(fvec2) Load 47(coords2D)
-             223:   45(fvec2) DPdx 222
-                              Store 221(gradX) 223
-             225:   45(fvec2) Load 47(coords2D)
-             226:   45(fvec2) DPdy 225
-                              Store 224(gradY) 226
-             227:          70 Load 72(texSampler2D)
-             228:   45(fvec2) Load 47(coords2D)
-             229:   45(fvec2) Load 221(gradX)
-             230:   45(fvec2) Load 224(gradY)
-             231:   22(fvec4) ImageSampleExplicitLod 227 228 Grad 229 230
-             232:   22(fvec4) Load 26(color)
-             233:   22(fvec4) FAdd 232 231
-                              Store 26(color) 233
-             234:          70 Load 72(texSampler2D)
-             235:   45(fvec2) Load 47(coords2D)
-             236:    6(float) Load 14(proj)
-             237:    6(float) CompositeExtract 235 0
-             238:    6(float) CompositeExtract 235 1
-             239:   16(fvec3) CompositeConstruct 237 238 236
-             240:   45(fvec2) Load 221(gradX)
-             241:   45(fvec2) Load 224(gradY)
-             242:   22(fvec4) ImageSampleProjExplicitLod 234 239 Grad 240 241
-             243:   22(fvec4) Load 26(color)
-             244:   22(fvec4) FAdd 243 242
-                              Store 26(color) 244
-             245:          70 Load 72(texSampler2D)
-             246:   45(fvec2) Load 47(coords2D)
-             247:   45(fvec2) Load 221(gradX)
-             248:   45(fvec2) Load 224(gradY)
-             252:   22(fvec4) ImageSampleExplicitLod 245 246 Grad ConstOffset 247 248 251
-             253:   22(fvec4) Load 26(color)
-             254:   22(fvec4) FAdd 253 252
-                              Store 26(color) 254
-             255:          70 Load 72(texSampler2D)
-             256:   16(fvec3) Load 18(coords3D)
-             257:   45(fvec2) Load 221(gradX)
-             258:   45(fvec2) Load 224(gradY)
-             259:   22(fvec4) ImageSampleProjExplicitLod 255 256 Grad ConstOffset 257 258 251
-             260:   22(fvec4) Load 26(color)
-             261:   22(fvec4) FAdd 260 259
-                              Store 26(color) 261
-             262:         156 Load 158(shadowSampler2D)
-             263:   45(fvec2) Load 47(coords2D)
-             264:    6(float) Load 12(lod)
-             265:    6(float) CompositeExtract 263 0
-             266:    6(float) CompositeExtract 263 1
-             267:   16(fvec3) CompositeConstruct 265 266 264
-             268:   45(fvec2) Load 221(gradX)
-             269:   45(fvec2) Load 224(gradY)
-             270:    6(float) CompositeExtract 267 2
-             271:    6(float) ImageSampleDrefExplicitLod 262 267 270 Grad 268 269
-             272:   22(fvec4) Load 26(color)
-             273:   22(fvec4) CompositeConstruct 271 271 271 271
-             274:   22(fvec4) FAdd 272 273
-                              Store 26(color) 274
-             277:   22(fvec4) Load 26(color)
-             280:   22(fvec4) Load 279(u)
-             283:    6(float) Load 282(blend)
-             284:    6(float) Load 8(blendscale)
-             285:    6(float) FMul 283 284
-             286:   22(fvec4) CompositeConstruct 285 285 285 285
-             287:   22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 286
-                              Store 276(gl_FragColor) 287
+             217:          69 Image 214
+             218:   22(fvec4) ImageFetch 217 215 Lod 216
+             219:   22(fvec4) Load 26(color)
+             220:   22(fvec4) FAdd 219 218
+                              Store 26(color) 220
+             223:   45(fvec2) Load 47(coords2D)
+             224:   45(fvec2) DPdx 223
+                              Store 222(gradX) 224
+             226:   45(fvec2) Load 47(coords2D)
+             227:   45(fvec2) DPdy 226
+                              Store 225(gradY) 227
+             228:          70 Load 72(texSampler2D)
+             229:   45(fvec2) Load 47(coords2D)
+             230:   45(fvec2) Load 222(gradX)
+             231:   45(fvec2) Load 225(gradY)
+             232:   22(fvec4) ImageSampleExplicitLod 228 229 Grad 230 231
+             233:   22(fvec4) Load 26(color)
+             234:   22(fvec4) FAdd 233 232
+                              Store 26(color) 234
+             235:          70 Load 72(texSampler2D)
+             236:   45(fvec2) Load 47(coords2D)
+             237:    6(float) Load 14(proj)
+             238:    6(float) CompositeExtract 236 0
+             239:    6(float) CompositeExtract 236 1
+             240:   16(fvec3) CompositeConstruct 238 239 237
+             241:   45(fvec2) Load 222(gradX)
+             242:   45(fvec2) Load 225(gradY)
+             243:   22(fvec4) ImageSampleProjExplicitLod 235 240 Grad 241 242
+             244:   22(fvec4) Load 26(color)
+             245:   22(fvec4) FAdd 244 243
+                              Store 26(color) 245
+             246:          70 Load 72(texSampler2D)
+             247:   45(fvec2) Load 47(coords2D)
+             248:   45(fvec2) Load 222(gradX)
+             249:   45(fvec2) Load 225(gradY)
+             253:   22(fvec4) ImageSampleExplicitLod 246 247 Grad ConstOffset 248 249 252
+             254:   22(fvec4) Load 26(color)
+             255:   22(fvec4) FAdd 254 253
+                              Store 26(color) 255
+             256:          70 Load 72(texSampler2D)
+             257:   16(fvec3) Load 18(coords3D)
+             258:   45(fvec2) Load 222(gradX)
+             259:   45(fvec2) Load 225(gradY)
+             260:   22(fvec4) ImageSampleProjExplicitLod 256 257 Grad ConstOffset 258 259 252
+             261:   22(fvec4) Load 26(color)
+             262:   22(fvec4) FAdd 261 260
+                              Store 26(color) 262
+             263:         156 Load 158(shadowSampler2D)
+             264:   45(fvec2) Load 47(coords2D)
+             265:    6(float) Load 12(lod)
+             266:    6(float) CompositeExtract 264 0
+             267:    6(float) CompositeExtract 264 1
+             268:   16(fvec3) CompositeConstruct 266 267 265
+             269:   45(fvec2) Load 222(gradX)
+             270:   45(fvec2) Load 225(gradY)
+             271:    6(float) CompositeExtract 268 2
+             272:    6(float) ImageSampleDrefExplicitLod 263 268 271 Grad 269 270
+             273:   22(fvec4) Load 26(color)
+             274:   22(fvec4) CompositeConstruct 272 272 272 272
+             275:   22(fvec4) FAdd 273 274
+                              Store 26(color) 275
+             278:   22(fvec4) Load 26(color)
+             281:   22(fvec4) Load 280(u)
+             284:    6(float) Load 283(blend)
+             285:    6(float) Load 8(blendscale)
+             286:    6(float) FMul 284 285
+             287:   22(fvec4) CompositeConstruct 286 286 286 286
+             288:   22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 278 281 287
+                              Store 277(gl_FragColor) 288
                               Return
                               FunctionEnd