From 4e55988a47c1e5922434dc56b2f7a74d06cab1e5 Mon Sep 17 00:00:00 2001
From: John Kessenich <cepheus@frii.com>
Date: Tue, 27 Sep 2016 23:09:32 -0600
Subject: [PATCH] HLSL Tests: Tests for previous commit, to make it easier to
 see what's changing.

---
 Test/baseResults/hlsl.array.flatten.frag.out  |  304 +--
 Test/baseResults/hlsl.array.frag.out          |  189 +-
 Test/baseResults/hlsl.assoc.frag.out          |    4 +-
 Test/baseResults/hlsl.attribute.frag.out      |    4 +-
 Test/baseResults/hlsl.buffer.frag.out         |    4 +-
 .../hlsl.calculatelod.dx10.frag.out           |    4 +-
 .../hlsl.calculatelodunclamped.dx10.frag.out  |    4 +-
 Test/baseResults/hlsl.cast.frag.out           |    4 +-
 Test/baseResults/hlsl.conditional.frag.out    |    4 +-
 Test/baseResults/hlsl.constructexpr.frag.out  |    4 +-
 Test/baseResults/hlsl.depthGreater.frag.out   |    4 +-
 Test/baseResults/hlsl.depthLess.frag.out      |    4 +-
 Test/baseResults/hlsl.discard.frag.out        |   12 +-
 Test/baseResults/hlsl.doLoop.frag.out         |    4 +-
 Test/baseResults/hlsl.entry-in.frag.out       |   16 +-
 Test/baseResults/hlsl.entry-out.frag.out      |    4 +-
 Test/baseResults/hlsl.float1.frag.out         |    4 +-
 Test/baseResults/hlsl.float4.frag.out         |   99 +-
 Test/baseResults/hlsl.forLoop.frag.out        |    4 +-
 .../hlsl.gather.array.dx10.frag.out           |    4 +-
 .../hlsl.gather.basic.dx10.frag.out           |    4 +-
 .../hlsl.gather.basic.dx10.vert.out           |    4 +-
 .../hlsl.gather.offset.dx10.frag.out          |    4 +-
 .../hlsl.gather.offsetarray.dx10.frag.out     |    4 +-
 .../hlsl.gatherRGBA.array.dx10.frag.out       |  859 ++++---
 .../hlsl.gatherRGBA.basic.dx10.frag.out       |  895 ++++---
 .../hlsl.gatherRGBA.offset.dx10.frag.out      | 1732 +++++++++-----
 .../hlsl.gatherRGBA.offsetarray.dx10.frag.out | 1696 ++++++++-----
 .../hlsl.getdimensions.dx10.frag.out          |    4 +-
 .../hlsl.getdimensions.dx10.vert.out          |    4 +-
 .../hlsl.getsampleposition.dx10.frag.out      |    4 +-
 Test/baseResults/hlsl.if.frag.out             |    4 +-
 Test/baseResults/hlsl.init.frag.out           |    4 +-
 Test/baseResults/hlsl.init2.frag.out          |   12 +-
 Test/baseResults/hlsl.inoutquals.frag.out     |   12 +-
 .../hlsl.intrinsics.barriers.comp.out         |    4 +-
 Test/baseResults/hlsl.intrinsics.comp.out     |   20 +-
 .../hlsl.intrinsics.double.frag.out           |    4 +-
 .../hlsl.intrinsics.evalfns.frag.out          |    4 +-
 .../hlsl.intrinsics.f1632.frag.out            |   20 +-
 Test/baseResults/hlsl.intrinsics.frag.out     |   52 +-
 Test/baseResults/hlsl.intrinsics.lit.frag.out |    4 +-
 .../hlsl.intrinsics.negative.comp.out         |   20 +-
 .../hlsl.intrinsics.negative.frag.out         |   32 +-
 .../hlsl.intrinsics.negative.vert.out         |   32 +-
 Test/baseResults/hlsl.intrinsics.vert.out     |   48 +-
 Test/baseResults/hlsl.layout.frag.out         |    4 +-
 Test/baseResults/hlsl.load.2dms.dx10.frag.out |  489 ++--
 .../baseResults/hlsl.load.array.dx10.frag.out |  536 +++--
 .../baseResults/hlsl.load.basic.dx10.frag.out |  658 ++---
 .../baseResults/hlsl.load.basic.dx10.vert.out |  635 +++--
 .../hlsl.load.buffer.dx10.frag.out            |  245 +-
 .../hlsl.load.offset.dx10.frag.out            |  777 +++---
 .../hlsl.load.offsetarray.dx10.frag.out       |  621 +++--
 Test/baseResults/hlsl.matType.frag.out        |   89 +-
 Test/baseResults/hlsl.matrixindex.frag.out    |  141 +-
 Test/baseResults/hlsl.max.frag.out            |    4 +-
 Test/baseResults/hlsl.multiEntry.vert.out     |   12 +-
 .../baseResults/hlsl.numericsuffixes.frag.out |    4 +-
 Test/baseResults/hlsl.overload.frag.out       |  420 ++--
 Test/baseResults/hlsl.pp.line.frag.out        |    4 +-
 Test/baseResults/hlsl.precedence.frag.out     |    4 +-
 Test/baseResults/hlsl.precedence2.frag.out    |    4 +-
 Test/baseResults/hlsl.precise.frag.out        |    8 +-
 Test/baseResults/hlsl.promotions.frag.out     | 2112 +++++++++++------
 Test/baseResults/hlsl.reflection.vert.out     |   89 +-
 .../hlsl.sample.array.dx10.frag.out           |    4 +-
 .../hlsl.sample.basic.dx10.frag.out           |    4 +-
 .../hlsl.sample.offset.dx10.frag.out          |    4 +-
 .../hlsl.sample.offsetarray.dx10.frag.out     |    4 +-
 .../hlsl.samplebias.array.dx10.frag.out       |    4 +-
 .../hlsl.samplebias.basic.dx10.frag.out       |    4 +-
 .../hlsl.samplebias.offset.dx10.frag.out      |    4 +-
 .../hlsl.samplebias.offsetarray.dx10.frag.out |    4 +-
 .../hlsl.samplecmp.array.dx10.frag.out        |    4 +-
 .../hlsl.samplecmp.basic.dx10.frag.out        |    4 +-
 .../hlsl.samplecmp.offset.dx10.frag.out       |    4 +-
 .../hlsl.samplecmp.offsetarray.dx10.frag.out  |    4 +-
 ...lsl.samplecmplevelzero.array.dx10.frag.out |    4 +-
 ...lsl.samplecmplevelzero.basic.dx10.frag.out |    4 +-
 ...sl.samplecmplevelzero.offset.dx10.frag.out |    4 +-
 ...mplecmplevelzero.offsetarray.dx10.frag.out |    4 +-
 .../hlsl.samplegrad.array.dx10.frag.out       |    4 +-
 .../hlsl.samplegrad.basic.dx10.frag.out       |    4 +-
 .../hlsl.samplegrad.basic.dx10.vert.out       |    4 +-
 .../hlsl.samplegrad.offset.dx10.frag.out      |    4 +-
 .../hlsl.samplegrad.offsetarray.dx10.frag.out |    4 +-
 .../hlsl.samplelevel.array.dx10.frag.out      |    4 +-
 .../hlsl.samplelevel.basic.dx10.frag.out      |    4 +-
 .../hlsl.samplelevel.basic.dx10.vert.out      |    4 +-
 .../hlsl.samplelevel.offset.dx10.frag.out     |    4 +-
 ...hlsl.samplelevel.offsetarray.dx10.frag.out |    4 +-
 Test/baseResults/hlsl.scope.frag.out          |    4 +-
 Test/baseResults/hlsl.semicolons.frag.out     |   12 +-
 Test/baseResults/hlsl.shapeConv.frag.out      |    4 +-
 Test/baseResults/hlsl.sin.frag.out            |    4 +-
 Test/baseResults/hlsl.string.frag.out         |    4 +-
 Test/baseResults/hlsl.stringtoken.frag.out    |   21 +-
 Test/baseResults/hlsl.struct.frag.out         |  194 +-
 Test/baseResults/hlsl.structin.vert.out       |    4 +-
 Test/baseResults/hlsl.switch.frag.out         |    4 +-
 Test/baseResults/hlsl.swizzle.frag.out        |    4 +-
 Test/baseResults/hlsl.templatetypes.frag.out  |    4 +-
 Test/baseResults/hlsl.typedef.frag.out        |    8 +-
 Test/baseResults/hlsl.void.frag.out           |   20 +-
 Test/baseResults/hlsl.whileLoop.frag.out      |    4 +-
 .../spv.register.autoassign.frag.out          |  171 +-
 .../spv.register.noautoassign.frag.out        |  170 +-
 Test/hlsl.array.flatten.frag                  |    2 +-
 Test/hlsl.float1.frag                         |    4 +-
 Test/hlsl.float4.frag                         |    6 +-
 Test/hlsl.init.frag                           |   20 +-
 Test/hlsl.intrinsics.comp                     |    2 +-
 Test/hlsl.intrinsics.frag                     |    2 +-
 Test/hlsl.intrinsics.negative.vert            |   24 +-
 Test/hlsl.precise.frag                        |    2 +-
 Test/hlsl.struct.frag                         |    4 +-
 Test/hlsl.swizzle.frag                        |    2 +-
 glslang/Include/revision.h                    |    2 +-
 119 files changed, 8321 insertions(+), 5503 deletions(-)

diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out
index eedd698fa..e7487598a 100644
--- a/Test/baseResults/hlsl.array.flatten.frag.out
+++ b/Test/baseResults/hlsl.array.flatten.frag.out
@@ -2,7 +2,7 @@ hlsl.array.flatten.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:17  Function Definition: TestFn1( (global 4-component vector of float)
+0:17  Function Definition: TestFn1( (temp 4-component vector of float)
 0:17    Function Parameters: 
 0:?     Sequence
 0:18      Branch: Return with expression
@@ -12,7 +12,7 @@ gl_FragCoord origin is upper left
 0:?             'g_samp[1]' (uniform sampler)
 0:18          Constant:
 0:18            0.200000
-0:22  Function Definition: TestFn2(t11[3];p1[3]; (global 4-component vector of float)
+0:22  Function Definition: TestFn2(t11[3];p1[3]; (temp 4-component vector of float)
 0:22    Function Parameters: 
 0:22      'l_tex' (in 3-element array of texture1D)
 0:22      'l_samp' (in 3-element array of sampler)
@@ -39,7 +39,7 @@ gl_FragCoord origin is upper left
 0:26        3 (const int)
 0:26        4 (const int)
 0:26        5 (const int)
-0:31  Function Definition: main(struct-PS_OUTPUT-vf41; (global void)
+0:31  Function Definition: main(struct-PS_OUTPUT-vf41; (temp void)
 0:31    Function Parameters: 
 0:31      'ps_output' (out structure{temp 4-component vector of float color})
 0:?     Sequence
@@ -84,36 +84,17 @@ gl_FragCoord origin is upper left
 0:34                2 (const int)
 0:?             'g_tex[2]' (uniform texture1D)
 0:35      Sequence
-0:?         Sequence
-0:35          move second child to first child (temp float)
-0:35            direct index (temp float)
-0:35              'local_float_array' (temp 4-element array of float)
-0:35              Constant:
-0:35                0 (const int)
-0:?             'g_floats[0]' (uniform float)
-0:35          move second child to first child (temp float)
-0:35            direct index (temp float)
-0:35              'local_float_array' (temp 4-element array of float)
-0:35              Constant:
-0:35                1 (const int)
-0:?             'g_floats[1]' (uniform float)
-0:35          move second child to first child (temp float)
-0:35            direct index (temp float)
-0:35              'local_float_array' (temp 4-element array of float)
-0:35              Constant:
-0:35                2 (const int)
-0:?             'g_floats[2]' (uniform float)
-0:35          move second child to first child (temp float)
-0:35            direct index (temp float)
-0:35              'local_float_array' (temp 4-element array of float)
-0:35              Constant:
-0:35                3 (const int)
-0:?             'g_floats[3]' (uniform float)
+0:35        move second child to first child (temp 4-element array of float)
+0:35          'local_float_array' (temp 4-element array of float)
+0:35          g_floats: direct index for structure (layout(offset=384 ) uniform 4-element array of float)
+0:35            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats})
+0:35            Constant:
+0:35              2 (const uint)
 0:37      move second child to first child (temp 4-component vector of float)
 0:?         'color' (layout(location=0 ) out 4-component vector of float)
 0:37        add (temp 4-component vector of float)
-0:37          Function Call: TestFn1( (global 4-component vector of float)
-0:37          Function Call: TestFn2(t11[3];p1[3]; (global 4-component vector of float)
+0:37          Function Call: TestFn1( (temp 4-component vector of float)
+0:37          Function Call: TestFn2(t11[3];p1[3]; (temp 4-component vector of float)
 0:?             Comma (temp 3-element array of texture1D)
 0:?               Sequence
 0:?                 move second child to first child (temp texture1D)
@@ -169,18 +150,7 @@ gl_FragCoord origin is upper left
 0:?     'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler)
 0:?     'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler)
 0:?     'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler)
-0:?     'g_mats[0]' (uniform 3X3 matrix of float)
-0:?     'g_mats[1]' (uniform 3X3 matrix of float)
-0:?     'g_mats[2]' (uniform 3X3 matrix of float)
-0:?     'g_mats[3]' (uniform 3X3 matrix of float)
-0:?     'g_mats_explicit[0]' (layout(binding=10 ) uniform 3X3 matrix of float)
-0:?     'g_mats_explicit[1]' (layout(binding=11 ) uniform 3X3 matrix of float)
-0:?     'g_mats_explicit[2]' (layout(binding=12 ) uniform 3X3 matrix of float)
-0:?     'g_mats_explicit[3]' (layout(binding=13 ) uniform 3X3 matrix of float)
-0:?     'g_floats[0]' (uniform float)
-0:?     'g_floats[1]' (uniform float)
-0:?     'g_floats[2]' (uniform float)
-0:?     'g_floats[3]' (uniform float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats})
 0:?     'not_flattened_a' (global 5-element array of int)
 0:?     'color' (layout(location=0 ) out 4-component vector of float)
 
@@ -191,7 +161,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:17  Function Definition: TestFn1( (global 4-component vector of float)
+0:17  Function Definition: TestFn1( (temp 4-component vector of float)
 0:17    Function Parameters: 
 0:?     Sequence
 0:18      Branch: Return with expression
@@ -201,7 +171,7 @@ gl_FragCoord origin is upper left
 0:?             'g_samp[1]' (uniform sampler)
 0:18          Constant:
 0:18            0.200000
-0:22  Function Definition: TestFn2(t11[3];p1[3]; (global 4-component vector of float)
+0:22  Function Definition: TestFn2(t11[3];p1[3]; (temp 4-component vector of float)
 0:22    Function Parameters: 
 0:22      'l_tex' (in 3-element array of texture1D)
 0:22      'l_samp' (in 3-element array of sampler)
@@ -228,7 +198,7 @@ gl_FragCoord origin is upper left
 0:26        3 (const int)
 0:26        4 (const int)
 0:26        5 (const int)
-0:31  Function Definition: main(struct-PS_OUTPUT-vf41; (global void)
+0:31  Function Definition: main(struct-PS_OUTPUT-vf41; (temp void)
 0:31    Function Parameters: 
 0:31      'ps_output' (out structure{temp 4-component vector of float color})
 0:?     Sequence
@@ -273,36 +243,17 @@ gl_FragCoord origin is upper left
 0:34                2 (const int)
 0:?             'g_tex[2]' (uniform texture1D)
 0:35      Sequence
-0:?         Sequence
-0:35          move second child to first child (temp float)
-0:35            direct index (temp float)
-0:35              'local_float_array' (temp 4-element array of float)
-0:35              Constant:
-0:35                0 (const int)
-0:?             'g_floats[0]' (uniform float)
-0:35          move second child to first child (temp float)
-0:35            direct index (temp float)
-0:35              'local_float_array' (temp 4-element array of float)
-0:35              Constant:
-0:35                1 (const int)
-0:?             'g_floats[1]' (uniform float)
-0:35          move second child to first child (temp float)
-0:35            direct index (temp float)
-0:35              'local_float_array' (temp 4-element array of float)
-0:35              Constant:
-0:35                2 (const int)
-0:?             'g_floats[2]' (uniform float)
-0:35          move second child to first child (temp float)
-0:35            direct index (temp float)
-0:35              'local_float_array' (temp 4-element array of float)
-0:35              Constant:
-0:35                3 (const int)
-0:?             'g_floats[3]' (uniform float)
+0:35        move second child to first child (temp 4-element array of float)
+0:35          'local_float_array' (temp 4-element array of float)
+0:35          g_floats: direct index for structure (layout(offset=384 ) uniform 4-element array of float)
+0:35            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats})
+0:35            Constant:
+0:35              2 (const uint)
 0:37      move second child to first child (temp 4-component vector of float)
 0:?         'color' (layout(location=0 ) out 4-component vector of float)
 0:37        add (temp 4-component vector of float)
-0:37          Function Call: TestFn1( (global 4-component vector of float)
-0:37          Function Call: TestFn2(t11[3];p1[3]; (global 4-component vector of float)
+0:37          Function Call: TestFn1( (temp 4-component vector of float)
+0:37          Function Call: TestFn2(t11[3];p1[3]; (temp 4-component vector of float)
 0:?             Comma (temp 3-element array of texture1D)
 0:?               Sequence
 0:?                 move second child to first child (temp texture1D)
@@ -358,30 +309,19 @@ gl_FragCoord origin is upper left
 0:?     'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler)
 0:?     'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler)
 0:?     'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler)
-0:?     'g_mats[0]' (uniform 3X3 matrix of float)
-0:?     'g_mats[1]' (uniform 3X3 matrix of float)
-0:?     'g_mats[2]' (uniform 3X3 matrix of float)
-0:?     'g_mats[3]' (uniform 3X3 matrix of float)
-0:?     'g_mats_explicit[0]' (layout(binding=10 ) uniform 3X3 matrix of float)
-0:?     'g_mats_explicit[1]' (layout(binding=11 ) uniform 3X3 matrix of float)
-0:?     'g_mats_explicit[2]' (layout(binding=12 ) uniform 3X3 matrix of float)
-0:?     'g_mats_explicit[3]' (layout(binding=13 ) uniform 3X3 matrix of float)
-0:?     'g_floats[0]' (uniform float)
-0:?     'g_floats[1]' (uniform float)
-0:?     'g_floats[2]' (uniform float)
-0:?     'g_floats[3]' (uniform float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats})
 0:?     'not_flattened_a' (global 5-element array of int)
 0:?     'color' (layout(location=0 ) out 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 128
+// Id's are bound by 123
 
                               Capability Shader
                               Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 93
+                              EntryPoint Fragment 4  "main" 99
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "TestFn1("
@@ -398,50 +338,51 @@ gl_FragCoord origin is upper left
                               Name 66  "g_tex[0]"
                               Name 71  "g_tex[2]"
                               Name 77  "local_float_array"
-                              Name 79  "g_floats[0]"
-                              Name 83  "g_floats[1]"
-                              Name 86  "g_floats[2]"
-                              Name 89  "g_floats[3]"
-                              Name 93  "color"
-                              Name 95  "aggShadow"
-                              Name 102  "aggShadow"
-                              Name 111  "g_tex_explicit[0]"
-                              Name 112  "g_tex_explicit[1]"
-                              Name 113  "g_tex_explicit[2]"
-                              Name 114  "g_samp_explicit[0]"
-                              Name 115  "g_samp_explicit[1]"
-                              Name 116  "g_samp_explicit[2]"
-                              Name 120  "g_mats[0]"
-                              Name 121  "g_mats[1]"
-                              Name 122  "g_mats[2]"
-                              Name 123  "g_mats[3]"
-                              Name 124  "g_mats_explicit[0]"
-                              Name 125  "g_mats_explicit[1]"
-                              Name 126  "g_mats_explicit[2]"
-                              Name 127  "g_mats_explicit[3]"
+                              Name 83  "$Global"
+                              MemberName 83($Global) 0  "g_mats"
+                              MemberName 83($Global) 1  "g_mats_explicit"
+                              MemberName 83($Global) 2  "g_floats"
+                              Name 85  ""
+                              Name 99  "color"
+                              Name 101  "aggShadow"
+                              Name 108  "aggShadow"
+                              Name 117  "g_tex_explicit[0]"
+                              Name 118  "g_tex_explicit[1]"
+                              Name 119  "g_tex_explicit[2]"
+                              Name 120  "g_samp_explicit[0]"
+                              Name 121  "g_samp_explicit[1]"
+                              Name 122  "g_samp_explicit[2]"
                               Decorate 36(g_tex[1]) DescriptorSet 0
                               Decorate 39(g_samp[1]) DescriptorSet 0
                               Decorate 57(g_samp[0]) DescriptorSet 0
                               Decorate 62(g_samp[2]) DescriptorSet 0
                               Decorate 66(g_tex[0]) DescriptorSet 0
                               Decorate 71(g_tex[2]) DescriptorSet 0
-                              Decorate 93(color) Location 0
-                              Decorate 111(g_tex_explicit[0]) DescriptorSet 0
-                              Decorate 111(g_tex_explicit[0]) Binding 1
-                              Decorate 112(g_tex_explicit[1]) DescriptorSet 0
-                              Decorate 112(g_tex_explicit[1]) Binding 2
-                              Decorate 113(g_tex_explicit[2]) DescriptorSet 0
-                              Decorate 113(g_tex_explicit[2]) Binding 3
-                              Decorate 114(g_samp_explicit[0]) DescriptorSet 0
-                              Decorate 114(g_samp_explicit[0]) Binding 5
-                              Decorate 115(g_samp_explicit[1]) DescriptorSet 0
-                              Decorate 115(g_samp_explicit[1]) Binding 6
-                              Decorate 116(g_samp_explicit[2]) DescriptorSet 0
-                              Decorate 116(g_samp_explicit[2]) Binding 7
-                              Decorate 124(g_mats_explicit[0]) Binding 10
-                              Decorate 125(g_mats_explicit[1]) Binding 11
-                              Decorate 126(g_mats_explicit[2]) Binding 12
-                              Decorate 127(g_mats_explicit[3]) Binding 13
+                              Decorate 80 ArrayStride 48
+                              Decorate 81 ArrayStride 48
+                              Decorate 82 ArrayStride 16
+                              MemberDecorate 83($Global) 0 RowMajor
+                              MemberDecorate 83($Global) 0 Offset 0
+                              MemberDecorate 83($Global) 0 MatrixStride 16
+                              MemberDecorate 83($Global) 1 RowMajor
+                              MemberDecorate 83($Global) 1 Offset 192
+                              MemberDecorate 83($Global) 1 MatrixStride 16
+                              MemberDecorate 83($Global) 2 Offset 384
+                              Decorate 83($Global) Block
+                              Decorate 85 DescriptorSet 0
+                              Decorate 99(color) Location 0
+                              Decorate 117(g_tex_explicit[0]) DescriptorSet 0
+                              Decorate 117(g_tex_explicit[0]) Binding 1
+                              Decorate 118(g_tex_explicit[1]) DescriptorSet 0
+                              Decorate 118(g_tex_explicit[1]) Binding 2
+                              Decorate 119(g_tex_explicit[2]) DescriptorSet 0
+                              Decorate 119(g_tex_explicit[2]) Binding 3
+                              Decorate 120(g_samp_explicit[0]) DescriptorSet 0
+                              Decorate 120(g_samp_explicit[0]) Binding 5
+                              Decorate 121(g_samp_explicit[1]) DescriptorSet 0
+                              Decorate 121(g_samp_explicit[1]) Binding 6
+                              Decorate 122(g_samp_explicit[2]) DescriptorSet 0
+                              Decorate 122(g_samp_explicit[2]) Binding 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -483,33 +424,26 @@ gl_FragCoord origin is upper left
               74:     12(int) Constant 4
               75:             TypeArray 6(float) 74
               76:             TypePointer Function 75
-              78:             TypePointer UniformConstant 6(float)
- 79(g_floats[0]):     78(ptr) Variable UniformConstant
-              81:             TypePointer Function 6(float)
- 83(g_floats[1]):     78(ptr) Variable UniformConstant
- 86(g_floats[2]):     78(ptr) Variable UniformConstant
- 89(g_floats[3]):     78(ptr) Variable UniformConstant
-              92:             TypePointer Output 7(fvec4)
-       93(color):     92(ptr) Variable Output
-   95(aggShadow):     15(ptr) Variable UniformConstant
-  102(aggShadow):     18(ptr) Variable UniformConstant
-111(g_tex_explicit[0]):     35(ptr) Variable UniformConstant
-112(g_tex_explicit[1]):     35(ptr) Variable UniformConstant
-113(g_tex_explicit[2]):     35(ptr) Variable UniformConstant
-114(g_samp_explicit[0]):     38(ptr) Variable UniformConstant
-115(g_samp_explicit[1]):     38(ptr) Variable UniformConstant
-116(g_samp_explicit[2]):     38(ptr) Variable UniformConstant
-             117:             TypeVector 6(float) 3
-             118:             TypeMatrix 117(fvec3) 3
-             119:             TypePointer UniformConstant 118
-  120(g_mats[0]):    119(ptr) Variable UniformConstant
-  121(g_mats[1]):    119(ptr) Variable UniformConstant
-  122(g_mats[2]):    119(ptr) Variable UniformConstant
-  123(g_mats[3]):    119(ptr) Variable UniformConstant
-124(g_mats_explicit[0]):    119(ptr) Variable UniformConstant
-125(g_mats_explicit[1]):    119(ptr) Variable UniformConstant
-126(g_mats_explicit[2]):    119(ptr) Variable UniformConstant
-127(g_mats_explicit[3]):    119(ptr) Variable UniformConstant
+              78:             TypeVector 6(float) 3
+              79:             TypeMatrix 78(fvec3) 3
+              80:             TypeArray 79 74
+              81:             TypeArray 79 74
+              82:             TypeArray 6(float) 74
+     83($Global):             TypeStruct 80 81 82
+              84:             TypePointer Uniform 83($Global)
+              85:     84(ptr) Variable Uniform
+              86:             TypePointer Uniform 82
+              90:             TypePointer Function 6(float)
+              98:             TypePointer Output 7(fvec4)
+       99(color):     98(ptr) Variable Output
+  101(aggShadow):     15(ptr) Variable UniformConstant
+  108(aggShadow):     18(ptr) Variable UniformConstant
+117(g_tex_explicit[0]):     35(ptr) Variable UniformConstant
+118(g_tex_explicit[1]):     35(ptr) Variable UniformConstant
+119(g_tex_explicit[2]):     35(ptr) Variable UniformConstant
+120(g_samp_explicit[0]):     38(ptr) Variable UniformConstant
+121(g_samp_explicit[1]):     38(ptr) Variable UniformConstant
+122(g_samp_explicit[2]):     38(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
 77(local_float_array):     76(ptr) Variable Function
@@ -532,40 +466,42 @@ gl_FragCoord origin is upper left
               72:          11 Load 71(g_tex[2])
               73:     35(ptr) AccessChain 65(local_texture_array) 30
                               Store 73 72
-              80:    6(float) Load 79(g_floats[0])
-              82:     81(ptr) AccessChain 77(local_float_array) 56
-                              Store 82 80
-              84:    6(float) Load 83(g_floats[1])
-              85:     81(ptr) AccessChain 77(local_float_array) 29
-                              Store 85 84
-              87:    6(float) Load 86(g_floats[2])
-              88:     81(ptr) AccessChain 77(local_float_array) 30
-                              Store 88 87
-              90:    6(float) Load 89(g_floats[3])
-              91:     81(ptr) AccessChain 77(local_float_array) 31
-                              Store 91 90
-              94:    7(fvec4) FunctionCall 9(TestFn1()
-              96:          11 Load 66(g_tex[0])
-              97:     35(ptr) AccessChain 95(aggShadow) 56
+              87:     86(ptr) AccessChain 85 30
+              88:          82 Load 87
+              89:    6(float) CompositeExtract 88 0
+              91:     90(ptr) AccessChain 77(local_float_array) 56
+                              Store 91 89
+              92:    6(float) CompositeExtract 88 1
+              93:     90(ptr) AccessChain 77(local_float_array) 29
+                              Store 93 92
+              94:    6(float) CompositeExtract 88 2
+              95:     90(ptr) AccessChain 77(local_float_array) 30
+                              Store 95 94
+              96:    6(float) CompositeExtract 88 3
+              97:     90(ptr) AccessChain 77(local_float_array) 31
                               Store 97 96
-              98:          11 Load 36(g_tex[1])
-              99:     35(ptr) AccessChain 95(aggShadow) 29
-                              Store 99 98
-             100:          11 Load 71(g_tex[2])
-             101:     35(ptr) AccessChain 95(aggShadow) 30
-                              Store 101 100
-             103:          16 Load 57(g_samp[0])
-             104:     38(ptr) AccessChain 102(aggShadow) 56
-                              Store 104 103
-             105:          16 Load 39(g_samp[1])
-             106:     38(ptr) AccessChain 102(aggShadow) 29
-                              Store 106 105
-             107:          16 Load 62(g_samp[2])
-             108:     38(ptr) AccessChain 102(aggShadow) 30
-                              Store 108 107
-             109:    7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 95(aggShadow) 102(aggShadow)
-             110:    7(fvec4) FAdd 94 109
-                              Store 93(color) 110
+             100:    7(fvec4) FunctionCall 9(TestFn1()
+             102:          11 Load 66(g_tex[0])
+             103:     35(ptr) AccessChain 101(aggShadow) 56
+                              Store 103 102
+             104:          11 Load 36(g_tex[1])
+             105:     35(ptr) AccessChain 101(aggShadow) 29
+                              Store 105 104
+             106:          11 Load 71(g_tex[2])
+             107:     35(ptr) AccessChain 101(aggShadow) 30
+                              Store 107 106
+             109:          16 Load 57(g_samp[0])
+             110:     38(ptr) AccessChain 108(aggShadow) 56
+                              Store 110 109
+             111:          16 Load 39(g_samp[1])
+             112:     38(ptr) AccessChain 108(aggShadow) 29
+                              Store 112 111
+             113:          16 Load 62(g_samp[2])
+             114:     38(ptr) AccessChain 108(aggShadow) 30
+                              Store 114 113
+             115:    7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 101(aggShadow) 108(aggShadow)
+             116:    7(fvec4) FAdd 100 115
+                              Store 99(color) 116
                               Return
                               FunctionEnd
      9(TestFn1():    7(fvec4) Function None 8
diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out
index 359f62f82..00aedb3d8 100755
--- a/Test/baseResults/hlsl.array.frag.out
+++ b/Test/baseResults/hlsl.array.frag.out
@@ -2,7 +2,7 @@ hlsl.array.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:8  Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float)
+0:8  Function Definition: PixelShaderFunction(i1;vf4[3]; (temp 4-component vector of float)
 0:8    Function Parameters: 
 0:8      'i' (layout(location=0 ) in int)
 0:8      'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
@@ -16,12 +16,18 @@ gl_FragCoord origin is upper left
 0:10                add (temp 4-component vector of float)
 0:10                  add (temp 4-component vector of float)
 0:10                    add (temp 4-component vector of float)
-0:10                      direct index (temp 4-component vector of float)
-0:10                        'a' (global 4-element array of 4-component vector of float)
+0:10                      direct index (layout(offset=0 ) temp 4-component vector of float)
+0:10                        a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float)
+0:10                          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
+0:10                          Constant:
+0:10                            0 (const uint)
 0:10                        Constant:
 0:10                          1 (const int)
-0:10                      indirect index (temp 4-component vector of float)
-0:10                        'a' (global 4-element array of 4-component vector of float)
+0:10                      indirect index (layout(offset=0 ) temp 4-component vector of float)
+0:10                        a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float)
+0:10                          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
+0:10                          Constant:
+0:10                            0 (const uint)
 0:10                        'i' (layout(location=0 ) in int)
 0:10                    direct index (layout(location=1 ) temp 4-component vector of float)
 0:10                      'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
@@ -39,17 +45,19 @@ gl_FragCoord origin is upper left
 0:10                'i' (layout(location=0 ) in int)
 0:10            indirect index (temp 4-component vector of float)
 0:10              m: direct index for structure (temp 7-element array of 4-component vector of float)
-0:10                indirect index (temp structure{temp 7-element array of 4-component vector of float m})
-0:10                  's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
+0:10                indirect index (layout(offset=64 ) temp structure{temp 7-element array of 4-component vector of float m})
+0:10                  s: direct index for structure (layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m})
+0:10                    'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
+0:10                    Constant:
+0:10                      1 (const uint)
 0:10                  'i' (layout(location=0 ) in int)
 0:10                Constant:
 0:10                  0 (const int)
 0:10              'i' (layout(location=0 ) in int)
 0:10        Branch: Return
 0:?   Linker Objects
-0:?     'a' (global 4-element array of 4-component vector of float)
-0:?     's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
 0:?     'i' (layout(location=0 ) in int)
 0:?     'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
 
@@ -60,7 +68,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:8  Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float)
+0:8  Function Definition: PixelShaderFunction(i1;vf4[3]; (temp 4-component vector of float)
 0:8    Function Parameters: 
 0:8      'i' (layout(location=0 ) in int)
 0:8      'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
@@ -74,12 +82,18 @@ gl_FragCoord origin is upper left
 0:10                add (temp 4-component vector of float)
 0:10                  add (temp 4-component vector of float)
 0:10                    add (temp 4-component vector of float)
-0:10                      direct index (temp 4-component vector of float)
-0:10                        'a' (global 4-element array of 4-component vector of float)
+0:10                      direct index (layout(offset=0 ) temp 4-component vector of float)
+0:10                        a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float)
+0:10                          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
+0:10                          Constant:
+0:10                            0 (const uint)
 0:10                        Constant:
 0:10                          1 (const int)
-0:10                      indirect index (temp 4-component vector of float)
-0:10                        'a' (global 4-element array of 4-component vector of float)
+0:10                      indirect index (layout(offset=0 ) temp 4-component vector of float)
+0:10                        a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float)
+0:10                          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
+0:10                          Constant:
+0:10                            0 (const uint)
 0:10                        'i' (layout(location=0 ) in int)
 0:10                    direct index (layout(location=1 ) temp 4-component vector of float)
 0:10                      'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
@@ -97,41 +111,53 @@ gl_FragCoord origin is upper left
 0:10                'i' (layout(location=0 ) in int)
 0:10            indirect index (temp 4-component vector of float)
 0:10              m: direct index for structure (temp 7-element array of 4-component vector of float)
-0:10                indirect index (temp structure{temp 7-element array of 4-component vector of float m})
-0:10                  's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
+0:10                indirect index (layout(offset=64 ) temp structure{temp 7-element array of 4-component vector of float m})
+0:10                  s: direct index for structure (layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m})
+0:10                    'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
+0:10                    Constant:
+0:10                      1 (const uint)
 0:10                  'i' (layout(location=0 ) in int)
 0:10                Constant:
 0:10                  0 (const int)
 0:10              'i' (layout(location=0 ) in int)
 0:10        Branch: Return
 0:?   Linker Objects
-0:?     'a' (global 4-element array of 4-component vector of float)
-0:?     's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
 0:?     'i' (layout(location=0 ) in int)
 0:?     'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 66
+// Id's are bound by 65
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 9 21 29
+                              EntryPoint Fragment 4  "PixelShaderFunction" 9 28 36
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "PixelShaderFunction"
                               Name 9  "@entryPointOutput"
-                              Name 14  "a"
-                              Name 21  "i"
-                              Name 29  "input"
-                              Name 42  "b"
-                              Name 54  ""
-                              MemberName 54 0  "m"
-                              Name 58  "s"
+                              Name 15  ""
+                              MemberName 15 0  "m"
+                              Name 18  "$Global"
+                              MemberName 18($Global) 0  "a"
+                              MemberName 18($Global) 1  "s"
+                              Name 20  ""
+                              Name 28  "i"
+                              Name 36  "input"
+                              Name 49  "b"
                               Decorate 9(@entryPointOutput) Location 0
-                              Decorate 21(i) Location 0
-                              Decorate 29(input) Location 1
+                              Decorate 12 ArrayStride 16
+                              Decorate 14 ArrayStride 16
+                              MemberDecorate 15 0 Offset 0
+                              Decorate 17 ArrayStride 112
+                              MemberDecorate 18($Global) 0 Offset 0
+                              MemberDecorate 18($Global) 1 Offset 64
+                              Decorate 18($Global) Block
+                              Decorate 20 DescriptorSet 0
+                              Decorate 28(i) Location 0
+                              Decorate 36(input) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -141,60 +167,59 @@ gl_FragCoord origin is upper left
               10:             TypeInt 32 0
               11:     10(int) Constant 4
               12:             TypeArray 7(fvec4) 11
-              13:             TypePointer Private 12
-           14(a):     13(ptr) Variable Private
-              15:             TypeInt 32 1
-              16:     15(int) Constant 1
-              17:             TypePointer Private 7(fvec4)
-              20:             TypePointer Input 15(int)
-           21(i):     20(ptr) Variable Input
-              26:     10(int) Constant 3
-              27:             TypeArray 7(fvec4) 26
-              28:             TypePointer Input 27
-       29(input):     28(ptr) Variable Input
-              30:     15(int) Constant 2
-              31:             TypePointer Input 7(fvec4)
-              39:     10(int) Constant 10
-              40:             TypeArray 7(fvec4) 39
-              41:             TypePointer Function 40
-              43:     15(int) Constant 5
-              44:             TypePointer Function 7(fvec4)
-              52:     10(int) Constant 7
-              53:             TypeArray 7(fvec4) 52
-              54:             TypeStruct 53
-              55:     10(int) Constant 11
-              56:             TypeArray 54(struct) 55
-              57:             TypePointer Private 56
-           58(s):     57(ptr) Variable Private
-              60:     15(int) Constant 0
+              13:     10(int) Constant 7
+              14:             TypeArray 7(fvec4) 13
+              15:             TypeStruct 14
+              16:     10(int) Constant 11
+              17:             TypeArray 15(struct) 16
+     18($Global):             TypeStruct 12 17
+              19:             TypePointer Uniform 18($Global)
+              20:     19(ptr) Variable Uniform
+              21:             TypeInt 32 1
+              22:     21(int) Constant 0
+              23:     21(int) Constant 1
+              24:             TypePointer Uniform 7(fvec4)
+              27:             TypePointer Input 21(int)
+           28(i):     27(ptr) Variable Input
+              33:     10(int) Constant 3
+              34:             TypeArray 7(fvec4) 33
+              35:             TypePointer Input 34
+       36(input):     35(ptr) Variable Input
+              37:     21(int) Constant 2
+              38:             TypePointer Input 7(fvec4)
+              46:     10(int) Constant 10
+              47:             TypeArray 7(fvec4) 46
+              48:             TypePointer Function 47
+              50:     21(int) Constant 5
+              51:             TypePointer Function 7(fvec4)
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-           42(b):     41(ptr) Variable Function
-              18:     17(ptr) AccessChain 14(a) 16
-              19:    7(fvec4) Load 18
-              22:     15(int) Load 21(i)
-              23:     17(ptr) AccessChain 14(a) 22
-              24:    7(fvec4) Load 23
-              25:    7(fvec4) FAdd 19 24
-              32:     31(ptr) AccessChain 29(input) 30
-              33:    7(fvec4) Load 32
-              34:    7(fvec4) FAdd 25 33
-              35:     15(int) Load 21(i)
-              36:     31(ptr) AccessChain 29(input) 35
-              37:    7(fvec4) Load 36
-              38:    7(fvec4) FAdd 34 37
-              45:     44(ptr) AccessChain 42(b) 43
-              46:    7(fvec4) Load 45
-              47:    7(fvec4) FAdd 38 46
-              48:     15(int) Load 21(i)
-              49:     44(ptr) AccessChain 42(b) 48
-              50:    7(fvec4) Load 49
-              51:    7(fvec4) FAdd 47 50
-              59:     15(int) Load 21(i)
-              61:     15(int) Load 21(i)
-              62:     17(ptr) AccessChain 58(s) 59 60 61
-              63:    7(fvec4) Load 62
-              64:    7(fvec4) FAdd 51 63
-                              Store 9(@entryPointOutput) 64
+           49(b):     48(ptr) Variable Function
+              25:     24(ptr) AccessChain 20 22 23
+              26:    7(fvec4) Load 25
+              29:     21(int) Load 28(i)
+              30:     24(ptr) AccessChain 20 22 29
+              31:    7(fvec4) Load 30
+              32:    7(fvec4) FAdd 26 31
+              39:     38(ptr) AccessChain 36(input) 37
+              40:    7(fvec4) Load 39
+              41:    7(fvec4) FAdd 32 40
+              42:     21(int) Load 28(i)
+              43:     38(ptr) AccessChain 36(input) 42
+              44:    7(fvec4) Load 43
+              45:    7(fvec4) FAdd 41 44
+              52:     51(ptr) AccessChain 49(b) 50
+              53:    7(fvec4) Load 52
+              54:    7(fvec4) FAdd 45 53
+              55:     21(int) Load 28(i)
+              56:     51(ptr) AccessChain 49(b) 55
+              57:    7(fvec4) Load 56
+              58:    7(fvec4) FAdd 54 57
+              59:     21(int) Load 28(i)
+              60:     21(int) Load 28(i)
+              61:     24(ptr) AccessChain 20 23 59 22 60
+              62:    7(fvec4) Load 61
+              63:    7(fvec4) FAdd 58 62
+                              Store 9(@entryPointOutput) 63
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.assoc.frag.out b/Test/baseResults/hlsl.assoc.frag.out
index d54d46743..bcd160369 100755
--- a/Test/baseResults/hlsl.assoc.frag.out
+++ b/Test/baseResults/hlsl.assoc.frag.out
@@ -2,7 +2,7 @@ hlsl.assoc.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:8  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float)
+0:8  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
 0:8    Function Parameters: 
 0:8      'a1' (layout(location=0 ) in 4-component vector of float)
 0:8      'a2' (layout(location=1 ) in 4-component vector of float)
@@ -47,7 +47,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:8  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float)
+0:8  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (temp 4-component vector of float)
 0:8    Function Parameters: 
 0:8      'a1' (layout(location=0 ) in 4-component vector of float)
 0:8      'a2' (layout(location=1 ) in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.attribute.frag.out b/Test/baseResults/hlsl.attribute.frag.out
index 38421a88a..a3ce657da 100755
--- a/Test/baseResults/hlsl.attribute.frag.out
+++ b/Test/baseResults/hlsl.attribute.frag.out
@@ -2,7 +2,7 @@ hlsl.attribute.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global void)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp void)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -21,7 +21,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global void)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp void)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out
index 6d7b61051..97ea9a5bf 100755
--- a/Test/baseResults/hlsl.buffer.frag.out
+++ b/Test/baseResults/hlsl.buffer.frag.out
@@ -2,7 +2,7 @@ hlsl.buffer.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:30  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:30  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:30    Function Parameters: 
 0:30      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -46,7 +46,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:30  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:30  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:30    Function Parameters: 
 0:30      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index 68eee1a0b..30af59202 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.calculatelod.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:28      Sequence
@@ -176,7 +176,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:28      Sequence
diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
index 9370e14a8..92d84f923 100644
--- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
@@ -14,7 +14,7 @@ ERROR: 9 compilation errors.  No code generated.
 Shader version: 450
 gl_FragCoord origin is upper left
 ERROR: node is still EOpNull!
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:28      Sequence
@@ -188,7 +188,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 ERROR: node is still EOpNull!
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:28      Sequence
diff --git a/Test/baseResults/hlsl.cast.frag.out b/Test/baseResults/hlsl.cast.frag.out
index 3bef95f0d..bf7183f27 100755
--- a/Test/baseResults/hlsl.cast.frag.out
+++ b/Test/baseResults/hlsl.cast.frag.out
@@ -2,7 +2,7 @@ hlsl.cast.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -33,7 +33,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out
index f6c00fe6f..32edbda72 100755
--- a/Test/baseResults/hlsl.conditional.frag.out
+++ b/Test/baseResults/hlsl.conditional.frag.out
@@ -2,7 +2,7 @@ hlsl.conditional.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -119,7 +119,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out
index 956e1bb03..1595a08d8 100644
--- a/Test/baseResults/hlsl.constructexpr.frag.out
+++ b/Test/baseResults/hlsl.constructexpr.frag.out
@@ -2,7 +2,7 @@ hlsl.constructexpr.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:4  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:4  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:4    Function Parameters: 
 0:?     Sequence
 0:6      Constant:
@@ -53,7 +53,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:4  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:4  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:4    Function Parameters: 
 0:?     Sequence
 0:6      Constant:
diff --git a/Test/baseResults/hlsl.depthGreater.frag.out b/Test/baseResults/hlsl.depthGreater.frag.out
index 6a44a2f98..0b5324602 100755
--- a/Test/baseResults/hlsl.depthGreater.frag.out
+++ b/Test/baseResults/hlsl.depthGreater.frag.out
@@ -3,7 +3,7 @@ Shader version: 450
 gl_FragCoord origin is upper left
 using depth_greater
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(f1; (global void)
+0:2  Function Definition: PixelShaderFunction(f1; (temp void)
 0:2    Function Parameters: 
 0:2      'depth' (out float FragDepth)
 0:?     Sequence
@@ -22,7 +22,7 @@ Shader version: 450
 gl_FragCoord origin is upper left
 using depth_greater
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(f1; (global void)
+0:2  Function Definition: PixelShaderFunction(f1; (temp void)
 0:2    Function Parameters: 
 0:2      'depth' (out float FragDepth)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.depthLess.frag.out b/Test/baseResults/hlsl.depthLess.frag.out
index b1307ce24..ec664e106 100755
--- a/Test/baseResults/hlsl.depthLess.frag.out
+++ b/Test/baseResults/hlsl.depthLess.frag.out
@@ -3,7 +3,7 @@ Shader version: 450
 gl_FragCoord origin is upper left
 using depth_less
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction( (global float FragDepth)
+0:2  Function Definition: PixelShaderFunction( (temp float FragDepth)
 0:2    Function Parameters: 
 0:?     Sequence
 0:3      Sequence
@@ -23,7 +23,7 @@ Shader version: 450
 gl_FragCoord origin is upper left
 using depth_less
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction( (global float FragDepth)
+0:2  Function Definition: PixelShaderFunction( (temp float FragDepth)
 0:2    Function Parameters: 
 0:?     Sequence
 0:3      Sequence
diff --git a/Test/baseResults/hlsl.discard.frag.out b/Test/baseResults/hlsl.discard.frag.out
index 9601c7d13..9b4f2c72e 100755
--- a/Test/baseResults/hlsl.discard.frag.out
+++ b/Test/baseResults/hlsl.discard.frag.out
@@ -2,7 +2,7 @@ hlsl.discard.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: foo(f1; (global void)
+0:2  Function Definition: foo(f1; (temp void)
 0:2    Function Parameters: 
 0:2      'f' (in float)
 0:?     Sequence
@@ -14,11 +14,11 @@ gl_FragCoord origin is upper left
 0:3            1.000000
 0:3        true case
 0:4        Branch: Kill
-0:8  Function Definition: PixelShaderFunction(vf4; (global void)
+0:8  Function Definition: PixelShaderFunction(vf4; (temp void)
 0:8    Function Parameters: 
 0:8      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
-0:9      Function Call: foo(f1; (global void)
+0:9      Function Call: foo(f1; (temp void)
 0:9        direct index (temp float)
 0:9          'input' (layout(location=0 ) in 4-component vector of float)
 0:9          Constant:
@@ -49,7 +49,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: foo(f1; (global void)
+0:2  Function Definition: foo(f1; (temp void)
 0:2    Function Parameters: 
 0:2      'f' (in float)
 0:?     Sequence
@@ -61,11 +61,11 @@ gl_FragCoord origin is upper left
 0:3            1.000000
 0:3        true case
 0:4        Branch: Kill
-0:8  Function Definition: PixelShaderFunction(vf4; (global void)
+0:8  Function Definition: PixelShaderFunction(vf4; (temp void)
 0:8    Function Parameters: 
 0:8      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
-0:9      Function Call: foo(f1; (global void)
+0:9      Function Call: foo(f1; (temp void)
 0:9        direct index (temp float)
 0:9          'input' (layout(location=0 ) in 4-component vector of float)
 0:9          Constant:
diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out
index 019f43d71..2d5a8fbf0 100755
--- a/Test/baseResults/hlsl.doLoop.frag.out
+++ b/Test/baseResults/hlsl.doLoop.frag.out
@@ -2,7 +2,7 @@ hlsl.doLoop.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -38,7 +38,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out
index 8572fa1c5..b2ab8cbe9 100755
--- a/Test/baseResults/hlsl.entry-in.frag.out
+++ b/Test/baseResults/hlsl.entry-in.frag.out
@@ -2,7 +2,7 @@ hlsl.entry-in.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:8  Function Definition: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:8  Function Definition: fun(struct-InParam-vf2-vf4-vi21; (temp float)
 0:8    Function Parameters: 
 0:8      'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
 0:?     Sequence
@@ -22,7 +22,7 @@ gl_FragCoord origin is upper left
 0:9                1 (const int)
 0:9            Constant:
 0:9              0 (const int)
-0:13  Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (global 4-component vector of float)
+0:13  Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (temp 4-component vector of float)
 0:13    Function Parameters: 
 0:13      'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
 0:?     Sequence
@@ -48,12 +48,12 @@ gl_FragCoord origin is upper left
 0:16      Sequence
 0:16        move second child to first child (temp float)
 0:16          'ret1' (temp float)
-0:16          Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:16          Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float)
 0:16            'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
 0:17      Sequence
 0:17        move second child to first child (temp float)
 0:17          'ret2' (temp float)
-0:17          Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:17          Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float)
 0:?             Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
 0:?               Sequence
 0:?                 move second child to first child (temp 2-component vector of float)
@@ -100,7 +100,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:8  Function Definition: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:8  Function Definition: fun(struct-InParam-vf2-vf4-vi21; (temp float)
 0:8    Function Parameters: 
 0:8      'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
 0:?     Sequence
@@ -120,7 +120,7 @@ gl_FragCoord origin is upper left
 0:9                1 (const int)
 0:9            Constant:
 0:9              0 (const int)
-0:13  Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (global 4-component vector of float)
+0:13  Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (temp 4-component vector of float)
 0:13    Function Parameters: 
 0:13      'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
 0:?     Sequence
@@ -146,12 +146,12 @@ gl_FragCoord origin is upper left
 0:16      Sequence
 0:16        move second child to first child (temp float)
 0:16          'ret1' (temp float)
-0:16          Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:16          Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float)
 0:16            'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
 0:17      Sequence
 0:17        move second child to first child (temp float)
 0:17          'ret2' (temp float)
-0:17          Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:17          Function Call: fun(struct-InParam-vf2-vf4-vi21; (temp float)
 0:?             Comma (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
 0:?               Sequence
 0:?                 move second child to first child (temp 2-component vector of float)
diff --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out
index 81926dd1c..d15741f72 100755
--- a/Test/baseResults/hlsl.entry-out.frag.out
+++ b/Test/baseResults/hlsl.entry-out.frag.out
@@ -2,7 +2,7 @@ hlsl.entry-out.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:7  Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (global 4-component vector of float)
+0:7  Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float)
 0:7    Function Parameters: 
 0:7      'input' (layout(location=0 ) in 4-component vector of float)
 0:7      'out1' (layout(location=1 ) out 4-component vector of float)
@@ -72,7 +72,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:7  Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (global 4-component vector of float)
+0:7  Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float)
 0:7    Function Parameters: 
 0:7      'input' (layout(location=0 ) in 4-component vector of float)
 0:7      'out1' (layout(location=1 ) out 4-component vector of float)
diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out
index 313be0b54..83a243fcd 100755
--- a/Test/baseResults/hlsl.float1.frag.out
+++ b/Test/baseResults/hlsl.float1.frag.out
@@ -12,7 +12,7 @@ gl_FragCoord origin is upper left
 0:2      'scalar' (global float)
 0:2      Constant:
 0:2        2.000000
-0:5  Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
+0:5  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
 0:5    Function Parameters: 
 0:5      'inFloat1' (in 1-component vector of float)
 0:5      'inScalar' (in float)
@@ -46,7 +46,7 @@ gl_FragCoord origin is upper left
 0:2      'scalar' (global float)
 0:2      Constant:
 0:2        2.000000
-0:5  Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
+0:5  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
 0:5    Function Parameters: 
 0:5      'inFloat1' (in 1-component vector of float)
 0:5      'inScalar' (in float)
diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out
index 85b3c9b4a..6caac2478 100755
--- a/Test/baseResults/hlsl.float4.frag.out
+++ b/Test/baseResults/hlsl.float4.frag.out
@@ -5,28 +5,19 @@ WARNING: 0:6: 'register' : ignoring shader_profile
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:1  Sequence
-0:1    move second child to first child (temp 4-component vector of float)
-0:1      'AmbientColor' (global 4-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         0.500000
-0:?         0.000000
-0:?         1.000000
-0:9  Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:9  Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
 0:9    Function Parameters: 
 0:9      'input' (in 4-component vector of float)
 0:?     Sequence
 0:10      Branch: Return with expression
 0:10        component-wise multiply (temp 4-component vector of float)
 0:10          'input' (in 4-component vector of float)
-0:10          'AmbientColor' (global 4-component vector of float)
+0:10          AmbientColor: direct index for structure (layout(offset=0 ) uniform 4-component vector of float)
+0:10            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face ff1, layout(offset=20 ) uniform float ff2, layout(binding=0 offset=32 ) uniform 4-component vector of float ff3, layout(binding=1 offset=48 ) uniform 4-component vector of float ff4})
+0:10            Constant:
+0:10              0 (const uint)
 0:?   Linker Objects
-0:?     'AmbientColor' (global 4-component vector of float)
-0:?     'ff1' (global bool Face)
-0:?     'ff2' (layout(offset=4 ) global 4-component vector of float)
-0:?     'ff3' (layout(binding=0 offset=4 ) global 4-component vector of float)
-0:?     'ff4' (layout(binding=1 offset=4 ) global 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face ff1, layout(offset=20 ) uniform float ff2, layout(binding=0 offset=32 ) uniform 4-component vector of float ff3, layout(binding=1 offset=48 ) uniform 4-component vector of float ff4})
 
 
 Linked fragment stage:
@@ -35,32 +26,23 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:1  Sequence
-0:1    move second child to first child (temp 4-component vector of float)
-0:1      'AmbientColor' (global 4-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         0.500000
-0:?         0.000000
-0:?         1.000000
-0:9  Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:9  Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
 0:9    Function Parameters: 
 0:9      'input' (in 4-component vector of float)
 0:?     Sequence
 0:10      Branch: Return with expression
 0:10        component-wise multiply (temp 4-component vector of float)
 0:10          'input' (in 4-component vector of float)
-0:10          'AmbientColor' (global 4-component vector of float)
+0:10          AmbientColor: direct index for structure (layout(offset=0 ) uniform 4-component vector of float)
+0:10            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face ff1, layout(offset=20 ) uniform float ff2, layout(binding=0 offset=32 ) uniform 4-component vector of float ff3, layout(binding=1 offset=48 ) uniform 4-component vector of float ff4})
+0:10            Constant:
+0:10              0 (const uint)
 0:?   Linker Objects
-0:?     'AmbientColor' (global 4-component vector of float)
-0:?     'ff1' (global bool Face)
-0:?     'ff2' (layout(offset=4 ) global 4-component vector of float)
-0:?     'ff3' (layout(binding=0 offset=4 ) global 4-component vector of float)
-0:?     'ff4' (layout(binding=1 offset=4 ) global 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face ff1, layout(offset=20 ) uniform float ff2, layout(binding=0 offset=32 ) uniform 4-component vector of float ff3, layout(binding=1 offset=48 ) uniform 4-component vector of float ff4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 30
+// Id's are bound by 26
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -70,44 +52,43 @@ gl_FragCoord origin is upper left
                               Name 4  "PixelShaderFunction"
                               Name 11  "ShaderFunction(vf4;"
                               Name 10  "input"
-                              Name 14  "AmbientColor"
-                              Name 26  "ff1"
-                              Name 27  "ff2"
-                              Name 28  "ff3"
-                              Name 29  "ff4"
-                              Decorate 26(ff1) BuiltIn FrontFacing
-                              Decorate 27(ff2) Offset 4
-                              Decorate 28(ff3) Offset 4
-                              Decorate 28(ff3) Binding 0
-                              Decorate 29(ff4) Offset 4
-                              Decorate 29(ff4) Binding 1
+                              Name 15  "$Global"
+                              MemberName 15($Global) 0  "AmbientColor"
+                              MemberName 15($Global) 1  "ff1"
+                              MemberName 15($Global) 2  "ff2"
+                              MemberName 15($Global) 3  "ff3"
+                              MemberName 15($Global) 4  "ff4"
+                              Name 17  ""
+                              MemberDecorate 15($Global) 0 Offset 0
+                              MemberDecorate 15($Global) 1 Offset 16
+                              MemberDecorate 15($Global) 1 BuiltIn FrontFacing
+                              MemberDecorate 15($Global) 2 Offset 20
+                              MemberDecorate 15($Global) 3 Offset 32
+                              MemberDecorate 15($Global) 4 Offset 48
+                              Decorate 15($Global) Block
+                              Decorate 17 DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeVector 6(float) 4
                8:             TypePointer Function 7(fvec4)
                9:             TypeFunction 7(fvec4) 8(ptr)
-              13:             TypePointer Private 7(fvec4)
-14(AmbientColor):     13(ptr) Variable Private
-              15:    6(float) Constant 1065353216
-              16:    6(float) Constant 1056964608
-              17:    6(float) Constant 0
-              18:    7(fvec4) ConstantComposite 15 16 17 15
-              24:             TypeBool
-              25:             TypePointer Private 24(bool)
-         26(ff1):     25(ptr) Variable Private
-         27(ff2):     13(ptr) Variable Private
-         28(ff3):     13(ptr) Variable Private
-         29(ff4):     13(ptr) Variable Private
+              14:             TypeInt 32 0
+     15($Global):             TypeStruct 7(fvec4) 14(int) 6(float) 7(fvec4) 7(fvec4)
+              16:             TypePointer Uniform 15($Global)
+              17:     16(ptr) Variable Uniform
+              18:             TypeInt 32 1
+              19:     18(int) Constant 0
+              20:             TypePointer Uniform 7(fvec4)
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-                              Store 14(AmbientColor) 18
                               FunctionEnd
 11(ShaderFunction(vf4;):    7(fvec4) Function None 9
        10(input):      8(ptr) FunctionParameter
               12:             Label
-              19:    7(fvec4) Load 10(input)
-              20:    7(fvec4) Load 14(AmbientColor)
-              21:    7(fvec4) FMul 19 20
-                              ReturnValue 21
+              13:    7(fvec4) Load 10(input)
+              21:     20(ptr) AccessChain 17 19
+              22:    7(fvec4) Load 21
+              23:    7(fvec4) FMul 13 22
+                              ReturnValue 23
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out
index ba8e32e7d..cc4757845 100755
--- a/Test/baseResults/hlsl.forLoop.frag.out
+++ b/Test/baseResults/hlsl.forLoop.frag.out
@@ -2,7 +2,7 @@ hlsl.forLoop.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -124,7 +124,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out
index d2545cca3..a686c11b5 100644
--- a/Test/baseResults/hlsl.gather.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.gather.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:29      Sequence
@@ -128,7 +128,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:29      Sequence
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
index 52648f703..e28ad34a3 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.gather.basic.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:29  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:29  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:29    Function Parameters: 
 0:?     Sequence
 0:34      Sequence
@@ -126,7 +126,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:29  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:29  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:29    Function Parameters: 
 0:?     Sequence
 0:34      Sequence
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
index 1f01fc3e6..92672356b 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
@@ -1,7 +1,7 @@
 hlsl.gather.basic.dx10.vert
 Shader version: 450
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:28    Function Parameters: 
 0:?     Sequence
 0:33      Sequence
@@ -110,7 +110,7 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:28    Function Parameters: 
 0:?     Sequence
 0:33      Sequence
diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
index ac317915a..86a201cc4 100644
--- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.gather.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:33      Sequence
@@ -101,7 +101,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:33      Sequence
diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
index bf8f38227..2bda352c5 100644
--- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.gather.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:20  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:20    Function Parameters: 
 0:?     Sequence
 0:25      Sequence
@@ -98,7 +98,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:20  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:20    Function Parameters: 
 0:?     Sequence
 0:25      Sequence
diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
index 026fd1b74..c9f6bbd7c 100644
--- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.gatherRGBA.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:33      Sequence
@@ -12,7 +12,10 @@ gl_FragCoord origin is upper left
 0:33            Construct combined texture-sampler (temp sampler2DArray)
 0:33              'g_tTex2df4a' (uniform texture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:33            'c3' (uniform 3-component vector of float)
+0:33            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:33              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:33              Constant:
+0:33                2 (const uint)
 0:33            Constant:
 0:33              0 (const int)
 0:34      Sequence
@@ -22,7 +25,10 @@ gl_FragCoord origin is upper left
 0:34            Construct combined texture-sampler (temp isampler2DArray)
 0:34              'g_tTex2di4a' (uniform itexture2DArray)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:34            'c3' (uniform 3-component vector of float)
+0:34            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:34              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:34              Constant:
+0:34                2 (const uint)
 0:34            Constant:
 0:34              0 (const int)
 0:35      Sequence
@@ -32,7 +38,10 @@ gl_FragCoord origin is upper left
 0:35            Construct combined texture-sampler (temp usampler2DArray)
 0:35              'g_tTex2du4a' (uniform utexture2DArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:35            'c3' (uniform 3-component vector of float)
+0:35            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:35              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:35              Constant:
+0:35                2 (const uint)
 0:35            Constant:
 0:35              0 (const int)
 0:37      Sequence
@@ -42,7 +51,10 @@ gl_FragCoord origin is upper left
 0:37            Construct combined texture-sampler (temp sampler2DArray)
 0:37              'g_tTex2df4a' (uniform texture2DArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:37            'c3' (uniform 3-component vector of float)
+0:37            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:37              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:37              Constant:
+0:37                2 (const uint)
 0:37            Constant:
 0:37              1 (const int)
 0:38      Sequence
@@ -52,7 +64,10 @@ gl_FragCoord origin is upper left
 0:38            Construct combined texture-sampler (temp isampler2DArray)
 0:38              'g_tTex2di4a' (uniform itexture2DArray)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:38            'c3' (uniform 3-component vector of float)
+0:38            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:38              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:38              Constant:
+0:38                2 (const uint)
 0:38            Constant:
 0:38              1 (const int)
 0:39      Sequence
@@ -62,7 +77,10 @@ gl_FragCoord origin is upper left
 0:39            Construct combined texture-sampler (temp usampler2DArray)
 0:39              'g_tTex2du4a' (uniform utexture2DArray)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:39            'c3' (uniform 3-component vector of float)
+0:39            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:39              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:39              Constant:
+0:39                2 (const uint)
 0:39            Constant:
 0:39              1 (const int)
 0:41      Sequence
@@ -72,7 +90,10 @@ gl_FragCoord origin is upper left
 0:41            Construct combined texture-sampler (temp sampler2DArray)
 0:41              'g_tTex2df4a' (uniform texture2DArray)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:41            'c3' (uniform 3-component vector of float)
+0:41            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:41              Constant:
+0:41                2 (const uint)
 0:41            Constant:
 0:41              2 (const int)
 0:42      Sequence
@@ -82,7 +103,10 @@ gl_FragCoord origin is upper left
 0:42            Construct combined texture-sampler (temp isampler2DArray)
 0:42              'g_tTex2di4a' (uniform itexture2DArray)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:42            'c3' (uniform 3-component vector of float)
+0:42            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:42              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:42              Constant:
+0:42                2 (const uint)
 0:42            Constant:
 0:42              2 (const int)
 0:43      Sequence
@@ -92,7 +116,10 @@ gl_FragCoord origin is upper left
 0:43            Construct combined texture-sampler (temp usampler2DArray)
 0:43              'g_tTex2du4a' (uniform utexture2DArray)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:43            'c3' (uniform 3-component vector of float)
+0:43            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:43              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:43              Constant:
+0:43                2 (const uint)
 0:43            Constant:
 0:43              2 (const int)
 0:45      Sequence
@@ -102,7 +129,10 @@ gl_FragCoord origin is upper left
 0:45            Construct combined texture-sampler (temp sampler2DArray)
 0:45              'g_tTex2df4a' (uniform texture2DArray)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:45            'c3' (uniform 3-component vector of float)
+0:45            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:45              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:45              Constant:
+0:45                2 (const uint)
 0:45            Constant:
 0:45              3 (const int)
 0:46      Sequence
@@ -112,7 +142,10 @@ gl_FragCoord origin is upper left
 0:46            Construct combined texture-sampler (temp isampler2DArray)
 0:46              'g_tTex2di4a' (uniform itexture2DArray)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:46            'c3' (uniform 3-component vector of float)
+0:46            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:46              Constant:
+0:46                2 (const uint)
 0:46            Constant:
 0:46              3 (const int)
 0:47      Sequence
@@ -122,7 +155,10 @@ gl_FragCoord origin is upper left
 0:47            Construct combined texture-sampler (temp usampler2DArray)
 0:47              'g_tTex2du4a' (uniform utexture2DArray)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:47            'c3' (uniform 3-component vector of float)
+0:47            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:47              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:47              Constant:
+0:47                2 (const uint)
 0:47            Constant:
 0:47              3 (const int)
 0:51      Sequence
@@ -132,7 +168,10 @@ gl_FragCoord origin is upper left
 0:51            Construct combined texture-sampler (temp samplerCubeArray)
 0:51              'g_tTexcdf4a' (uniform textureCubeArray)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:51            'c4' (uniform 4-component vector of float)
+0:51            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:51              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:51              Constant:
+0:51                3 (const uint)
 0:51            Constant:
 0:51              0 (const int)
 0:52      Sequence
@@ -142,7 +181,10 @@ gl_FragCoord origin is upper left
 0:52            Construct combined texture-sampler (temp isamplerCubeArray)
 0:52              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:52            'c4' (uniform 4-component vector of float)
+0:52            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:52              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:52              Constant:
+0:52                3 (const uint)
 0:52            Constant:
 0:52              0 (const int)
 0:53      Sequence
@@ -152,7 +194,10 @@ gl_FragCoord origin is upper left
 0:53            Construct combined texture-sampler (temp usamplerCubeArray)
 0:53              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:53              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:53            'c4' (uniform 4-component vector of float)
+0:53            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:53              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:53              Constant:
+0:53                3 (const uint)
 0:53            Constant:
 0:53              0 (const int)
 0:55      Sequence
@@ -162,7 +207,10 @@ gl_FragCoord origin is upper left
 0:55            Construct combined texture-sampler (temp samplerCubeArray)
 0:55              'g_tTexcdf4a' (uniform textureCubeArray)
 0:55              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:55            'c4' (uniform 4-component vector of float)
+0:55            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:55              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:55              Constant:
+0:55                3 (const uint)
 0:55            Constant:
 0:55              1 (const int)
 0:56      Sequence
@@ -172,7 +220,10 @@ gl_FragCoord origin is upper left
 0:56            Construct combined texture-sampler (temp isamplerCubeArray)
 0:56              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:56              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:56            'c4' (uniform 4-component vector of float)
+0:56            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:56              Constant:
+0:56                3 (const uint)
 0:56            Constant:
 0:56              1 (const int)
 0:57      Sequence
@@ -182,7 +233,10 @@ gl_FragCoord origin is upper left
 0:57            Construct combined texture-sampler (temp usamplerCubeArray)
 0:57              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:57            'c4' (uniform 4-component vector of float)
+0:57            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:57              Constant:
+0:57                3 (const uint)
 0:57            Constant:
 0:57              1 (const int)
 0:59      Sequence
@@ -192,7 +246,10 @@ gl_FragCoord origin is upper left
 0:59            Construct combined texture-sampler (temp samplerCubeArray)
 0:59              'g_tTexcdf4a' (uniform textureCubeArray)
 0:59              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:59            'c4' (uniform 4-component vector of float)
+0:59            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:59              Constant:
+0:59                3 (const uint)
 0:59            Constant:
 0:59              2 (const int)
 0:60      Sequence
@@ -202,7 +259,10 @@ gl_FragCoord origin is upper left
 0:60            Construct combined texture-sampler (temp isamplerCubeArray)
 0:60              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:60              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:60            'c4' (uniform 4-component vector of float)
+0:60            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:60              Constant:
+0:60                3 (const uint)
 0:60            Constant:
 0:60              2 (const int)
 0:61      Sequence
@@ -212,7 +272,10 @@ gl_FragCoord origin is upper left
 0:61            Construct combined texture-sampler (temp usamplerCubeArray)
 0:61              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:61            'c4' (uniform 4-component vector of float)
+0:61            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:61              Constant:
+0:61                3 (const uint)
 0:61            Constant:
 0:61              2 (const int)
 0:63      Sequence
@@ -222,7 +285,10 @@ gl_FragCoord origin is upper left
 0:63            Construct combined texture-sampler (temp samplerCubeArray)
 0:63              'g_tTexcdf4a' (uniform textureCubeArray)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:63            'c4' (uniform 4-component vector of float)
+0:63            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:63              Constant:
+0:63                3 (const uint)
 0:63            Constant:
 0:63              3 (const int)
 0:64      Sequence
@@ -232,7 +298,10 @@ gl_FragCoord origin is upper left
 0:64            Construct combined texture-sampler (temp isamplerCubeArray)
 0:64              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:64              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:64            'c4' (uniform 4-component vector of float)
+0:64            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:64              Constant:
+0:64                3 (const uint)
 0:64            Constant:
 0:64              3 (const int)
 0:65      Sequence
@@ -242,7 +311,10 @@ gl_FragCoord origin is upper left
 0:65            Construct combined texture-sampler (temp usamplerCubeArray)
 0:65              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:65              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:65            'c4' (uniform 4-component vector of float)
+0:65            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:65              Constant:
+0:65                3 (const uint)
 0:65            Constant:
 0:65              3 (const int)
 0:67      move second child to first child (temp 4-component vector of float)
@@ -289,12 +361,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform float)
-0:?     'c2' (uniform 2-component vector of float)
-0:?     'c3' (uniform 3-component vector of float)
-0:?     'c4' (uniform 4-component vector of float)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
 
 
 Linked fragment stage:
@@ -303,7 +372,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:33      Sequence
@@ -313,7 +382,10 @@ gl_FragCoord origin is upper left
 0:33            Construct combined texture-sampler (temp sampler2DArray)
 0:33              'g_tTex2df4a' (uniform texture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:33            'c3' (uniform 3-component vector of float)
+0:33            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:33              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:33              Constant:
+0:33                2 (const uint)
 0:33            Constant:
 0:33              0 (const int)
 0:34      Sequence
@@ -323,7 +395,10 @@ gl_FragCoord origin is upper left
 0:34            Construct combined texture-sampler (temp isampler2DArray)
 0:34              'g_tTex2di4a' (uniform itexture2DArray)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:34            'c3' (uniform 3-component vector of float)
+0:34            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:34              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:34              Constant:
+0:34                2 (const uint)
 0:34            Constant:
 0:34              0 (const int)
 0:35      Sequence
@@ -333,7 +408,10 @@ gl_FragCoord origin is upper left
 0:35            Construct combined texture-sampler (temp usampler2DArray)
 0:35              'g_tTex2du4a' (uniform utexture2DArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:35            'c3' (uniform 3-component vector of float)
+0:35            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:35              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:35              Constant:
+0:35                2 (const uint)
 0:35            Constant:
 0:35              0 (const int)
 0:37      Sequence
@@ -343,7 +421,10 @@ gl_FragCoord origin is upper left
 0:37            Construct combined texture-sampler (temp sampler2DArray)
 0:37              'g_tTex2df4a' (uniform texture2DArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:37            'c3' (uniform 3-component vector of float)
+0:37            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:37              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:37              Constant:
+0:37                2 (const uint)
 0:37            Constant:
 0:37              1 (const int)
 0:38      Sequence
@@ -353,7 +434,10 @@ gl_FragCoord origin is upper left
 0:38            Construct combined texture-sampler (temp isampler2DArray)
 0:38              'g_tTex2di4a' (uniform itexture2DArray)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:38            'c3' (uniform 3-component vector of float)
+0:38            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:38              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:38              Constant:
+0:38                2 (const uint)
 0:38            Constant:
 0:38              1 (const int)
 0:39      Sequence
@@ -363,7 +447,10 @@ gl_FragCoord origin is upper left
 0:39            Construct combined texture-sampler (temp usampler2DArray)
 0:39              'g_tTex2du4a' (uniform utexture2DArray)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:39            'c3' (uniform 3-component vector of float)
+0:39            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:39              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:39              Constant:
+0:39                2 (const uint)
 0:39            Constant:
 0:39              1 (const int)
 0:41      Sequence
@@ -373,7 +460,10 @@ gl_FragCoord origin is upper left
 0:41            Construct combined texture-sampler (temp sampler2DArray)
 0:41              'g_tTex2df4a' (uniform texture2DArray)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:41            'c3' (uniform 3-component vector of float)
+0:41            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:41              Constant:
+0:41                2 (const uint)
 0:41            Constant:
 0:41              2 (const int)
 0:42      Sequence
@@ -383,7 +473,10 @@ gl_FragCoord origin is upper left
 0:42            Construct combined texture-sampler (temp isampler2DArray)
 0:42              'g_tTex2di4a' (uniform itexture2DArray)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:42            'c3' (uniform 3-component vector of float)
+0:42            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:42              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:42              Constant:
+0:42                2 (const uint)
 0:42            Constant:
 0:42              2 (const int)
 0:43      Sequence
@@ -393,7 +486,10 @@ gl_FragCoord origin is upper left
 0:43            Construct combined texture-sampler (temp usampler2DArray)
 0:43              'g_tTex2du4a' (uniform utexture2DArray)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:43            'c3' (uniform 3-component vector of float)
+0:43            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:43              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:43              Constant:
+0:43                2 (const uint)
 0:43            Constant:
 0:43              2 (const int)
 0:45      Sequence
@@ -403,7 +499,10 @@ gl_FragCoord origin is upper left
 0:45            Construct combined texture-sampler (temp sampler2DArray)
 0:45              'g_tTex2df4a' (uniform texture2DArray)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:45            'c3' (uniform 3-component vector of float)
+0:45            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:45              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:45              Constant:
+0:45                2 (const uint)
 0:45            Constant:
 0:45              3 (const int)
 0:46      Sequence
@@ -413,7 +512,10 @@ gl_FragCoord origin is upper left
 0:46            Construct combined texture-sampler (temp isampler2DArray)
 0:46              'g_tTex2di4a' (uniform itexture2DArray)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:46            'c3' (uniform 3-component vector of float)
+0:46            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:46              Constant:
+0:46                2 (const uint)
 0:46            Constant:
 0:46              3 (const int)
 0:47      Sequence
@@ -423,7 +525,10 @@ gl_FragCoord origin is upper left
 0:47            Construct combined texture-sampler (temp usampler2DArray)
 0:47              'g_tTex2du4a' (uniform utexture2DArray)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:47            'c3' (uniform 3-component vector of float)
+0:47            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:47              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:47              Constant:
+0:47                2 (const uint)
 0:47            Constant:
 0:47              3 (const int)
 0:51      Sequence
@@ -433,7 +538,10 @@ gl_FragCoord origin is upper left
 0:51            Construct combined texture-sampler (temp samplerCubeArray)
 0:51              'g_tTexcdf4a' (uniform textureCubeArray)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:51            'c4' (uniform 4-component vector of float)
+0:51            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:51              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:51              Constant:
+0:51                3 (const uint)
 0:51            Constant:
 0:51              0 (const int)
 0:52      Sequence
@@ -443,7 +551,10 @@ gl_FragCoord origin is upper left
 0:52            Construct combined texture-sampler (temp isamplerCubeArray)
 0:52              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:52            'c4' (uniform 4-component vector of float)
+0:52            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:52              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:52              Constant:
+0:52                3 (const uint)
 0:52            Constant:
 0:52              0 (const int)
 0:53      Sequence
@@ -453,7 +564,10 @@ gl_FragCoord origin is upper left
 0:53            Construct combined texture-sampler (temp usamplerCubeArray)
 0:53              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:53              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:53            'c4' (uniform 4-component vector of float)
+0:53            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:53              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:53              Constant:
+0:53                3 (const uint)
 0:53            Constant:
 0:53              0 (const int)
 0:55      Sequence
@@ -463,7 +577,10 @@ gl_FragCoord origin is upper left
 0:55            Construct combined texture-sampler (temp samplerCubeArray)
 0:55              'g_tTexcdf4a' (uniform textureCubeArray)
 0:55              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:55            'c4' (uniform 4-component vector of float)
+0:55            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:55              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:55              Constant:
+0:55                3 (const uint)
 0:55            Constant:
 0:55              1 (const int)
 0:56      Sequence
@@ -473,7 +590,10 @@ gl_FragCoord origin is upper left
 0:56            Construct combined texture-sampler (temp isamplerCubeArray)
 0:56              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:56              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:56            'c4' (uniform 4-component vector of float)
+0:56            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:56              Constant:
+0:56                3 (const uint)
 0:56            Constant:
 0:56              1 (const int)
 0:57      Sequence
@@ -483,7 +603,10 @@ gl_FragCoord origin is upper left
 0:57            Construct combined texture-sampler (temp usamplerCubeArray)
 0:57              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:57            'c4' (uniform 4-component vector of float)
+0:57            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:57              Constant:
+0:57                3 (const uint)
 0:57            Constant:
 0:57              1 (const int)
 0:59      Sequence
@@ -493,7 +616,10 @@ gl_FragCoord origin is upper left
 0:59            Construct combined texture-sampler (temp samplerCubeArray)
 0:59              'g_tTexcdf4a' (uniform textureCubeArray)
 0:59              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:59            'c4' (uniform 4-component vector of float)
+0:59            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:59              Constant:
+0:59                3 (const uint)
 0:59            Constant:
 0:59              2 (const int)
 0:60      Sequence
@@ -503,7 +629,10 @@ gl_FragCoord origin is upper left
 0:60            Construct combined texture-sampler (temp isamplerCubeArray)
 0:60              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:60              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:60            'c4' (uniform 4-component vector of float)
+0:60            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:60              Constant:
+0:60                3 (const uint)
 0:60            Constant:
 0:60              2 (const int)
 0:61      Sequence
@@ -513,7 +642,10 @@ gl_FragCoord origin is upper left
 0:61            Construct combined texture-sampler (temp usamplerCubeArray)
 0:61              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:61            'c4' (uniform 4-component vector of float)
+0:61            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:61              Constant:
+0:61                3 (const uint)
 0:61            Constant:
 0:61              2 (const int)
 0:63      Sequence
@@ -523,7 +655,10 @@ gl_FragCoord origin is upper left
 0:63            Construct combined texture-sampler (temp samplerCubeArray)
 0:63              'g_tTexcdf4a' (uniform textureCubeArray)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:63            'c4' (uniform 4-component vector of float)
+0:63            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:63              Constant:
+0:63                3 (const uint)
 0:63            Constant:
 0:63              3 (const int)
 0:64      Sequence
@@ -533,7 +668,10 @@ gl_FragCoord origin is upper left
 0:64            Construct combined texture-sampler (temp isamplerCubeArray)
 0:64              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:64              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:64            'c4' (uniform 4-component vector of float)
+0:64            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:64              Constant:
+0:64                3 (const uint)
 0:64            Constant:
 0:64              3 (const int)
 0:65      Sequence
@@ -543,7 +681,10 @@ gl_FragCoord origin is upper left
 0:65            Construct combined texture-sampler (temp usamplerCubeArray)
 0:65              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:65              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:65            'c4' (uniform 4-component vector of float)
+0:65            c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:65              Constant:
+0:65                3 (const uint)
 0:65            Constant:
 0:65              3 (const int)
 0:67      move second child to first child (temp 4-component vector of float)
@@ -590,85 +731,90 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform float)
-0:?     'c2' (uniform 2-component vector of float)
-0:?     'c3' (uniform 3-component vector of float)
-0:?     'c4' (uniform 4-component vector of float)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 227
+// Id's are bound by 248
 
                               Capability Shader
                               Capability Sampled1D
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 204 208
+                              EntryPoint Fragment 4  "main" 230 234
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "txval00"
                               Name 12  "g_tTex2df4a"
                               Name 16  "g_sSamp"
-                              Name 22  "c3"
-                              Name 29  "txval01"
-                              Name 32  "g_tTex2di4a"
-                              Name 42  "txval02"
-                              Name 45  "g_tTex2du4a"
-                              Name 52  "txval10"
-                              Name 59  "txval11"
-                              Name 65  "txval12"
-                              Name 71  "txval20"
-                              Name 78  "txval21"
-                              Name 84  "txval22"
-                              Name 90  "txval30"
-                              Name 97  "txval31"
-                              Name 103  "txval32"
-                              Name 109  "txval40"
-                              Name 112  "g_tTexcdf4a"
-                              Name 118  "c4"
-                              Name 121  "txval41"
-                              Name 124  "g_tTexcdi4a"
-                              Name 131  "txval42"
-                              Name 134  "g_tTexcdu4a"
-                              Name 141  "txval50"
-                              Name 147  "txval51"
-                              Name 153  "txval52"
-                              Name 159  "txval60"
-                              Name 165  "txval61"
-                              Name 171  "txval62"
-                              Name 177  "txval70"
-                              Name 183  "txval71"
-                              Name 189  "txval72"
-                              Name 195  "PS_OUTPUT"
-                              MemberName 195(PS_OUTPUT) 0  "Color"
-                              MemberName 195(PS_OUTPUT) 1  "Depth"
-                              Name 197  "psout"
-                              Name 204  "Color"
-                              Name 208  "Depth"
-                              Name 212  "g_sSamp2d"
-                              Name 215  "g_tTex1df4a"
-                              Name 218  "g_tTex1di4a"
-                              Name 221  "g_tTex1du4a"
-                              Name 223  "c1"
-                              Name 226  "c2"
+                              Name 22  "$Global"
+                              MemberName 22($Global) 0  "c1"
+                              MemberName 22($Global) 1  "c2"
+                              MemberName 22($Global) 2  "c3"
+                              MemberName 22($Global) 3  "c4"
+                              Name 24  ""
+                              Name 34  "txval01"
+                              Name 37  "g_tTex2di4a"
+                              Name 48  "txval02"
+                              Name 51  "g_tTex2du4a"
+                              Name 59  "txval10"
+                              Name 67  "txval11"
+                              Name 74  "txval12"
+                              Name 81  "txval20"
+                              Name 88  "txval21"
+                              Name 95  "txval22"
+                              Name 102  "txval30"
+                              Name 110  "txval31"
+                              Name 117  "txval32"
+                              Name 124  "txval40"
+                              Name 127  "g_tTexcdf4a"
+                              Name 136  "txval41"
+                              Name 139  "g_tTexcdi4a"
+                              Name 147  "txval42"
+                              Name 150  "g_tTexcdu4a"
+                              Name 158  "txval50"
+                              Name 165  "txval51"
+                              Name 172  "txval52"
+                              Name 179  "txval60"
+                              Name 186  "txval61"
+                              Name 193  "txval62"
+                              Name 200  "txval70"
+                              Name 207  "txval71"
+                              Name 214  "txval72"
+                              Name 221  "PS_OUTPUT"
+                              MemberName 221(PS_OUTPUT) 0  "Color"
+                              MemberName 221(PS_OUTPUT) 1  "Depth"
+                              Name 223  "psout"
+                              Name 230  "Color"
+                              Name 234  "Depth"
+                              Name 238  "g_sSamp2d"
+                              Name 241  "g_tTex1df4a"
+                              Name 244  "g_tTex1di4a"
+                              Name 247  "g_tTex1du4a"
                               Decorate 12(g_tTex2df4a) DescriptorSet 0
                               Decorate 16(g_sSamp) DescriptorSet 0
                               Decorate 16(g_sSamp) Binding 0
-                              Decorate 32(g_tTex2di4a) DescriptorSet 0
-                              Decorate 45(g_tTex2du4a) DescriptorSet 0
-                              Decorate 112(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 124(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 134(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 204(Color) Location 0
-                              Decorate 208(Depth) BuiltIn FragDepth
-                              Decorate 212(g_sSamp2d) DescriptorSet 0
-                              Decorate 215(g_tTex1df4a) DescriptorSet 0
-                              Decorate 215(g_tTex1df4a) Binding 0
-                              Decorate 218(g_tTex1di4a) DescriptorSet 0
-                              Decorate 221(g_tTex1du4a) DescriptorSet 0
+                              MemberDecorate 22($Global) 0 Offset 0
+                              MemberDecorate 22($Global) 1 Offset 8
+                              MemberDecorate 22($Global) 2 Offset 16
+                              MemberDecorate 22($Global) 3 Offset 32
+                              Decorate 22($Global) Block
+                              Decorate 24 DescriptorSet 0
+                              Decorate 37(g_tTex2di4a) DescriptorSet 0
+                              Decorate 51(g_tTex2du4a) DescriptorSet 0
+                              Decorate 127(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 139(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 150(g_tTexcdu4a) DescriptorSet 0
+                              Decorate 230(Color) Location 0
+                              Decorate 234(Depth) BuiltIn FragDepth
+                              Decorate 238(g_sSamp2d) DescriptorSet 0
+                              Decorate 241(g_tTex1df4a) DescriptorSet 0
+                              Decorate 241(g_tTex1df4a) Binding 0
+                              Decorate 244(g_tTex1di4a) DescriptorSet 0
+                              Decorate 247(g_tTex1du4a) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -681,245 +827,266 @@ gl_FragCoord origin is upper left
               15:             TypePointer UniformConstant 14
      16(g_sSamp):     15(ptr) Variable UniformConstant
               18:             TypeSampledImage 10
-              20:             TypeVector 6(float) 3
-              21:             TypePointer UniformConstant 20(fvec3)
-          22(c3):     21(ptr) Variable UniformConstant
-              24:             TypeInt 32 1
-              25:     24(int) Constant 0
-              27:             TypeVector 24(int) 4
-              28:             TypePointer Function 27(ivec4)
-              30:             TypeImage 24(int) 2D array sampled format:Unknown
-              31:             TypePointer UniformConstant 30
- 32(g_tTex2di4a):     31(ptr) Variable UniformConstant
-              35:             TypeSampledImage 30
-              39:             TypeInt 32 0
-              40:             TypeVector 39(int) 4
-              41:             TypePointer Function 40(ivec4)
-              43:             TypeImage 39(int) 2D array sampled format:Unknown
-              44:             TypePointer UniformConstant 43
- 45(g_tTex2du4a):     44(ptr) Variable UniformConstant
-              48:             TypeSampledImage 43
-              57:     24(int) Constant 1
-              76:     24(int) Constant 2
-              95:     24(int) Constant 3
-             110:             TypeImage 6(float) Cube array sampled format:Unknown
-             111:             TypePointer UniformConstant 110
-112(g_tTexcdf4a):    111(ptr) Variable UniformConstant
-             115:             TypeSampledImage 110
-             117:             TypePointer UniformConstant 7(fvec4)
-         118(c4):    117(ptr) Variable UniformConstant
-             122:             TypeImage 24(int) Cube array sampled format:Unknown
-             123:             TypePointer UniformConstant 122
-124(g_tTexcdi4a):    123(ptr) Variable UniformConstant
-             127:             TypeSampledImage 122
-             132:             TypeImage 39(int) Cube array sampled format:Unknown
-             133:             TypePointer UniformConstant 132
-134(g_tTexcdu4a):    133(ptr) Variable UniformConstant
-             137:             TypeSampledImage 132
-  195(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
-             196:             TypePointer Function 195(PS_OUTPUT)
-             198:    6(float) Constant 1065353216
-             199:    7(fvec4) ConstantComposite 198 198 198 198
-             201:             TypePointer Function 6(float)
-             203:             TypePointer Output 7(fvec4)
-      204(Color):    203(ptr) Variable Output
-             207:             TypePointer Output 6(float)
-      208(Depth):    207(ptr) Variable Output
-  212(g_sSamp2d):     15(ptr) Variable UniformConstant
-             213:             TypeImage 6(float) 1D array sampled format:Unknown
-             214:             TypePointer UniformConstant 213
-215(g_tTex1df4a):    214(ptr) Variable UniformConstant
-             216:             TypeImage 24(int) 1D array sampled format:Unknown
-             217:             TypePointer UniformConstant 216
-218(g_tTex1di4a):    217(ptr) Variable UniformConstant
-             219:             TypeImage 39(int) 1D array sampled format:Unknown
-             220:             TypePointer UniformConstant 219
-221(g_tTex1du4a):    220(ptr) Variable UniformConstant
-             222:             TypePointer UniformConstant 6(float)
-         223(c1):    222(ptr) Variable UniformConstant
-             224:             TypeVector 6(float) 2
-             225:             TypePointer UniformConstant 224(fvec2)
-         226(c2):    225(ptr) Variable UniformConstant
+              20:             TypeVector 6(float) 2
+              21:             TypeVector 6(float) 3
+     22($Global):             TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4)
+              23:             TypePointer Uniform 22($Global)
+              24:     23(ptr) Variable Uniform
+              25:             TypeInt 32 1
+              26:     25(int) Constant 2
+              27:             TypePointer Uniform 21(fvec3)
+              30:     25(int) Constant 0
+              32:             TypeVector 25(int) 4
+              33:             TypePointer Function 32(ivec4)
+              35:             TypeImage 25(int) 2D array sampled format:Unknown
+              36:             TypePointer UniformConstant 35
+ 37(g_tTex2di4a):     36(ptr) Variable UniformConstant
+              40:             TypeSampledImage 35
+              45:             TypeInt 32 0
+              46:             TypeVector 45(int) 4
+              47:             TypePointer Function 46(ivec4)
+              49:             TypeImage 45(int) 2D array sampled format:Unknown
+              50:             TypePointer UniformConstant 49
+ 51(g_tTex2du4a):     50(ptr) Variable UniformConstant
+              54:             TypeSampledImage 49
+              65:     25(int) Constant 1
+             108:     25(int) Constant 3
+             125:             TypeImage 6(float) Cube array sampled format:Unknown
+             126:             TypePointer UniformConstant 125
+127(g_tTexcdf4a):    126(ptr) Variable UniformConstant
+             130:             TypeSampledImage 125
+             132:             TypePointer Uniform 7(fvec4)
+             137:             TypeImage 25(int) Cube array sampled format:Unknown
+             138:             TypePointer UniformConstant 137
+139(g_tTexcdi4a):    138(ptr) Variable UniformConstant
+             142:             TypeSampledImage 137
+             148:             TypeImage 45(int) Cube array sampled format:Unknown
+             149:             TypePointer UniformConstant 148
+150(g_tTexcdu4a):    149(ptr) Variable UniformConstant
+             153:             TypeSampledImage 148
+  221(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+             222:             TypePointer Function 221(PS_OUTPUT)
+             224:    6(float) Constant 1065353216
+             225:    7(fvec4) ConstantComposite 224 224 224 224
+             227:             TypePointer Function 6(float)
+             229:             TypePointer Output 7(fvec4)
+      230(Color):    229(ptr) Variable Output
+             233:             TypePointer Output 6(float)
+      234(Depth):    233(ptr) Variable Output
+  238(g_sSamp2d):     15(ptr) Variable UniformConstant
+             239:             TypeImage 6(float) 1D array sampled format:Unknown
+             240:             TypePointer UniformConstant 239
+241(g_tTex1df4a):    240(ptr) Variable UniformConstant
+             242:             TypeImage 25(int) 1D array sampled format:Unknown
+             243:             TypePointer UniformConstant 242
+244(g_tTex1di4a):    243(ptr) Variable UniformConstant
+             245:             TypeImage 45(int) 1D array sampled format:Unknown
+             246:             TypePointer UniformConstant 245
+247(g_tTex1du4a):    246(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
       9(txval00):      8(ptr) Variable Function
-     29(txval01):     28(ptr) Variable Function
-     42(txval02):     41(ptr) Variable Function
-     52(txval10):      8(ptr) Variable Function
-     59(txval11):     28(ptr) Variable Function
-     65(txval12):     41(ptr) Variable Function
-     71(txval20):      8(ptr) Variable Function
-     78(txval21):     28(ptr) Variable Function
-     84(txval22):     41(ptr) Variable Function
-     90(txval30):      8(ptr) Variable Function
-     97(txval31):     28(ptr) Variable Function
-    103(txval32):     41(ptr) Variable Function
-    109(txval40):      8(ptr) Variable Function
-    121(txval41):     28(ptr) Variable Function
-    131(txval42):     41(ptr) Variable Function
-    141(txval50):      8(ptr) Variable Function
-    147(txval51):     28(ptr) Variable Function
-    153(txval52):     41(ptr) Variable Function
-    159(txval60):      8(ptr) Variable Function
-    165(txval61):     28(ptr) Variable Function
-    171(txval62):     41(ptr) Variable Function
-    177(txval70):      8(ptr) Variable Function
-    183(txval71):     28(ptr) Variable Function
-    189(txval72):     41(ptr) Variable Function
-      197(psout):    196(ptr) Variable Function
+     34(txval01):     33(ptr) Variable Function
+     48(txval02):     47(ptr) Variable Function
+     59(txval10):      8(ptr) Variable Function
+     67(txval11):     33(ptr) Variable Function
+     74(txval12):     47(ptr) Variable Function
+     81(txval20):      8(ptr) Variable Function
+     88(txval21):     33(ptr) Variable Function
+     95(txval22):     47(ptr) Variable Function
+    102(txval30):      8(ptr) Variable Function
+    110(txval31):     33(ptr) Variable Function
+    117(txval32):     47(ptr) Variable Function
+    124(txval40):      8(ptr) Variable Function
+    136(txval41):     33(ptr) Variable Function
+    147(txval42):     47(ptr) Variable Function
+    158(txval50):      8(ptr) Variable Function
+    165(txval51):     33(ptr) Variable Function
+    172(txval52):     47(ptr) Variable Function
+    179(txval60):      8(ptr) Variable Function
+    186(txval61):     33(ptr) Variable Function
+    193(txval62):     47(ptr) Variable Function
+    200(txval70):      8(ptr) Variable Function
+    207(txval71):     33(ptr) Variable Function
+    214(txval72):     47(ptr) Variable Function
+      223(psout):    222(ptr) Variable Function
               13:          10 Load 12(g_tTex2df4a)
               17:          14 Load 16(g_sSamp)
               19:          18 SampledImage 13 17
-              23:   20(fvec3) Load 22(c3)
-              26:    7(fvec4) ImageGather 19 23 25
-                              Store 9(txval00) 26
-              33:          30 Load 32(g_tTex2di4a)
-              34:          14 Load 16(g_sSamp)
-              36:          35 SampledImage 33 34
-              37:   20(fvec3) Load 22(c3)
-              38:   27(ivec4) ImageGather 36 37 25
-                              Store 29(txval01) 38
-              46:          43 Load 45(g_tTex2du4a)
-              47:          14 Load 16(g_sSamp)
-              49:          48 SampledImage 46 47
-              50:   20(fvec3) Load 22(c3)
-              51:   40(ivec4) ImageGather 49 50 25
-                              Store 42(txval02) 51
-              53:          10 Load 12(g_tTex2df4a)
-              54:          14 Load 16(g_sSamp)
-              55:          18 SampledImage 53 54
-              56:   20(fvec3) Load 22(c3)
-              58:    7(fvec4) ImageGather 55 56 57
-                              Store 52(txval10) 58
-              60:          30 Load 32(g_tTex2di4a)
+              28:     27(ptr) AccessChain 24 26
+              29:   21(fvec3) Load 28
+              31:    7(fvec4) ImageGather 19 29 30
+                              Store 9(txval00) 31
+              38:          35 Load 37(g_tTex2di4a)
+              39:          14 Load 16(g_sSamp)
+              41:          40 SampledImage 38 39
+              42:     27(ptr) AccessChain 24 26
+              43:   21(fvec3) Load 42
+              44:   32(ivec4) ImageGather 41 43 30
+                              Store 34(txval01) 44
+              52:          49 Load 51(g_tTex2du4a)
+              53:          14 Load 16(g_sSamp)
+              55:          54 SampledImage 52 53
+              56:     27(ptr) AccessChain 24 26
+              57:   21(fvec3) Load 56
+              58:   46(ivec4) ImageGather 55 57 30
+                              Store 48(txval02) 58
+              60:          10 Load 12(g_tTex2df4a)
               61:          14 Load 16(g_sSamp)
-              62:          35 SampledImage 60 61
-              63:   20(fvec3) Load 22(c3)
-              64:   27(ivec4) ImageGather 62 63 57
-                              Store 59(txval11) 64
-              66:          43 Load 45(g_tTex2du4a)
-              67:          14 Load 16(g_sSamp)
-              68:          48 SampledImage 66 67
-              69:   20(fvec3) Load 22(c3)
-              70:   40(ivec4) ImageGather 68 69 57
-                              Store 65(txval12) 70
-              72:          10 Load 12(g_tTex2df4a)
-              73:          14 Load 16(g_sSamp)
-              74:          18 SampledImage 72 73
-              75:   20(fvec3) Load 22(c3)
-              77:    7(fvec4) ImageGather 74 75 76
-                              Store 71(txval20) 77
-              79:          30 Load 32(g_tTex2di4a)
-              80:          14 Load 16(g_sSamp)
-              81:          35 SampledImage 79 80
-              82:   20(fvec3) Load 22(c3)
-              83:   27(ivec4) ImageGather 81 82 76
-                              Store 78(txval21) 83
-              85:          43 Load 45(g_tTex2du4a)
-              86:          14 Load 16(g_sSamp)
-              87:          48 SampledImage 85 86
-              88:   20(fvec3) Load 22(c3)
-              89:   40(ivec4) ImageGather 87 88 76
-                              Store 84(txval22) 89
-              91:          10 Load 12(g_tTex2df4a)
-              92:          14 Load 16(g_sSamp)
-              93:          18 SampledImage 91 92
-              94:   20(fvec3) Load 22(c3)
-              96:    7(fvec4) ImageGather 93 94 95
-                              Store 90(txval30) 96
-              98:          30 Load 32(g_tTex2di4a)
-              99:          14 Load 16(g_sSamp)
-             100:          35 SampledImage 98 99
-             101:   20(fvec3) Load 22(c3)
-             102:   27(ivec4) ImageGather 100 101 95
-                              Store 97(txval31) 102
-             104:          43 Load 45(g_tTex2du4a)
-             105:          14 Load 16(g_sSamp)
-             106:          48 SampledImage 104 105
-             107:   20(fvec3) Load 22(c3)
-             108:   40(ivec4) ImageGather 106 107 95
-                              Store 103(txval32) 108
-             113:         110 Load 112(g_tTexcdf4a)
-             114:          14 Load 16(g_sSamp)
-             116:         115 SampledImage 113 114
-             119:    7(fvec4) Load 118(c4)
-             120:    7(fvec4) ImageGather 116 119 25
-                              Store 109(txval40) 120
-             125:         122 Load 124(g_tTexcdi4a)
-             126:          14 Load 16(g_sSamp)
-             128:         127 SampledImage 125 126
-             129:    7(fvec4) Load 118(c4)
-             130:   27(ivec4) ImageGather 128 129 25
-                              Store 121(txval41) 130
-             135:         132 Load 134(g_tTexcdu4a)
-             136:          14 Load 16(g_sSamp)
-             138:         137 SampledImage 135 136
-             139:    7(fvec4) Load 118(c4)
-             140:   40(ivec4) ImageGather 138 139 25
-                              Store 131(txval42) 140
-             142:         110 Load 112(g_tTexcdf4a)
-             143:          14 Load 16(g_sSamp)
-             144:         115 SampledImage 142 143
-             145:    7(fvec4) Load 118(c4)
-             146:    7(fvec4) ImageGather 144 145 57
-                              Store 141(txval50) 146
-             148:         122 Load 124(g_tTexcdi4a)
-             149:          14 Load 16(g_sSamp)
-             150:         127 SampledImage 148 149
-             151:    7(fvec4) Load 118(c4)
-             152:   27(ivec4) ImageGather 150 151 57
-                              Store 147(txval51) 152
-             154:         132 Load 134(g_tTexcdu4a)
-             155:          14 Load 16(g_sSamp)
-             156:         137 SampledImage 154 155
-             157:    7(fvec4) Load 118(c4)
-             158:   40(ivec4) ImageGather 156 157 57
-                              Store 153(txval52) 158
-             160:         110 Load 112(g_tTexcdf4a)
-             161:          14 Load 16(g_sSamp)
-             162:         115 SampledImage 160 161
-             163:    7(fvec4) Load 118(c4)
-             164:    7(fvec4) ImageGather 162 163 76
-                              Store 159(txval60) 164
-             166:         122 Load 124(g_tTexcdi4a)
+              62:          18 SampledImage 60 61
+              63:     27(ptr) AccessChain 24 26
+              64:   21(fvec3) Load 63
+              66:    7(fvec4) ImageGather 62 64 65
+                              Store 59(txval10) 66
+              68:          35 Load 37(g_tTex2di4a)
+              69:          14 Load 16(g_sSamp)
+              70:          40 SampledImage 68 69
+              71:     27(ptr) AccessChain 24 26
+              72:   21(fvec3) Load 71
+              73:   32(ivec4) ImageGather 70 72 65
+                              Store 67(txval11) 73
+              75:          49 Load 51(g_tTex2du4a)
+              76:          14 Load 16(g_sSamp)
+              77:          54 SampledImage 75 76
+              78:     27(ptr) AccessChain 24 26
+              79:   21(fvec3) Load 78
+              80:   46(ivec4) ImageGather 77 79 65
+                              Store 74(txval12) 80
+              82:          10 Load 12(g_tTex2df4a)
+              83:          14 Load 16(g_sSamp)
+              84:          18 SampledImage 82 83
+              85:     27(ptr) AccessChain 24 26
+              86:   21(fvec3) Load 85
+              87:    7(fvec4) ImageGather 84 86 26
+                              Store 81(txval20) 87
+              89:          35 Load 37(g_tTex2di4a)
+              90:          14 Load 16(g_sSamp)
+              91:          40 SampledImage 89 90
+              92:     27(ptr) AccessChain 24 26
+              93:   21(fvec3) Load 92
+              94:   32(ivec4) ImageGather 91 93 26
+                              Store 88(txval21) 94
+              96:          49 Load 51(g_tTex2du4a)
+              97:          14 Load 16(g_sSamp)
+              98:          54 SampledImage 96 97
+              99:     27(ptr) AccessChain 24 26
+             100:   21(fvec3) Load 99
+             101:   46(ivec4) ImageGather 98 100 26
+                              Store 95(txval22) 101
+             103:          10 Load 12(g_tTex2df4a)
+             104:          14 Load 16(g_sSamp)
+             105:          18 SampledImage 103 104
+             106:     27(ptr) AccessChain 24 26
+             107:   21(fvec3) Load 106
+             109:    7(fvec4) ImageGather 105 107 108
+                              Store 102(txval30) 109
+             111:          35 Load 37(g_tTex2di4a)
+             112:          14 Load 16(g_sSamp)
+             113:          40 SampledImage 111 112
+             114:     27(ptr) AccessChain 24 26
+             115:   21(fvec3) Load 114
+             116:   32(ivec4) ImageGather 113 115 108
+                              Store 110(txval31) 116
+             118:          49 Load 51(g_tTex2du4a)
+             119:          14 Load 16(g_sSamp)
+             120:          54 SampledImage 118 119
+             121:     27(ptr) AccessChain 24 26
+             122:   21(fvec3) Load 121
+             123:   46(ivec4) ImageGather 120 122 108
+                              Store 117(txval32) 123
+             128:         125 Load 127(g_tTexcdf4a)
+             129:          14 Load 16(g_sSamp)
+             131:         130 SampledImage 128 129
+             133:    132(ptr) AccessChain 24 108
+             134:    7(fvec4) Load 133
+             135:    7(fvec4) ImageGather 131 134 30
+                              Store 124(txval40) 135
+             140:         137 Load 139(g_tTexcdi4a)
+             141:          14 Load 16(g_sSamp)
+             143:         142 SampledImage 140 141
+             144:    132(ptr) AccessChain 24 108
+             145:    7(fvec4) Load 144
+             146:   32(ivec4) ImageGather 143 145 30
+                              Store 136(txval41) 146
+             151:         148 Load 150(g_tTexcdu4a)
+             152:          14 Load 16(g_sSamp)
+             154:         153 SampledImage 151 152
+             155:    132(ptr) AccessChain 24 108
+             156:    7(fvec4) Load 155
+             157:   46(ivec4) ImageGather 154 156 30
+                              Store 147(txval42) 157
+             159:         125 Load 127(g_tTexcdf4a)
+             160:          14 Load 16(g_sSamp)
+             161:         130 SampledImage 159 160
+             162:    132(ptr) AccessChain 24 108
+             163:    7(fvec4) Load 162
+             164:    7(fvec4) ImageGather 161 163 65
+                              Store 158(txval50) 164
+             166:         137 Load 139(g_tTexcdi4a)
              167:          14 Load 16(g_sSamp)
-             168:         127 SampledImage 166 167
-             169:    7(fvec4) Load 118(c4)
-             170:   27(ivec4) ImageGather 168 169 76
-                              Store 165(txval61) 170
-             172:         132 Load 134(g_tTexcdu4a)
-             173:          14 Load 16(g_sSamp)
-             174:         137 SampledImage 172 173
-             175:    7(fvec4) Load 118(c4)
-             176:   40(ivec4) ImageGather 174 175 76
-                              Store 171(txval62) 176
-             178:         110 Load 112(g_tTexcdf4a)
-             179:          14 Load 16(g_sSamp)
-             180:         115 SampledImage 178 179
-             181:    7(fvec4) Load 118(c4)
-             182:    7(fvec4) ImageGather 180 181 95
-                              Store 177(txval70) 182
-             184:         122 Load 124(g_tTexcdi4a)
-             185:          14 Load 16(g_sSamp)
-             186:         127 SampledImage 184 185
-             187:    7(fvec4) Load 118(c4)
-             188:   27(ivec4) ImageGather 186 187 95
-                              Store 183(txval71) 188
-             190:         132 Load 134(g_tTexcdu4a)
-             191:          14 Load 16(g_sSamp)
-             192:         137 SampledImage 190 191
-             193:    7(fvec4) Load 118(c4)
-             194:   40(ivec4) ImageGather 192 193 95
-                              Store 189(txval72) 194
-             200:      8(ptr) AccessChain 197(psout) 25
-                              Store 200 199
-             202:    201(ptr) AccessChain 197(psout) 57
-                              Store 202 198
-             205:      8(ptr) AccessChain 197(psout) 25
-             206:    7(fvec4) Load 205
-                              Store 204(Color) 206
-             209:    201(ptr) AccessChain 197(psout) 57
-             210:    6(float) Load 209
-                              Store 208(Depth) 210
+             168:         142 SampledImage 166 167
+             169:    132(ptr) AccessChain 24 108
+             170:    7(fvec4) Load 169
+             171:   32(ivec4) ImageGather 168 170 65
+                              Store 165(txval51) 171
+             173:         148 Load 150(g_tTexcdu4a)
+             174:          14 Load 16(g_sSamp)
+             175:         153 SampledImage 173 174
+             176:    132(ptr) AccessChain 24 108
+             177:    7(fvec4) Load 176
+             178:   46(ivec4) ImageGather 175 177 65
+                              Store 172(txval52) 178
+             180:         125 Load 127(g_tTexcdf4a)
+             181:          14 Load 16(g_sSamp)
+             182:         130 SampledImage 180 181
+             183:    132(ptr) AccessChain 24 108
+             184:    7(fvec4) Load 183
+             185:    7(fvec4) ImageGather 182 184 26
+                              Store 179(txval60) 185
+             187:         137 Load 139(g_tTexcdi4a)
+             188:          14 Load 16(g_sSamp)
+             189:         142 SampledImage 187 188
+             190:    132(ptr) AccessChain 24 108
+             191:    7(fvec4) Load 190
+             192:   32(ivec4) ImageGather 189 191 26
+                              Store 186(txval61) 192
+             194:         148 Load 150(g_tTexcdu4a)
+             195:          14 Load 16(g_sSamp)
+             196:         153 SampledImage 194 195
+             197:    132(ptr) AccessChain 24 108
+             198:    7(fvec4) Load 197
+             199:   46(ivec4) ImageGather 196 198 26
+                              Store 193(txval62) 199
+             201:         125 Load 127(g_tTexcdf4a)
+             202:          14 Load 16(g_sSamp)
+             203:         130 SampledImage 201 202
+             204:    132(ptr) AccessChain 24 108
+             205:    7(fvec4) Load 204
+             206:    7(fvec4) ImageGather 203 205 108
+                              Store 200(txval70) 206
+             208:         137 Load 139(g_tTexcdi4a)
+             209:          14 Load 16(g_sSamp)
+             210:         142 SampledImage 208 209
+             211:    132(ptr) AccessChain 24 108
+             212:    7(fvec4) Load 211
+             213:   32(ivec4) ImageGather 210 212 108
+                              Store 207(txval71) 213
+             215:         148 Load 150(g_tTexcdu4a)
+             216:          14 Load 16(g_sSamp)
+             217:         153 SampledImage 215 216
+             218:    132(ptr) AccessChain 24 108
+             219:    7(fvec4) Load 218
+             220:   46(ivec4) ImageGather 217 219 108
+                              Store 214(txval72) 220
+             226:      8(ptr) AccessChain 223(psout) 30
+                              Store 226 225
+             228:    227(ptr) AccessChain 223(psout) 65
+                              Store 228 224
+             231:      8(ptr) AccessChain 223(psout) 30
+             232:    7(fvec4) Load 231
+                              Store 230(Color) 232
+             235:    227(ptr) AccessChain 223(psout) 65
+             236:    6(float) Load 235
+                              Store 234(Depth) 236
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
index 2ec5343b1..5cdf912e1 100644
--- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.gatherRGBA.basic.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:34  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:34  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:34    Function Parameters: 
 0:?     Sequence
 0:39      Sequence
@@ -12,7 +12,10 @@ gl_FragCoord origin is upper left
 0:39            Construct combined texture-sampler (temp sampler2D)
 0:39              'g_tTex2df4' (uniform texture2D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:39            'c2' (uniform 2-component vector of float)
+0:39            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:39              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:39              Constant:
+0:39                1 (const uint)
 0:39            Constant:
 0:39              0 (const int)
 0:40      Sequence
@@ -22,7 +25,10 @@ gl_FragCoord origin is upper left
 0:40            Construct combined texture-sampler (temp isampler2D)
 0:40              'g_tTex2di4' (uniform itexture2D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:40            'c2' (uniform 2-component vector of float)
+0:40            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:40              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:40              Constant:
+0:40                1 (const uint)
 0:40            Constant:
 0:40              0 (const int)
 0:41      Sequence
@@ -32,7 +38,10 @@ gl_FragCoord origin is upper left
 0:41            Construct combined texture-sampler (temp usampler2D)
 0:41              'g_tTex2du4' (uniform utexture2D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:41            'c2' (uniform 2-component vector of float)
+0:41            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:41              Constant:
+0:41                1 (const uint)
 0:41            Constant:
 0:41              0 (const int)
 0:43      Sequence
@@ -42,7 +51,10 @@ gl_FragCoord origin is upper left
 0:43            Construct combined texture-sampler (temp sampler2D)
 0:43              'g_tTex2df4' (uniform texture2D)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:43            'c2' (uniform 2-component vector of float)
+0:43            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:43              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:43              Constant:
+0:43                1 (const uint)
 0:43            Constant:
 0:43              1 (const int)
 0:44      Sequence
@@ -52,7 +64,10 @@ gl_FragCoord origin is upper left
 0:44            Construct combined texture-sampler (temp isampler2D)
 0:44              'g_tTex2di4' (uniform itexture2D)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:44            'c2' (uniform 2-component vector of float)
+0:44            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:44              Constant:
+0:44                1 (const uint)
 0:44            Constant:
 0:44              1 (const int)
 0:45      Sequence
@@ -62,7 +77,10 @@ gl_FragCoord origin is upper left
 0:45            Construct combined texture-sampler (temp usampler2D)
 0:45              'g_tTex2du4' (uniform utexture2D)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:45            'c2' (uniform 2-component vector of float)
+0:45            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:45              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:45              Constant:
+0:45                1 (const uint)
 0:45            Constant:
 0:45              1 (const int)
 0:47      Sequence
@@ -72,7 +90,10 @@ gl_FragCoord origin is upper left
 0:47            Construct combined texture-sampler (temp sampler2D)
 0:47              'g_tTex2df4' (uniform texture2D)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:47            'c2' (uniform 2-component vector of float)
+0:47            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:47              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:47              Constant:
+0:47                1 (const uint)
 0:47            Constant:
 0:47              2 (const int)
 0:48      Sequence
@@ -82,7 +103,10 @@ gl_FragCoord origin is upper left
 0:48            Construct combined texture-sampler (temp isampler2D)
 0:48              'g_tTex2di4' (uniform itexture2D)
 0:48              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:48            'c2' (uniform 2-component vector of float)
+0:48            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:48              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:48              Constant:
+0:48                1 (const uint)
 0:48            Constant:
 0:48              2 (const int)
 0:49      Sequence
@@ -92,7 +116,10 @@ gl_FragCoord origin is upper left
 0:49            Construct combined texture-sampler (temp usampler2D)
 0:49              'g_tTex2du4' (uniform utexture2D)
 0:49              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:49            'c2' (uniform 2-component vector of float)
+0:49            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:49              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:49              Constant:
+0:49                1 (const uint)
 0:49            Constant:
 0:49              2 (const int)
 0:51      Sequence
@@ -102,7 +129,10 @@ gl_FragCoord origin is upper left
 0:51            Construct combined texture-sampler (temp sampler2D)
 0:51              'g_tTex2df4' (uniform texture2D)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:51            'c2' (uniform 2-component vector of float)
+0:51            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:51              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:51              Constant:
+0:51                1 (const uint)
 0:51            Constant:
 0:51              3 (const int)
 0:52      Sequence
@@ -112,7 +142,10 @@ gl_FragCoord origin is upper left
 0:52            Construct combined texture-sampler (temp isampler2D)
 0:52              'g_tTex2di4' (uniform itexture2D)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:52            'c2' (uniform 2-component vector of float)
+0:52            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:52              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:52              Constant:
+0:52                1 (const uint)
 0:52            Constant:
 0:52              3 (const int)
 0:53      Sequence
@@ -122,7 +155,10 @@ gl_FragCoord origin is upper left
 0:53            Construct combined texture-sampler (temp usampler2D)
 0:53              'g_tTex2du4' (uniform utexture2D)
 0:53              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:53            'c2' (uniform 2-component vector of float)
+0:53            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:53              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:53              Constant:
+0:53                1 (const uint)
 0:53            Constant:
 0:53              3 (const int)
 0:57      Sequence
@@ -132,7 +168,10 @@ gl_FragCoord origin is upper left
 0:57            Construct combined texture-sampler (temp samplerCube)
 0:57              'g_tTexcdf4' (uniform textureCube)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:57            'c3' (uniform 3-component vector of float)
+0:57            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:57              Constant:
+0:57                2 (const uint)
 0:57            Constant:
 0:57              0 (const int)
 0:58      Sequence
@@ -142,7 +181,10 @@ gl_FragCoord origin is upper left
 0:58            Construct combined texture-sampler (temp isamplerCube)
 0:58              'g_tTexcdi4' (uniform itextureCube)
 0:58              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:58            'c3' (uniform 3-component vector of float)
+0:58            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:58              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:58              Constant:
+0:58                2 (const uint)
 0:58            Constant:
 0:58              0 (const int)
 0:59      Sequence
@@ -152,7 +194,10 @@ gl_FragCoord origin is upper left
 0:59            Construct combined texture-sampler (temp usamplerCube)
 0:59              'g_tTexcdu4' (uniform utextureCube)
 0:59              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:59            'c3' (uniform 3-component vector of float)
+0:59            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:59              Constant:
+0:59                2 (const uint)
 0:59            Constant:
 0:59              0 (const int)
 0:61      Sequence
@@ -162,7 +207,10 @@ gl_FragCoord origin is upper left
 0:61            Construct combined texture-sampler (temp samplerCube)
 0:61              'g_tTexcdf4' (uniform textureCube)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:61            'c3' (uniform 3-component vector of float)
+0:61            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:61              Constant:
+0:61                2 (const uint)
 0:61            Constant:
 0:61              1 (const int)
 0:62      Sequence
@@ -172,7 +220,10 @@ gl_FragCoord origin is upper left
 0:62            Construct combined texture-sampler (temp isamplerCube)
 0:62              'g_tTexcdi4' (uniform itextureCube)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:62            'c3' (uniform 3-component vector of float)
+0:62            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:62              Constant:
+0:62                2 (const uint)
 0:62            Constant:
 0:62              1 (const int)
 0:63      Sequence
@@ -182,7 +233,10 @@ gl_FragCoord origin is upper left
 0:63            Construct combined texture-sampler (temp usamplerCube)
 0:63              'g_tTexcdu4' (uniform utextureCube)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:63            'c3' (uniform 3-component vector of float)
+0:63            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:63              Constant:
+0:63                2 (const uint)
 0:63            Constant:
 0:63              1 (const int)
 0:65      Sequence
@@ -192,7 +246,10 @@ gl_FragCoord origin is upper left
 0:65            Construct combined texture-sampler (temp samplerCube)
 0:65              'g_tTexcdf4' (uniform textureCube)
 0:65              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:65            'c3' (uniform 3-component vector of float)
+0:65            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:65              Constant:
+0:65                2 (const uint)
 0:65            Constant:
 0:65              2 (const int)
 0:66      Sequence
@@ -202,7 +259,10 @@ gl_FragCoord origin is upper left
 0:66            Construct combined texture-sampler (temp isamplerCube)
 0:66              'g_tTexcdi4' (uniform itextureCube)
 0:66              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:66            'c3' (uniform 3-component vector of float)
+0:66            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:66              Constant:
+0:66                2 (const uint)
 0:66            Constant:
 0:66              2 (const int)
 0:67      Sequence
@@ -212,7 +272,10 @@ gl_FragCoord origin is upper left
 0:67            Construct combined texture-sampler (temp usamplerCube)
 0:67              'g_tTexcdu4' (uniform utextureCube)
 0:67              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:67            'c3' (uniform 3-component vector of float)
+0:67            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:67              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:67              Constant:
+0:67                2 (const uint)
 0:67            Constant:
 0:67              2 (const int)
 0:69      Sequence
@@ -222,7 +285,10 @@ gl_FragCoord origin is upper left
 0:69            Construct combined texture-sampler (temp samplerCube)
 0:69              'g_tTexcdf4' (uniform textureCube)
 0:69              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:69            'c3' (uniform 3-component vector of float)
+0:69            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:69              Constant:
+0:69                2 (const uint)
 0:69            Constant:
 0:69              3 (const int)
 0:70      Sequence
@@ -232,7 +298,10 @@ gl_FragCoord origin is upper left
 0:70            Construct combined texture-sampler (temp isamplerCube)
 0:70              'g_tTexcdi4' (uniform itextureCube)
 0:70              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:70            'c3' (uniform 3-component vector of float)
+0:70            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:70              Constant:
+0:70                2 (const uint)
 0:70            Constant:
 0:70              3 (const int)
 0:71      Sequence
@@ -242,7 +311,10 @@ gl_FragCoord origin is upper left
 0:71            Construct combined texture-sampler (temp usamplerCube)
 0:71              'g_tTexcdu4' (uniform utextureCube)
 0:71              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:71            'c3' (uniform 3-component vector of float)
+0:71            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:71              Constant:
+0:71                2 (const uint)
 0:71            Constant:
 0:71              3 (const int)
 0:73      move second child to first child (temp 4-component vector of float)
@@ -293,12 +365,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'c1' (uniform float)
-0:?     'c2' (uniform 2-component vector of float)
-0:?     'c3' (uniform 3-component vector of float)
-0:?     'c4' (uniform 4-component vector of float)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
 
 
 Linked fragment stage:
@@ -307,7 +376,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:34  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:34  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:34    Function Parameters: 
 0:?     Sequence
 0:39      Sequence
@@ -317,7 +386,10 @@ gl_FragCoord origin is upper left
 0:39            Construct combined texture-sampler (temp sampler2D)
 0:39              'g_tTex2df4' (uniform texture2D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:39            'c2' (uniform 2-component vector of float)
+0:39            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:39              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:39              Constant:
+0:39                1 (const uint)
 0:39            Constant:
 0:39              0 (const int)
 0:40      Sequence
@@ -327,7 +399,10 @@ gl_FragCoord origin is upper left
 0:40            Construct combined texture-sampler (temp isampler2D)
 0:40              'g_tTex2di4' (uniform itexture2D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:40            'c2' (uniform 2-component vector of float)
+0:40            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:40              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:40              Constant:
+0:40                1 (const uint)
 0:40            Constant:
 0:40              0 (const int)
 0:41      Sequence
@@ -337,7 +412,10 @@ gl_FragCoord origin is upper left
 0:41            Construct combined texture-sampler (temp usampler2D)
 0:41              'g_tTex2du4' (uniform utexture2D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:41            'c2' (uniform 2-component vector of float)
+0:41            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:41              Constant:
+0:41                1 (const uint)
 0:41            Constant:
 0:41              0 (const int)
 0:43      Sequence
@@ -347,7 +425,10 @@ gl_FragCoord origin is upper left
 0:43            Construct combined texture-sampler (temp sampler2D)
 0:43              'g_tTex2df4' (uniform texture2D)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:43            'c2' (uniform 2-component vector of float)
+0:43            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:43              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:43              Constant:
+0:43                1 (const uint)
 0:43            Constant:
 0:43              1 (const int)
 0:44      Sequence
@@ -357,7 +438,10 @@ gl_FragCoord origin is upper left
 0:44            Construct combined texture-sampler (temp isampler2D)
 0:44              'g_tTex2di4' (uniform itexture2D)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:44            'c2' (uniform 2-component vector of float)
+0:44            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:44              Constant:
+0:44                1 (const uint)
 0:44            Constant:
 0:44              1 (const int)
 0:45      Sequence
@@ -367,7 +451,10 @@ gl_FragCoord origin is upper left
 0:45            Construct combined texture-sampler (temp usampler2D)
 0:45              'g_tTex2du4' (uniform utexture2D)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:45            'c2' (uniform 2-component vector of float)
+0:45            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:45              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:45              Constant:
+0:45                1 (const uint)
 0:45            Constant:
 0:45              1 (const int)
 0:47      Sequence
@@ -377,7 +464,10 @@ gl_FragCoord origin is upper left
 0:47            Construct combined texture-sampler (temp sampler2D)
 0:47              'g_tTex2df4' (uniform texture2D)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:47            'c2' (uniform 2-component vector of float)
+0:47            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:47              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:47              Constant:
+0:47                1 (const uint)
 0:47            Constant:
 0:47              2 (const int)
 0:48      Sequence
@@ -387,7 +477,10 @@ gl_FragCoord origin is upper left
 0:48            Construct combined texture-sampler (temp isampler2D)
 0:48              'g_tTex2di4' (uniform itexture2D)
 0:48              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:48            'c2' (uniform 2-component vector of float)
+0:48            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:48              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:48              Constant:
+0:48                1 (const uint)
 0:48            Constant:
 0:48              2 (const int)
 0:49      Sequence
@@ -397,7 +490,10 @@ gl_FragCoord origin is upper left
 0:49            Construct combined texture-sampler (temp usampler2D)
 0:49              'g_tTex2du4' (uniform utexture2D)
 0:49              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:49            'c2' (uniform 2-component vector of float)
+0:49            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:49              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:49              Constant:
+0:49                1 (const uint)
 0:49            Constant:
 0:49              2 (const int)
 0:51      Sequence
@@ -407,7 +503,10 @@ gl_FragCoord origin is upper left
 0:51            Construct combined texture-sampler (temp sampler2D)
 0:51              'g_tTex2df4' (uniform texture2D)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:51            'c2' (uniform 2-component vector of float)
+0:51            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:51              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:51              Constant:
+0:51                1 (const uint)
 0:51            Constant:
 0:51              3 (const int)
 0:52      Sequence
@@ -417,7 +516,10 @@ gl_FragCoord origin is upper left
 0:52            Construct combined texture-sampler (temp isampler2D)
 0:52              'g_tTex2di4' (uniform itexture2D)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:52            'c2' (uniform 2-component vector of float)
+0:52            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:52              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:52              Constant:
+0:52                1 (const uint)
 0:52            Constant:
 0:52              3 (const int)
 0:53      Sequence
@@ -427,7 +529,10 @@ gl_FragCoord origin is upper left
 0:53            Construct combined texture-sampler (temp usampler2D)
 0:53              'g_tTex2du4' (uniform utexture2D)
 0:53              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:53            'c2' (uniform 2-component vector of float)
+0:53            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:53              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:53              Constant:
+0:53                1 (const uint)
 0:53            Constant:
 0:53              3 (const int)
 0:57      Sequence
@@ -437,7 +542,10 @@ gl_FragCoord origin is upper left
 0:57            Construct combined texture-sampler (temp samplerCube)
 0:57              'g_tTexcdf4' (uniform textureCube)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:57            'c3' (uniform 3-component vector of float)
+0:57            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:57              Constant:
+0:57                2 (const uint)
 0:57            Constant:
 0:57              0 (const int)
 0:58      Sequence
@@ -447,7 +555,10 @@ gl_FragCoord origin is upper left
 0:58            Construct combined texture-sampler (temp isamplerCube)
 0:58              'g_tTexcdi4' (uniform itextureCube)
 0:58              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:58            'c3' (uniform 3-component vector of float)
+0:58            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:58              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:58              Constant:
+0:58                2 (const uint)
 0:58            Constant:
 0:58              0 (const int)
 0:59      Sequence
@@ -457,7 +568,10 @@ gl_FragCoord origin is upper left
 0:59            Construct combined texture-sampler (temp usamplerCube)
 0:59              'g_tTexcdu4' (uniform utextureCube)
 0:59              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:59            'c3' (uniform 3-component vector of float)
+0:59            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:59              Constant:
+0:59                2 (const uint)
 0:59            Constant:
 0:59              0 (const int)
 0:61      Sequence
@@ -467,7 +581,10 @@ gl_FragCoord origin is upper left
 0:61            Construct combined texture-sampler (temp samplerCube)
 0:61              'g_tTexcdf4' (uniform textureCube)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:61            'c3' (uniform 3-component vector of float)
+0:61            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:61              Constant:
+0:61                2 (const uint)
 0:61            Constant:
 0:61              1 (const int)
 0:62      Sequence
@@ -477,7 +594,10 @@ gl_FragCoord origin is upper left
 0:62            Construct combined texture-sampler (temp isamplerCube)
 0:62              'g_tTexcdi4' (uniform itextureCube)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:62            'c3' (uniform 3-component vector of float)
+0:62            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:62              Constant:
+0:62                2 (const uint)
 0:62            Constant:
 0:62              1 (const int)
 0:63      Sequence
@@ -487,7 +607,10 @@ gl_FragCoord origin is upper left
 0:63            Construct combined texture-sampler (temp usamplerCube)
 0:63              'g_tTexcdu4' (uniform utextureCube)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:63            'c3' (uniform 3-component vector of float)
+0:63            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:63              Constant:
+0:63                2 (const uint)
 0:63            Constant:
 0:63              1 (const int)
 0:65      Sequence
@@ -497,7 +620,10 @@ gl_FragCoord origin is upper left
 0:65            Construct combined texture-sampler (temp samplerCube)
 0:65              'g_tTexcdf4' (uniform textureCube)
 0:65              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:65            'c3' (uniform 3-component vector of float)
+0:65            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:65              Constant:
+0:65                2 (const uint)
 0:65            Constant:
 0:65              2 (const int)
 0:66      Sequence
@@ -507,7 +633,10 @@ gl_FragCoord origin is upper left
 0:66            Construct combined texture-sampler (temp isamplerCube)
 0:66              'g_tTexcdi4' (uniform itextureCube)
 0:66              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:66            'c3' (uniform 3-component vector of float)
+0:66            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:66              Constant:
+0:66                2 (const uint)
 0:66            Constant:
 0:66              2 (const int)
 0:67      Sequence
@@ -517,7 +646,10 @@ gl_FragCoord origin is upper left
 0:67            Construct combined texture-sampler (temp usamplerCube)
 0:67              'g_tTexcdu4' (uniform utextureCube)
 0:67              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:67            'c3' (uniform 3-component vector of float)
+0:67            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:67              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:67              Constant:
+0:67                2 (const uint)
 0:67            Constant:
 0:67              2 (const int)
 0:69      Sequence
@@ -527,7 +659,10 @@ gl_FragCoord origin is upper left
 0:69            Construct combined texture-sampler (temp samplerCube)
 0:69              'g_tTexcdf4' (uniform textureCube)
 0:69              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:69            'c3' (uniform 3-component vector of float)
+0:69            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:69              Constant:
+0:69                2 (const uint)
 0:69            Constant:
 0:69              3 (const int)
 0:70      Sequence
@@ -537,7 +672,10 @@ gl_FragCoord origin is upper left
 0:70            Construct combined texture-sampler (temp isamplerCube)
 0:70              'g_tTexcdi4' (uniform itextureCube)
 0:70              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:70            'c3' (uniform 3-component vector of float)
+0:70            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:70              Constant:
+0:70                2 (const uint)
 0:70            Constant:
 0:70              3 (const int)
 0:71      Sequence
@@ -547,7 +685,10 @@ gl_FragCoord origin is upper left
 0:71            Construct combined texture-sampler (temp usamplerCube)
 0:71              'g_tTexcdu4' (uniform utextureCube)
 0:71              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:71            'c3' (uniform 3-component vector of float)
+0:71            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:71              Constant:
+0:71                2 (const uint)
 0:71            Constant:
 0:71              3 (const int)
 0:73      move second child to first child (temp 4-component vector of float)
@@ -598,93 +739,98 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'c1' (uniform float)
-0:?     'c2' (uniform 2-component vector of float)
-0:?     'c3' (uniform 3-component vector of float)
-0:?     'c4' (uniform 4-component vector of float)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 237
+// Id's are bound by 258
 
                               Capability Shader
                               Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 205 209
+                              EntryPoint Fragment 4  "main" 230 234
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "txval00"
                               Name 12  "g_tTex2df4"
                               Name 16  "g_sSamp"
-                              Name 22  "c2"
-                              Name 29  "txval01"
-                              Name 32  "g_tTex2di4"
-                              Name 42  "txval02"
-                              Name 45  "g_tTex2du4"
-                              Name 52  "txval10"
-                              Name 59  "txval11"
-                              Name 65  "txval12"
-                              Name 71  "txval20"
-                              Name 78  "txval21"
-                              Name 84  "txval22"
-                              Name 90  "txval30"
-                              Name 97  "txval31"
-                              Name 103  "txval32"
-                              Name 109  "txval40"
-                              Name 112  "g_tTexcdf4"
-                              Name 119  "c3"
-                              Name 122  "txval41"
-                              Name 125  "g_tTexcdi4"
-                              Name 132  "txval42"
-                              Name 135  "g_tTexcdu4"
-                              Name 142  "txval50"
-                              Name 148  "txval51"
-                              Name 154  "txval52"
-                              Name 160  "txval60"
-                              Name 166  "txval61"
-                              Name 172  "txval62"
-                              Name 178  "txval70"
-                              Name 184  "txval71"
-                              Name 190  "txval72"
-                              Name 196  "PS_OUTPUT"
-                              MemberName 196(PS_OUTPUT) 0  "Color"
-                              MemberName 196(PS_OUTPUT) 1  "Depth"
-                              Name 198  "psout"
-                              Name 205  "Color"
-                              Name 209  "Depth"
-                              Name 213  "g_sSamp2d"
-                              Name 216  "g_tTex1df4a"
-                              Name 217  "g_tTex1df4"
-                              Name 220  "g_tTex1di4"
-                              Name 223  "g_tTex1du4"
-                              Name 226  "g_tTex3df4"
-                              Name 229  "g_tTex3di4"
-                              Name 232  "g_tTex3du4"
-                              Name 234  "c1"
-                              Name 236  "c4"
+                              Name 22  "$Global"
+                              MemberName 22($Global) 0  "c1"
+                              MemberName 22($Global) 1  "c2"
+                              MemberName 22($Global) 2  "c3"
+                              MemberName 22($Global) 3  "c4"
+                              Name 24  ""
+                              Name 34  "txval01"
+                              Name 37  "g_tTex2di4"
+                              Name 48  "txval02"
+                              Name 51  "g_tTex2du4"
+                              Name 59  "txval10"
+                              Name 66  "txval11"
+                              Name 73  "txval12"
+                              Name 80  "txval20"
+                              Name 88  "txval21"
+                              Name 95  "txval22"
+                              Name 102  "txval30"
+                              Name 110  "txval31"
+                              Name 117  "txval32"
+                              Name 124  "txval40"
+                              Name 127  "g_tTexcdf4"
+                              Name 136  "txval41"
+                              Name 139  "g_tTexcdi4"
+                              Name 147  "txval42"
+                              Name 150  "g_tTexcdu4"
+                              Name 158  "txval50"
+                              Name 165  "txval51"
+                              Name 172  "txval52"
+                              Name 179  "txval60"
+                              Name 186  "txval61"
+                              Name 193  "txval62"
+                              Name 200  "txval70"
+                              Name 207  "txval71"
+                              Name 214  "txval72"
+                              Name 221  "PS_OUTPUT"
+                              MemberName 221(PS_OUTPUT) 0  "Color"
+                              MemberName 221(PS_OUTPUT) 1  "Depth"
+                              Name 223  "psout"
+                              Name 230  "Color"
+                              Name 234  "Depth"
+                              Name 238  "g_sSamp2d"
+                              Name 241  "g_tTex1df4a"
+                              Name 242  "g_tTex1df4"
+                              Name 245  "g_tTex1di4"
+                              Name 248  "g_tTex1du4"
+                              Name 251  "g_tTex3df4"
+                              Name 254  "g_tTex3di4"
+                              Name 257  "g_tTex3du4"
                               Decorate 12(g_tTex2df4) DescriptorSet 0
                               Decorate 16(g_sSamp) DescriptorSet 0
                               Decorate 16(g_sSamp) Binding 0
-                              Decorate 32(g_tTex2di4) DescriptorSet 0
-                              Decorate 45(g_tTex2du4) DescriptorSet 0
-                              Decorate 112(g_tTexcdf4) DescriptorSet 0
-                              Decorate 125(g_tTexcdi4) DescriptorSet 0
-                              Decorate 135(g_tTexcdu4) DescriptorSet 0
-                              Decorate 205(Color) Location 0
-                              Decorate 209(Depth) BuiltIn FragDepth
-                              Decorate 213(g_sSamp2d) DescriptorSet 0
-                              Decorate 216(g_tTex1df4a) DescriptorSet 0
-                              Decorate 216(g_tTex1df4a) Binding 1
-                              Decorate 217(g_tTex1df4) DescriptorSet 0
-                              Decorate 217(g_tTex1df4) Binding 0
-                              Decorate 220(g_tTex1di4) DescriptorSet 0
-                              Decorate 223(g_tTex1du4) DescriptorSet 0
-                              Decorate 226(g_tTex3df4) DescriptorSet 0
-                              Decorate 229(g_tTex3di4) DescriptorSet 0
-                              Decorate 232(g_tTex3du4) DescriptorSet 0
+                              MemberDecorate 22($Global) 0 Offset 0
+                              MemberDecorate 22($Global) 1 Offset 8
+                              MemberDecorate 22($Global) 2 Offset 16
+                              MemberDecorate 22($Global) 3 Offset 32
+                              Decorate 22($Global) Block
+                              Decorate 24 DescriptorSet 0
+                              Decorate 37(g_tTex2di4) DescriptorSet 0
+                              Decorate 51(g_tTex2du4) DescriptorSet 0
+                              Decorate 127(g_tTexcdf4) DescriptorSet 0
+                              Decorate 139(g_tTexcdi4) DescriptorSet 0
+                              Decorate 150(g_tTexcdu4) DescriptorSet 0
+                              Decorate 230(Color) Location 0
+                              Decorate 234(Depth) BuiltIn FragDepth
+                              Decorate 238(g_sSamp2d) DescriptorSet 0
+                              Decorate 241(g_tTex1df4a) DescriptorSet 0
+                              Decorate 241(g_tTex1df4a) Binding 1
+                              Decorate 242(g_tTex1df4) DescriptorSet 0
+                              Decorate 242(g_tTex1df4) Binding 0
+                              Decorate 245(g_tTex1di4) DescriptorSet 0
+                              Decorate 248(g_tTex1du4) DescriptorSet 0
+                              Decorate 251(g_tTex3df4) DescriptorSet 0
+                              Decorate 254(g_tTex3di4) DescriptorSet 0
+                              Decorate 257(g_tTex3du4) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -698,254 +844,275 @@ gl_FragCoord origin is upper left
      16(g_sSamp):     15(ptr) Variable UniformConstant
               18:             TypeSampledImage 10
               20:             TypeVector 6(float) 2
-              21:             TypePointer UniformConstant 20(fvec2)
-          22(c2):     21(ptr) Variable UniformConstant
-              24:             TypeInt 32 1
-              25:     24(int) Constant 0
-              27:             TypeVector 24(int) 4
-              28:             TypePointer Function 27(ivec4)
-              30:             TypeImage 24(int) 2D sampled format:Unknown
-              31:             TypePointer UniformConstant 30
-  32(g_tTex2di4):     31(ptr) Variable UniformConstant
-              35:             TypeSampledImage 30
-              39:             TypeInt 32 0
-              40:             TypeVector 39(int) 4
-              41:             TypePointer Function 40(ivec4)
-              43:             TypeImage 39(int) 2D sampled format:Unknown
-              44:             TypePointer UniformConstant 43
-  45(g_tTex2du4):     44(ptr) Variable UniformConstant
-              48:             TypeSampledImage 43
-              57:     24(int) Constant 1
-              76:     24(int) Constant 2
-              95:     24(int) Constant 3
-             110:             TypeImage 6(float) Cube sampled format:Unknown
-             111:             TypePointer UniformConstant 110
- 112(g_tTexcdf4):    111(ptr) Variable UniformConstant
-             115:             TypeSampledImage 110
-             117:             TypeVector 6(float) 3
-             118:             TypePointer UniformConstant 117(fvec3)
-         119(c3):    118(ptr) Variable UniformConstant
-             123:             TypeImage 24(int) Cube sampled format:Unknown
-             124:             TypePointer UniformConstant 123
- 125(g_tTexcdi4):    124(ptr) Variable UniformConstant
-             128:             TypeSampledImage 123
-             133:             TypeImage 39(int) Cube sampled format:Unknown
-             134:             TypePointer UniformConstant 133
- 135(g_tTexcdu4):    134(ptr) Variable UniformConstant
-             138:             TypeSampledImage 133
-  196(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
-             197:             TypePointer Function 196(PS_OUTPUT)
-             199:    6(float) Constant 1065353216
-             200:    7(fvec4) ConstantComposite 199 199 199 199
-             202:             TypePointer Function 6(float)
-             204:             TypePointer Output 7(fvec4)
-      205(Color):    204(ptr) Variable Output
-             208:             TypePointer Output 6(float)
-      209(Depth):    208(ptr) Variable Output
-  213(g_sSamp2d):     15(ptr) Variable UniformConstant
-             214:             TypeImage 6(float) 1D sampled format:Unknown
-             215:             TypePointer UniformConstant 214
-216(g_tTex1df4a):    215(ptr) Variable UniformConstant
- 217(g_tTex1df4):    215(ptr) Variable UniformConstant
-             218:             TypeImage 24(int) 1D sampled format:Unknown
-             219:             TypePointer UniformConstant 218
- 220(g_tTex1di4):    219(ptr) Variable UniformConstant
-             221:             TypeImage 39(int) 1D sampled format:Unknown
-             222:             TypePointer UniformConstant 221
- 223(g_tTex1du4):    222(ptr) Variable UniformConstant
-             224:             TypeImage 6(float) 3D sampled format:Unknown
-             225:             TypePointer UniformConstant 224
- 226(g_tTex3df4):    225(ptr) Variable UniformConstant
-             227:             TypeImage 24(int) 3D sampled format:Unknown
-             228:             TypePointer UniformConstant 227
- 229(g_tTex3di4):    228(ptr) Variable UniformConstant
-             230:             TypeImage 39(int) 3D sampled format:Unknown
-             231:             TypePointer UniformConstant 230
- 232(g_tTex3du4):    231(ptr) Variable UniformConstant
-             233:             TypePointer UniformConstant 6(float)
-         234(c1):    233(ptr) Variable UniformConstant
-             235:             TypePointer UniformConstant 7(fvec4)
-         236(c4):    235(ptr) Variable UniformConstant
+              21:             TypeVector 6(float) 3
+     22($Global):             TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4)
+              23:             TypePointer Uniform 22($Global)
+              24:     23(ptr) Variable Uniform
+              25:             TypeInt 32 1
+              26:     25(int) Constant 1
+              27:             TypePointer Uniform 20(fvec2)
+              30:     25(int) Constant 0
+              32:             TypeVector 25(int) 4
+              33:             TypePointer Function 32(ivec4)
+              35:             TypeImage 25(int) 2D sampled format:Unknown
+              36:             TypePointer UniformConstant 35
+  37(g_tTex2di4):     36(ptr) Variable UniformConstant
+              40:             TypeSampledImage 35
+              45:             TypeInt 32 0
+              46:             TypeVector 45(int) 4
+              47:             TypePointer Function 46(ivec4)
+              49:             TypeImage 45(int) 2D sampled format:Unknown
+              50:             TypePointer UniformConstant 49
+  51(g_tTex2du4):     50(ptr) Variable UniformConstant
+              54:             TypeSampledImage 49
+              86:     25(int) Constant 2
+             108:     25(int) Constant 3
+             125:             TypeImage 6(float) Cube sampled format:Unknown
+             126:             TypePointer UniformConstant 125
+ 127(g_tTexcdf4):    126(ptr) Variable UniformConstant
+             130:             TypeSampledImage 125
+             132:             TypePointer Uniform 21(fvec3)
+             137:             TypeImage 25(int) Cube sampled format:Unknown
+             138:             TypePointer UniformConstant 137
+ 139(g_tTexcdi4):    138(ptr) Variable UniformConstant
+             142:             TypeSampledImage 137
+             148:             TypeImage 45(int) Cube sampled format:Unknown
+             149:             TypePointer UniformConstant 148
+ 150(g_tTexcdu4):    149(ptr) Variable UniformConstant
+             153:             TypeSampledImage 148
+  221(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+             222:             TypePointer Function 221(PS_OUTPUT)
+             224:    6(float) Constant 1065353216
+             225:    7(fvec4) ConstantComposite 224 224 224 224
+             227:             TypePointer Function 6(float)
+             229:             TypePointer Output 7(fvec4)
+      230(Color):    229(ptr) Variable Output
+             233:             TypePointer Output 6(float)
+      234(Depth):    233(ptr) Variable Output
+  238(g_sSamp2d):     15(ptr) Variable UniformConstant
+             239:             TypeImage 6(float) 1D sampled format:Unknown
+             240:             TypePointer UniformConstant 239
+241(g_tTex1df4a):    240(ptr) Variable UniformConstant
+ 242(g_tTex1df4):    240(ptr) Variable UniformConstant
+             243:             TypeImage 25(int) 1D sampled format:Unknown
+             244:             TypePointer UniformConstant 243
+ 245(g_tTex1di4):    244(ptr) Variable UniformConstant
+             246:             TypeImage 45(int) 1D sampled format:Unknown
+             247:             TypePointer UniformConstant 246
+ 248(g_tTex1du4):    247(ptr) Variable UniformConstant
+             249:             TypeImage 6(float) 3D sampled format:Unknown
+             250:             TypePointer UniformConstant 249
+ 251(g_tTex3df4):    250(ptr) Variable UniformConstant
+             252:             TypeImage 25(int) 3D sampled format:Unknown
+             253:             TypePointer UniformConstant 252
+ 254(g_tTex3di4):    253(ptr) Variable UniformConstant
+             255:             TypeImage 45(int) 3D sampled format:Unknown
+             256:             TypePointer UniformConstant 255
+ 257(g_tTex3du4):    256(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
       9(txval00):      8(ptr) Variable Function
-     29(txval01):     28(ptr) Variable Function
-     42(txval02):     41(ptr) Variable Function
-     52(txval10):      8(ptr) Variable Function
-     59(txval11):     28(ptr) Variable Function
-     65(txval12):     41(ptr) Variable Function
-     71(txval20):      8(ptr) Variable Function
-     78(txval21):     28(ptr) Variable Function
-     84(txval22):     41(ptr) Variable Function
-     90(txval30):      8(ptr) Variable Function
-     97(txval31):     28(ptr) Variable Function
-    103(txval32):     41(ptr) Variable Function
-    109(txval40):      8(ptr) Variable Function
-    122(txval41):     28(ptr) Variable Function
-    132(txval42):     41(ptr) Variable Function
-    142(txval50):      8(ptr) Variable Function
-    148(txval51):     28(ptr) Variable Function
-    154(txval52):     41(ptr) Variable Function
-    160(txval60):      8(ptr) Variable Function
-    166(txval61):     28(ptr) Variable Function
-    172(txval62):     41(ptr) Variable Function
-    178(txval70):      8(ptr) Variable Function
-    184(txval71):     28(ptr) Variable Function
-    190(txval72):     41(ptr) Variable Function
-      198(psout):    197(ptr) Variable Function
+     34(txval01):     33(ptr) Variable Function
+     48(txval02):     47(ptr) Variable Function
+     59(txval10):      8(ptr) Variable Function
+     66(txval11):     33(ptr) Variable Function
+     73(txval12):     47(ptr) Variable Function
+     80(txval20):      8(ptr) Variable Function
+     88(txval21):     33(ptr) Variable Function
+     95(txval22):     47(ptr) Variable Function
+    102(txval30):      8(ptr) Variable Function
+    110(txval31):     33(ptr) Variable Function
+    117(txval32):     47(ptr) Variable Function
+    124(txval40):      8(ptr) Variable Function
+    136(txval41):     33(ptr) Variable Function
+    147(txval42):     47(ptr) Variable Function
+    158(txval50):      8(ptr) Variable Function
+    165(txval51):     33(ptr) Variable Function
+    172(txval52):     47(ptr) Variable Function
+    179(txval60):      8(ptr) Variable Function
+    186(txval61):     33(ptr) Variable Function
+    193(txval62):     47(ptr) Variable Function
+    200(txval70):      8(ptr) Variable Function
+    207(txval71):     33(ptr) Variable Function
+    214(txval72):     47(ptr) Variable Function
+      223(psout):    222(ptr) Variable Function
               13:          10 Load 12(g_tTex2df4)
               17:          14 Load 16(g_sSamp)
               19:          18 SampledImage 13 17
-              23:   20(fvec2) Load 22(c2)
-              26:    7(fvec4) ImageGather 19 23 25
-                              Store 9(txval00) 26
-              33:          30 Load 32(g_tTex2di4)
-              34:          14 Load 16(g_sSamp)
-              36:          35 SampledImage 33 34
-              37:   20(fvec2) Load 22(c2)
-              38:   27(ivec4) ImageGather 36 37 25
-                              Store 29(txval01) 38
-              46:          43 Load 45(g_tTex2du4)
-              47:          14 Load 16(g_sSamp)
-              49:          48 SampledImage 46 47
-              50:   20(fvec2) Load 22(c2)
-              51:   40(ivec4) ImageGather 49 50 25
-                              Store 42(txval02) 51
-              53:          10 Load 12(g_tTex2df4)
-              54:          14 Load 16(g_sSamp)
-              55:          18 SampledImage 53 54
-              56:   20(fvec2) Load 22(c2)
-              58:    7(fvec4) ImageGather 55 56 57
-                              Store 52(txval10) 58
-              60:          30 Load 32(g_tTex2di4)
+              28:     27(ptr) AccessChain 24 26
+              29:   20(fvec2) Load 28
+              31:    7(fvec4) ImageGather 19 29 30
+                              Store 9(txval00) 31
+              38:          35 Load 37(g_tTex2di4)
+              39:          14 Load 16(g_sSamp)
+              41:          40 SampledImage 38 39
+              42:     27(ptr) AccessChain 24 26
+              43:   20(fvec2) Load 42
+              44:   32(ivec4) ImageGather 41 43 30
+                              Store 34(txval01) 44
+              52:          49 Load 51(g_tTex2du4)
+              53:          14 Load 16(g_sSamp)
+              55:          54 SampledImage 52 53
+              56:     27(ptr) AccessChain 24 26
+              57:   20(fvec2) Load 56
+              58:   46(ivec4) ImageGather 55 57 30
+                              Store 48(txval02) 58
+              60:          10 Load 12(g_tTex2df4)
               61:          14 Load 16(g_sSamp)
-              62:          35 SampledImage 60 61
-              63:   20(fvec2) Load 22(c2)
-              64:   27(ivec4) ImageGather 62 63 57
-                              Store 59(txval11) 64
-              66:          43 Load 45(g_tTex2du4)
-              67:          14 Load 16(g_sSamp)
-              68:          48 SampledImage 66 67
-              69:   20(fvec2) Load 22(c2)
-              70:   40(ivec4) ImageGather 68 69 57
-                              Store 65(txval12) 70
-              72:          10 Load 12(g_tTex2df4)
-              73:          14 Load 16(g_sSamp)
-              74:          18 SampledImage 72 73
-              75:   20(fvec2) Load 22(c2)
-              77:    7(fvec4) ImageGather 74 75 76
-                              Store 71(txval20) 77
-              79:          30 Load 32(g_tTex2di4)
-              80:          14 Load 16(g_sSamp)
-              81:          35 SampledImage 79 80
-              82:   20(fvec2) Load 22(c2)
-              83:   27(ivec4) ImageGather 81 82 76
-                              Store 78(txval21) 83
-              85:          43 Load 45(g_tTex2du4)
-              86:          14 Load 16(g_sSamp)
-              87:          48 SampledImage 85 86
-              88:   20(fvec2) Load 22(c2)
-              89:   40(ivec4) ImageGather 87 88 76
-                              Store 84(txval22) 89
-              91:          10 Load 12(g_tTex2df4)
-              92:          14 Load 16(g_sSamp)
-              93:          18 SampledImage 91 92
-              94:   20(fvec2) Load 22(c2)
-              96:    7(fvec4) ImageGather 93 94 95
-                              Store 90(txval30) 96
-              98:          30 Load 32(g_tTex2di4)
-              99:          14 Load 16(g_sSamp)
-             100:          35 SampledImage 98 99
-             101:   20(fvec2) Load 22(c2)
-             102:   27(ivec4) ImageGather 100 101 95
-                              Store 97(txval31) 102
-             104:          43 Load 45(g_tTex2du4)
-             105:          14 Load 16(g_sSamp)
-             106:          48 SampledImage 104 105
-             107:   20(fvec2) Load 22(c2)
-             108:   40(ivec4) ImageGather 106 107 95
-                              Store 103(txval32) 108
-             113:         110 Load 112(g_tTexcdf4)
-             114:          14 Load 16(g_sSamp)
-             116:         115 SampledImage 113 114
-             120:  117(fvec3) Load 119(c3)
-             121:    7(fvec4) ImageGather 116 120 25
-                              Store 109(txval40) 121
-             126:         123 Load 125(g_tTexcdi4)
-             127:          14 Load 16(g_sSamp)
-             129:         128 SampledImage 126 127
-             130:  117(fvec3) Load 119(c3)
-             131:   27(ivec4) ImageGather 129 130 25
-                              Store 122(txval41) 131
-             136:         133 Load 135(g_tTexcdu4)
-             137:          14 Load 16(g_sSamp)
-             139:         138 SampledImage 136 137
-             140:  117(fvec3) Load 119(c3)
-             141:   40(ivec4) ImageGather 139 140 25
-                              Store 132(txval42) 141
-             143:         110 Load 112(g_tTexcdf4)
-             144:          14 Load 16(g_sSamp)
-             145:         115 SampledImage 143 144
-             146:  117(fvec3) Load 119(c3)
-             147:    7(fvec4) ImageGather 145 146 57
-                              Store 142(txval50) 147
-             149:         123 Load 125(g_tTexcdi4)
-             150:          14 Load 16(g_sSamp)
-             151:         128 SampledImage 149 150
-             152:  117(fvec3) Load 119(c3)
-             153:   27(ivec4) ImageGather 151 152 57
-                              Store 148(txval51) 153
-             155:         133 Load 135(g_tTexcdu4)
-             156:          14 Load 16(g_sSamp)
-             157:         138 SampledImage 155 156
-             158:  117(fvec3) Load 119(c3)
-             159:   40(ivec4) ImageGather 157 158 57
-                              Store 154(txval52) 159
-             161:         110 Load 112(g_tTexcdf4)
-             162:          14 Load 16(g_sSamp)
-             163:         115 SampledImage 161 162
-             164:  117(fvec3) Load 119(c3)
-             165:    7(fvec4) ImageGather 163 164 76
-                              Store 160(txval60) 165
-             167:         123 Load 125(g_tTexcdi4)
-             168:          14 Load 16(g_sSamp)
-             169:         128 SampledImage 167 168
-             170:  117(fvec3) Load 119(c3)
-             171:   27(ivec4) ImageGather 169 170 76
-                              Store 166(txval61) 171
-             173:         133 Load 135(g_tTexcdu4)
+              62:          18 SampledImage 60 61
+              63:     27(ptr) AccessChain 24 26
+              64:   20(fvec2) Load 63
+              65:    7(fvec4) ImageGather 62 64 26
+                              Store 59(txval10) 65
+              67:          35 Load 37(g_tTex2di4)
+              68:          14 Load 16(g_sSamp)
+              69:          40 SampledImage 67 68
+              70:     27(ptr) AccessChain 24 26
+              71:   20(fvec2) Load 70
+              72:   32(ivec4) ImageGather 69 71 26
+                              Store 66(txval11) 72
+              74:          49 Load 51(g_tTex2du4)
+              75:          14 Load 16(g_sSamp)
+              76:          54 SampledImage 74 75
+              77:     27(ptr) AccessChain 24 26
+              78:   20(fvec2) Load 77
+              79:   46(ivec4) ImageGather 76 78 26
+                              Store 73(txval12) 79
+              81:          10 Load 12(g_tTex2df4)
+              82:          14 Load 16(g_sSamp)
+              83:          18 SampledImage 81 82
+              84:     27(ptr) AccessChain 24 26
+              85:   20(fvec2) Load 84
+              87:    7(fvec4) ImageGather 83 85 86
+                              Store 80(txval20) 87
+              89:          35 Load 37(g_tTex2di4)
+              90:          14 Load 16(g_sSamp)
+              91:          40 SampledImage 89 90
+              92:     27(ptr) AccessChain 24 26
+              93:   20(fvec2) Load 92
+              94:   32(ivec4) ImageGather 91 93 86
+                              Store 88(txval21) 94
+              96:          49 Load 51(g_tTex2du4)
+              97:          14 Load 16(g_sSamp)
+              98:          54 SampledImage 96 97
+              99:     27(ptr) AccessChain 24 26
+             100:   20(fvec2) Load 99
+             101:   46(ivec4) ImageGather 98 100 86
+                              Store 95(txval22) 101
+             103:          10 Load 12(g_tTex2df4)
+             104:          14 Load 16(g_sSamp)
+             105:          18 SampledImage 103 104
+             106:     27(ptr) AccessChain 24 26
+             107:   20(fvec2) Load 106
+             109:    7(fvec4) ImageGather 105 107 108
+                              Store 102(txval30) 109
+             111:          35 Load 37(g_tTex2di4)
+             112:          14 Load 16(g_sSamp)
+             113:          40 SampledImage 111 112
+             114:     27(ptr) AccessChain 24 26
+             115:   20(fvec2) Load 114
+             116:   32(ivec4) ImageGather 113 115 108
+                              Store 110(txval31) 116
+             118:          49 Load 51(g_tTex2du4)
+             119:          14 Load 16(g_sSamp)
+             120:          54 SampledImage 118 119
+             121:     27(ptr) AccessChain 24 26
+             122:   20(fvec2) Load 121
+             123:   46(ivec4) ImageGather 120 122 108
+                              Store 117(txval32) 123
+             128:         125 Load 127(g_tTexcdf4)
+             129:          14 Load 16(g_sSamp)
+             131:         130 SampledImage 128 129
+             133:    132(ptr) AccessChain 24 86
+             134:   21(fvec3) Load 133
+             135:    7(fvec4) ImageGather 131 134 30
+                              Store 124(txval40) 135
+             140:         137 Load 139(g_tTexcdi4)
+             141:          14 Load 16(g_sSamp)
+             143:         142 SampledImage 140 141
+             144:    132(ptr) AccessChain 24 86
+             145:   21(fvec3) Load 144
+             146:   32(ivec4) ImageGather 143 145 30
+                              Store 136(txval41) 146
+             151:         148 Load 150(g_tTexcdu4)
+             152:          14 Load 16(g_sSamp)
+             154:         153 SampledImage 151 152
+             155:    132(ptr) AccessChain 24 86
+             156:   21(fvec3) Load 155
+             157:   46(ivec4) ImageGather 154 156 30
+                              Store 147(txval42) 157
+             159:         125 Load 127(g_tTexcdf4)
+             160:          14 Load 16(g_sSamp)
+             161:         130 SampledImage 159 160
+             162:    132(ptr) AccessChain 24 86
+             163:   21(fvec3) Load 162
+             164:    7(fvec4) ImageGather 161 163 26
+                              Store 158(txval50) 164
+             166:         137 Load 139(g_tTexcdi4)
+             167:          14 Load 16(g_sSamp)
+             168:         142 SampledImage 166 167
+             169:    132(ptr) AccessChain 24 86
+             170:   21(fvec3) Load 169
+             171:   32(ivec4) ImageGather 168 170 26
+                              Store 165(txval51) 171
+             173:         148 Load 150(g_tTexcdu4)
              174:          14 Load 16(g_sSamp)
-             175:         138 SampledImage 173 174
-             176:  117(fvec3) Load 119(c3)
-             177:   40(ivec4) ImageGather 175 176 76
-                              Store 172(txval62) 177
-             179:         110 Load 112(g_tTexcdf4)
-             180:          14 Load 16(g_sSamp)
-             181:         115 SampledImage 179 180
-             182:  117(fvec3) Load 119(c3)
-             183:    7(fvec4) ImageGather 181 182 95
-                              Store 178(txval70) 183
-             185:         123 Load 125(g_tTexcdi4)
-             186:          14 Load 16(g_sSamp)
-             187:         128 SampledImage 185 186
-             188:  117(fvec3) Load 119(c3)
-             189:   27(ivec4) ImageGather 187 188 95
-                              Store 184(txval71) 189
-             191:         133 Load 135(g_tTexcdu4)
-             192:          14 Load 16(g_sSamp)
-             193:         138 SampledImage 191 192
-             194:  117(fvec3) Load 119(c3)
-             195:   40(ivec4) ImageGather 193 194 95
-                              Store 190(txval72) 195
-             201:      8(ptr) AccessChain 198(psout) 25
-                              Store 201 200
-             203:    202(ptr) AccessChain 198(psout) 57
-                              Store 203 199
-             206:      8(ptr) AccessChain 198(psout) 25
-             207:    7(fvec4) Load 206
-                              Store 205(Color) 207
-             210:    202(ptr) AccessChain 198(psout) 57
-             211:    6(float) Load 210
-                              Store 209(Depth) 211
+             175:         153 SampledImage 173 174
+             176:    132(ptr) AccessChain 24 86
+             177:   21(fvec3) Load 176
+             178:   46(ivec4) ImageGather 175 177 26
+                              Store 172(txval52) 178
+             180:         125 Load 127(g_tTexcdf4)
+             181:          14 Load 16(g_sSamp)
+             182:         130 SampledImage 180 181
+             183:    132(ptr) AccessChain 24 86
+             184:   21(fvec3) Load 183
+             185:    7(fvec4) ImageGather 182 184 86
+                              Store 179(txval60) 185
+             187:         137 Load 139(g_tTexcdi4)
+             188:          14 Load 16(g_sSamp)
+             189:         142 SampledImage 187 188
+             190:    132(ptr) AccessChain 24 86
+             191:   21(fvec3) Load 190
+             192:   32(ivec4) ImageGather 189 191 86
+                              Store 186(txval61) 192
+             194:         148 Load 150(g_tTexcdu4)
+             195:          14 Load 16(g_sSamp)
+             196:         153 SampledImage 194 195
+             197:    132(ptr) AccessChain 24 86
+             198:   21(fvec3) Load 197
+             199:   46(ivec4) ImageGather 196 198 86
+                              Store 193(txval62) 199
+             201:         125 Load 127(g_tTexcdf4)
+             202:          14 Load 16(g_sSamp)
+             203:         130 SampledImage 201 202
+             204:    132(ptr) AccessChain 24 86
+             205:   21(fvec3) Load 204
+             206:    7(fvec4) ImageGather 203 205 108
+                              Store 200(txval70) 206
+             208:         137 Load 139(g_tTexcdi4)
+             209:          14 Load 16(g_sSamp)
+             210:         142 SampledImage 208 209
+             211:    132(ptr) AccessChain 24 86
+             212:   21(fvec3) Load 211
+             213:   32(ivec4) ImageGather 210 212 108
+                              Store 207(txval71) 213
+             215:         148 Load 150(g_tTexcdu4)
+             216:          14 Load 16(g_sSamp)
+             217:         153 SampledImage 215 216
+             218:    132(ptr) AccessChain 24 86
+             219:   21(fvec3) Load 218
+             220:   46(ivec4) ImageGather 217 219 108
+                              Store 214(txval72) 220
+             226:      8(ptr) AccessChain 223(psout) 30
+                              Store 226 225
+             228:    227(ptr) AccessChain 223(psout) 26
+                              Store 228 224
+             231:      8(ptr) AccessChain 223(psout) 30
+             232:    7(fvec4) Load 231
+                              Store 230(Color) 232
+             235:    227(ptr) AccessChain 223(psout) 26
+             236:    6(float) Load 235
+                              Store 234(Depth) 236
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
index a869ba731..a04010f36 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.gatherRGBA.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:39  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:39  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:39    Function Parameters: 
 0:?     Sequence
 0:46      Sequence
@@ -12,8 +12,14 @@ gl_FragCoord origin is upper left
 0:46            Construct combined texture-sampler (temp sampler2D)
 0:46              'g_tTex2df4' (uniform texture2D)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:46            'c2' (uniform 2-component vector of float)
-0:46            'o2' (uniform 2-component vector of int)
+0:46            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46              Constant:
+0:46                1 (const uint)
+0:46            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46              Constant:
+0:46                5 (const uint)
 0:46            Constant:
 0:46              0 (const int)
 0:47      Sequence
@@ -23,8 +29,14 @@ gl_FragCoord origin is upper left
 0:47            Construct combined texture-sampler (temp isampler2D)
 0:47              'g_tTex2di4' (uniform itexture2D)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:47            'c2' (uniform 2-component vector of float)
-0:47            'o2' (uniform 2-component vector of int)
+0:47            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:47              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:47              Constant:
+0:47                1 (const uint)
+0:47            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:47              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:47              Constant:
+0:47                5 (const uint)
 0:47            Constant:
 0:47              0 (const int)
 0:48      Sequence
@@ -34,8 +46,14 @@ gl_FragCoord origin is upper left
 0:48            Construct combined texture-sampler (temp usampler2D)
 0:48              'g_tTex2du4' (uniform utexture2D)
 0:48              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:48            'c2' (uniform 2-component vector of float)
-0:48            'o2' (uniform 2-component vector of int)
+0:48            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:48              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:48              Constant:
+0:48                1 (const uint)
+0:48            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:48              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:48              Constant:
+0:48                5 (const uint)
 0:48            Constant:
 0:48              0 (const int)
 0:50      Sequence
@@ -45,12 +63,27 @@ gl_FragCoord origin is upper left
 0:50            Construct combined texture-sampler (temp sampler2D)
 0:50              'g_tTex2df4' (uniform texture2D)
 0:50              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:50            'c2' (uniform 2-component vector of float)
+0:50            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:50              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50              Constant:
+0:50                1 (const uint)
 0:50            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:50              'o2' (uniform 2-component vector of int)
-0:50              'o2' (uniform 2-component vector of int)
-0:50              'o2' (uniform 2-component vector of int)
-0:50              'o2' (uniform 2-component vector of int)
+0:50              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:50                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50                Constant:
+0:50                  5 (const uint)
+0:50              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:50                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50                Constant:
+0:50                  5 (const uint)
+0:50              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:50                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50                Constant:
+0:50                  5 (const uint)
+0:50              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:50                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50                Constant:
+0:50                  5 (const uint)
 0:50            Constant:
 0:50              0 (const int)
 0:51      Sequence
@@ -60,12 +93,27 @@ gl_FragCoord origin is upper left
 0:51            Construct combined texture-sampler (temp isampler2D)
 0:51              'g_tTex2di4' (uniform itexture2D)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:51            'c2' (uniform 2-component vector of float)
+0:51            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:51              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51              Constant:
+0:51                1 (const uint)
 0:51            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:51              'o2' (uniform 2-component vector of int)
-0:51              'o2' (uniform 2-component vector of int)
-0:51              'o2' (uniform 2-component vector of int)
-0:51              'o2' (uniform 2-component vector of int)
+0:51              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:51                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51                Constant:
+0:51                  5 (const uint)
+0:51              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:51                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51                Constant:
+0:51                  5 (const uint)
+0:51              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:51                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51                Constant:
+0:51                  5 (const uint)
+0:51              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:51                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51                Constant:
+0:51                  5 (const uint)
 0:51            Constant:
 0:51              0 (const int)
 0:52      Sequence
@@ -75,12 +123,27 @@ gl_FragCoord origin is upper left
 0:52            Construct combined texture-sampler (temp usampler2D)
 0:52              'g_tTex2du4' (uniform utexture2D)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:52            'c2' (uniform 2-component vector of float)
+0:52            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:52              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52              Constant:
+0:52                1 (const uint)
 0:52            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:52              'o2' (uniform 2-component vector of int)
-0:52              'o2' (uniform 2-component vector of int)
-0:52              'o2' (uniform 2-component vector of int)
-0:52              'o2' (uniform 2-component vector of int)
+0:52              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:52                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52                Constant:
+0:52                  5 (const uint)
+0:52              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:52                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52                Constant:
+0:52                  5 (const uint)
+0:52              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:52                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52                Constant:
+0:52                  5 (const uint)
+0:52              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:52                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52                Constant:
+0:52                  5 (const uint)
 0:52            Constant:
 0:52              0 (const int)
 0:62      Sequence
@@ -90,8 +153,14 @@ gl_FragCoord origin is upper left
 0:62            Construct combined texture-sampler (temp sampler2D)
 0:62              'g_tTex2df4' (uniform texture2D)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:62            'c2' (uniform 2-component vector of float)
-0:62            'o2' (uniform 2-component vector of int)
+0:62            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62              Constant:
+0:62                1 (const uint)
+0:62            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62              Constant:
+0:62                5 (const uint)
 0:62            Constant:
 0:62              1 (const int)
 0:63      Sequence
@@ -101,8 +170,14 @@ gl_FragCoord origin is upper left
 0:63            Construct combined texture-sampler (temp isampler2D)
 0:63              'g_tTex2di4' (uniform itexture2D)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:63            'c2' (uniform 2-component vector of float)
-0:63            'o2' (uniform 2-component vector of int)
+0:63            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63              Constant:
+0:63                1 (const uint)
+0:63            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63              Constant:
+0:63                5 (const uint)
 0:63            Constant:
 0:63              1 (const int)
 0:64      Sequence
@@ -112,8 +187,14 @@ gl_FragCoord origin is upper left
 0:64            Construct combined texture-sampler (temp usampler2D)
 0:64              'g_tTex2du4' (uniform utexture2D)
 0:64              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:64            'c2' (uniform 2-component vector of float)
-0:64            'o2' (uniform 2-component vector of int)
+0:64            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64              Constant:
+0:64                1 (const uint)
+0:64            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64              Constant:
+0:64                5 (const uint)
 0:64            Constant:
 0:64              1 (const int)
 0:66      Sequence
@@ -123,12 +204,27 @@ gl_FragCoord origin is upper left
 0:66            Construct combined texture-sampler (temp sampler2D)
 0:66              'g_tTex2df4' (uniform texture2D)
 0:66              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:66            'c2' (uniform 2-component vector of float)
+0:66            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66              Constant:
+0:66                1 (const uint)
 0:66            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:66              'o2' (uniform 2-component vector of int)
-0:66              'o2' (uniform 2-component vector of int)
-0:66              'o2' (uniform 2-component vector of int)
-0:66              'o2' (uniform 2-component vector of int)
+0:66              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:66                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66                Constant:
+0:66                  5 (const uint)
+0:66              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:66                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66                Constant:
+0:66                  5 (const uint)
+0:66              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:66                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66                Constant:
+0:66                  5 (const uint)
+0:66              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:66                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66                Constant:
+0:66                  5 (const uint)
 0:66            Constant:
 0:66              1 (const int)
 0:67      Sequence
@@ -138,12 +234,27 @@ gl_FragCoord origin is upper left
 0:67            Construct combined texture-sampler (temp isampler2D)
 0:67              'g_tTex2di4' (uniform itexture2D)
 0:67              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:67            'c2' (uniform 2-component vector of float)
+0:67            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:67              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67              Constant:
+0:67                1 (const uint)
 0:67            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:67              'o2' (uniform 2-component vector of int)
-0:67              'o2' (uniform 2-component vector of int)
-0:67              'o2' (uniform 2-component vector of int)
-0:67              'o2' (uniform 2-component vector of int)
+0:67              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:67                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67                Constant:
+0:67                  5 (const uint)
+0:67              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:67                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67                Constant:
+0:67                  5 (const uint)
+0:67              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:67                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67                Constant:
+0:67                  5 (const uint)
+0:67              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:67                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67                Constant:
+0:67                  5 (const uint)
 0:67            Constant:
 0:67              1 (const int)
 0:68      Sequence
@@ -153,12 +264,27 @@ gl_FragCoord origin is upper left
 0:68            Construct combined texture-sampler (temp usampler2D)
 0:68              'g_tTex2du4' (uniform utexture2D)
 0:68              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:68            'c2' (uniform 2-component vector of float)
+0:68            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:68              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68              Constant:
+0:68                1 (const uint)
 0:68            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:68              'o2' (uniform 2-component vector of int)
-0:68              'o2' (uniform 2-component vector of int)
-0:68              'o2' (uniform 2-component vector of int)
-0:68              'o2' (uniform 2-component vector of int)
+0:68              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:68                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68                Constant:
+0:68                  5 (const uint)
+0:68              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:68                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68                Constant:
+0:68                  5 (const uint)
+0:68              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:68                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68                Constant:
+0:68                  5 (const uint)
+0:68              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:68                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68                Constant:
+0:68                  5 (const uint)
 0:68            Constant:
 0:68              1 (const int)
 0:78      Sequence
@@ -168,8 +294,14 @@ gl_FragCoord origin is upper left
 0:78            Construct combined texture-sampler (temp sampler2D)
 0:78              'g_tTex2df4' (uniform texture2D)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:78            'c2' (uniform 2-component vector of float)
-0:78            'o2' (uniform 2-component vector of int)
+0:78            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:78              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78              Constant:
+0:78                1 (const uint)
+0:78            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78              Constant:
+0:78                5 (const uint)
 0:78            Constant:
 0:78              2 (const int)
 0:79      Sequence
@@ -179,8 +311,14 @@ gl_FragCoord origin is upper left
 0:79            Construct combined texture-sampler (temp isampler2D)
 0:79              'g_tTex2di4' (uniform itexture2D)
 0:79              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:79            'c2' (uniform 2-component vector of float)
-0:79            'o2' (uniform 2-component vector of int)
+0:79            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:79              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:79              Constant:
+0:79                1 (const uint)
+0:79            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:79              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:79              Constant:
+0:79                5 (const uint)
 0:79            Constant:
 0:79              2 (const int)
 0:80      Sequence
@@ -190,8 +328,14 @@ gl_FragCoord origin is upper left
 0:80            Construct combined texture-sampler (temp usampler2D)
 0:80              'g_tTex2du4' (uniform utexture2D)
 0:80              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:80            'c2' (uniform 2-component vector of float)
-0:80            'o2' (uniform 2-component vector of int)
+0:80            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:80              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:80              Constant:
+0:80                1 (const uint)
+0:80            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:80              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:80              Constant:
+0:80                5 (const uint)
 0:80            Constant:
 0:80              2 (const int)
 0:82      Sequence
@@ -201,12 +345,27 @@ gl_FragCoord origin is upper left
 0:82            Construct combined texture-sampler (temp sampler2D)
 0:82              'g_tTex2df4' (uniform texture2D)
 0:82              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:82            'c2' (uniform 2-component vector of float)
+0:82            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:82              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82              Constant:
+0:82                1 (const uint)
 0:82            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:82              'o2' (uniform 2-component vector of int)
-0:82              'o2' (uniform 2-component vector of int)
-0:82              'o2' (uniform 2-component vector of int)
-0:82              'o2' (uniform 2-component vector of int)
+0:82              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:82                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82                Constant:
+0:82                  5 (const uint)
+0:82              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:82                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82                Constant:
+0:82                  5 (const uint)
+0:82              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:82                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82                Constant:
+0:82                  5 (const uint)
+0:82              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:82                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82                Constant:
+0:82                  5 (const uint)
 0:82            Constant:
 0:82              2 (const int)
 0:83      Sequence
@@ -216,12 +375,27 @@ gl_FragCoord origin is upper left
 0:83            Construct combined texture-sampler (temp isampler2D)
 0:83              'g_tTex2di4' (uniform itexture2D)
 0:83              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:83            'c2' (uniform 2-component vector of float)
+0:83            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:83              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83              Constant:
+0:83                1 (const uint)
 0:83            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:83              'o2' (uniform 2-component vector of int)
-0:83              'o2' (uniform 2-component vector of int)
-0:83              'o2' (uniform 2-component vector of int)
-0:83              'o2' (uniform 2-component vector of int)
+0:83              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83                Constant:
+0:83                  5 (const uint)
+0:83              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83                Constant:
+0:83                  5 (const uint)
+0:83              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83                Constant:
+0:83                  5 (const uint)
+0:83              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83                Constant:
+0:83                  5 (const uint)
 0:83            Constant:
 0:83              2 (const int)
 0:84      Sequence
@@ -231,12 +405,27 @@ gl_FragCoord origin is upper left
 0:84            Construct combined texture-sampler (temp usampler2D)
 0:84              'g_tTex2du4' (uniform utexture2D)
 0:84              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:84            'c2' (uniform 2-component vector of float)
+0:84            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:84              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84              Constant:
+0:84                1 (const uint)
 0:84            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:84              'o2' (uniform 2-component vector of int)
-0:84              'o2' (uniform 2-component vector of int)
-0:84              'o2' (uniform 2-component vector of int)
-0:84              'o2' (uniform 2-component vector of int)
+0:84              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:84                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84                Constant:
+0:84                  5 (const uint)
+0:84              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:84                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84                Constant:
+0:84                  5 (const uint)
+0:84              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:84                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84                Constant:
+0:84                  5 (const uint)
+0:84              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:84                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84                Constant:
+0:84                  5 (const uint)
 0:84            Constant:
 0:84              2 (const int)
 0:94      Sequence
@@ -246,8 +435,14 @@ gl_FragCoord origin is upper left
 0:94            Construct combined texture-sampler (temp sampler2D)
 0:94              'g_tTex2df4' (uniform texture2D)
 0:94              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:94            'c2' (uniform 2-component vector of float)
-0:94            'o2' (uniform 2-component vector of int)
+0:94            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:94              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94              Constant:
+0:94                1 (const uint)
+0:94            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94              Constant:
+0:94                5 (const uint)
 0:94            Constant:
 0:94              3 (const int)
 0:95      Sequence
@@ -257,8 +452,14 @@ gl_FragCoord origin is upper left
 0:95            Construct combined texture-sampler (temp isampler2D)
 0:95              'g_tTex2di4' (uniform itexture2D)
 0:95              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:95            'c2' (uniform 2-component vector of float)
-0:95            'o2' (uniform 2-component vector of int)
+0:95            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:95              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:95              Constant:
+0:95                1 (const uint)
+0:95            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:95              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:95              Constant:
+0:95                5 (const uint)
 0:95            Constant:
 0:95              3 (const int)
 0:96      Sequence
@@ -268,8 +469,14 @@ gl_FragCoord origin is upper left
 0:96            Construct combined texture-sampler (temp usampler2D)
 0:96              'g_tTex2du4' (uniform utexture2D)
 0:96              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:96            'c2' (uniform 2-component vector of float)
-0:96            'o2' (uniform 2-component vector of int)
+0:96            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:96              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:96              Constant:
+0:96                1 (const uint)
+0:96            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:96              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:96              Constant:
+0:96                5 (const uint)
 0:96            Constant:
 0:96              3 (const int)
 0:98      Sequence
@@ -279,12 +486,27 @@ gl_FragCoord origin is upper left
 0:98            Construct combined texture-sampler (temp sampler2D)
 0:98              'g_tTex2df4' (uniform texture2D)
 0:98              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:98            'c2' (uniform 2-component vector of float)
+0:98            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:98              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98              Constant:
+0:98                1 (const uint)
 0:98            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:98              'o2' (uniform 2-component vector of int)
-0:98              'o2' (uniform 2-component vector of int)
-0:98              'o2' (uniform 2-component vector of int)
-0:98              'o2' (uniform 2-component vector of int)
+0:98              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:98                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98                Constant:
+0:98                  5 (const uint)
+0:98              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:98                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98                Constant:
+0:98                  5 (const uint)
+0:98              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:98                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98                Constant:
+0:98                  5 (const uint)
+0:98              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:98                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98                Constant:
+0:98                  5 (const uint)
 0:98            Constant:
 0:98              3 (const int)
 0:99      Sequence
@@ -294,12 +516,27 @@ gl_FragCoord origin is upper left
 0:99            Construct combined texture-sampler (temp isampler2D)
 0:99              'g_tTex2di4' (uniform itexture2D)
 0:99              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:99            'c2' (uniform 2-component vector of float)
+0:99            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:99              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99              Constant:
+0:99                1 (const uint)
 0:99            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:99              'o2' (uniform 2-component vector of int)
-0:99              'o2' (uniform 2-component vector of int)
-0:99              'o2' (uniform 2-component vector of int)
-0:99              'o2' (uniform 2-component vector of int)
+0:99              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:99                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99                Constant:
+0:99                  5 (const uint)
+0:99              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:99                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99                Constant:
+0:99                  5 (const uint)
+0:99              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:99                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99                Constant:
+0:99                  5 (const uint)
+0:99              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:99                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99                Constant:
+0:99                  5 (const uint)
 0:99            Constant:
 0:99              3 (const int)
 0:100      Sequence
@@ -309,12 +546,27 @@ gl_FragCoord origin is upper left
 0:100            Construct combined texture-sampler (temp usampler2D)
 0:100              'g_tTex2du4' (uniform utexture2D)
 0:100              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:100            'c2' (uniform 2-component vector of float)
+0:100            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:100              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100              Constant:
+0:100                1 (const uint)
 0:100            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:100              'o2' (uniform 2-component vector of int)
-0:100              'o2' (uniform 2-component vector of int)
-0:100              'o2' (uniform 2-component vector of int)
-0:100              'o2' (uniform 2-component vector of int)
+0:100              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:100                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100                Constant:
+0:100                  5 (const uint)
+0:100              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:100                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100                Constant:
+0:100                  5 (const uint)
+0:100              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:100                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100                Constant:
+0:100                  5 (const uint)
+0:100              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:100                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100                Constant:
+0:100                  5 (const uint)
 0:100            Constant:
 0:100              3 (const int)
 0:112      move second child to first child (temp 4-component vector of float)
@@ -365,16 +617,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'c1' (uniform float)
-0:?     'c2' (uniform 2-component vector of float)
-0:?     'c3' (uniform 3-component vector of float)
-0:?     'c4' (uniform 4-component vector of float)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -383,7 +628,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:39  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:39  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:39    Function Parameters: 
 0:?     Sequence
 0:46      Sequence
@@ -393,8 +638,14 @@ gl_FragCoord origin is upper left
 0:46            Construct combined texture-sampler (temp sampler2D)
 0:46              'g_tTex2df4' (uniform texture2D)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:46            'c2' (uniform 2-component vector of float)
-0:46            'o2' (uniform 2-component vector of int)
+0:46            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46              Constant:
+0:46                1 (const uint)
+0:46            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46              Constant:
+0:46                5 (const uint)
 0:46            Constant:
 0:46              0 (const int)
 0:47      Sequence
@@ -404,8 +655,14 @@ gl_FragCoord origin is upper left
 0:47            Construct combined texture-sampler (temp isampler2D)
 0:47              'g_tTex2di4' (uniform itexture2D)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:47            'c2' (uniform 2-component vector of float)
-0:47            'o2' (uniform 2-component vector of int)
+0:47            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:47              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:47              Constant:
+0:47                1 (const uint)
+0:47            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:47              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:47              Constant:
+0:47                5 (const uint)
 0:47            Constant:
 0:47              0 (const int)
 0:48      Sequence
@@ -415,8 +672,14 @@ gl_FragCoord origin is upper left
 0:48            Construct combined texture-sampler (temp usampler2D)
 0:48              'g_tTex2du4' (uniform utexture2D)
 0:48              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:48            'c2' (uniform 2-component vector of float)
-0:48            'o2' (uniform 2-component vector of int)
+0:48            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:48              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:48              Constant:
+0:48                1 (const uint)
+0:48            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:48              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:48              Constant:
+0:48                5 (const uint)
 0:48            Constant:
 0:48              0 (const int)
 0:50      Sequence
@@ -426,12 +689,27 @@ gl_FragCoord origin is upper left
 0:50            Construct combined texture-sampler (temp sampler2D)
 0:50              'g_tTex2df4' (uniform texture2D)
 0:50              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:50            'c2' (uniform 2-component vector of float)
+0:50            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:50              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50              Constant:
+0:50                1 (const uint)
 0:50            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:50              'o2' (uniform 2-component vector of int)
-0:50              'o2' (uniform 2-component vector of int)
-0:50              'o2' (uniform 2-component vector of int)
-0:50              'o2' (uniform 2-component vector of int)
+0:50              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:50                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50                Constant:
+0:50                  5 (const uint)
+0:50              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:50                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50                Constant:
+0:50                  5 (const uint)
+0:50              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:50                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50                Constant:
+0:50                  5 (const uint)
+0:50              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:50                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:50                Constant:
+0:50                  5 (const uint)
 0:50            Constant:
 0:50              0 (const int)
 0:51      Sequence
@@ -441,12 +719,27 @@ gl_FragCoord origin is upper left
 0:51            Construct combined texture-sampler (temp isampler2D)
 0:51              'g_tTex2di4' (uniform itexture2D)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:51            'c2' (uniform 2-component vector of float)
+0:51            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:51              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51              Constant:
+0:51                1 (const uint)
 0:51            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:51              'o2' (uniform 2-component vector of int)
-0:51              'o2' (uniform 2-component vector of int)
-0:51              'o2' (uniform 2-component vector of int)
-0:51              'o2' (uniform 2-component vector of int)
+0:51              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:51                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51                Constant:
+0:51                  5 (const uint)
+0:51              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:51                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51                Constant:
+0:51                  5 (const uint)
+0:51              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:51                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51                Constant:
+0:51                  5 (const uint)
+0:51              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:51                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51                Constant:
+0:51                  5 (const uint)
 0:51            Constant:
 0:51              0 (const int)
 0:52      Sequence
@@ -456,12 +749,27 @@ gl_FragCoord origin is upper left
 0:52            Construct combined texture-sampler (temp usampler2D)
 0:52              'g_tTex2du4' (uniform utexture2D)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:52            'c2' (uniform 2-component vector of float)
+0:52            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:52              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52              Constant:
+0:52                1 (const uint)
 0:52            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:52              'o2' (uniform 2-component vector of int)
-0:52              'o2' (uniform 2-component vector of int)
-0:52              'o2' (uniform 2-component vector of int)
-0:52              'o2' (uniform 2-component vector of int)
+0:52              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:52                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52                Constant:
+0:52                  5 (const uint)
+0:52              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:52                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52                Constant:
+0:52                  5 (const uint)
+0:52              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:52                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52                Constant:
+0:52                  5 (const uint)
+0:52              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:52                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52                Constant:
+0:52                  5 (const uint)
 0:52            Constant:
 0:52              0 (const int)
 0:62      Sequence
@@ -471,8 +779,14 @@ gl_FragCoord origin is upper left
 0:62            Construct combined texture-sampler (temp sampler2D)
 0:62              'g_tTex2df4' (uniform texture2D)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:62            'c2' (uniform 2-component vector of float)
-0:62            'o2' (uniform 2-component vector of int)
+0:62            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62              Constant:
+0:62                1 (const uint)
+0:62            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62              Constant:
+0:62                5 (const uint)
 0:62            Constant:
 0:62              1 (const int)
 0:63      Sequence
@@ -482,8 +796,14 @@ gl_FragCoord origin is upper left
 0:63            Construct combined texture-sampler (temp isampler2D)
 0:63              'g_tTex2di4' (uniform itexture2D)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:63            'c2' (uniform 2-component vector of float)
-0:63            'o2' (uniform 2-component vector of int)
+0:63            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63              Constant:
+0:63                1 (const uint)
+0:63            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63              Constant:
+0:63                5 (const uint)
 0:63            Constant:
 0:63              1 (const int)
 0:64      Sequence
@@ -493,8 +813,14 @@ gl_FragCoord origin is upper left
 0:64            Construct combined texture-sampler (temp usampler2D)
 0:64              'g_tTex2du4' (uniform utexture2D)
 0:64              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:64            'c2' (uniform 2-component vector of float)
-0:64            'o2' (uniform 2-component vector of int)
+0:64            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64              Constant:
+0:64                1 (const uint)
+0:64            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64              Constant:
+0:64                5 (const uint)
 0:64            Constant:
 0:64              1 (const int)
 0:66      Sequence
@@ -504,12 +830,27 @@ gl_FragCoord origin is upper left
 0:66            Construct combined texture-sampler (temp sampler2D)
 0:66              'g_tTex2df4' (uniform texture2D)
 0:66              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:66            'c2' (uniform 2-component vector of float)
+0:66            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66              Constant:
+0:66                1 (const uint)
 0:66            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:66              'o2' (uniform 2-component vector of int)
-0:66              'o2' (uniform 2-component vector of int)
-0:66              'o2' (uniform 2-component vector of int)
-0:66              'o2' (uniform 2-component vector of int)
+0:66              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:66                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66                Constant:
+0:66                  5 (const uint)
+0:66              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:66                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66                Constant:
+0:66                  5 (const uint)
+0:66              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:66                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66                Constant:
+0:66                  5 (const uint)
+0:66              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:66                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66                Constant:
+0:66                  5 (const uint)
 0:66            Constant:
 0:66              1 (const int)
 0:67      Sequence
@@ -519,12 +860,27 @@ gl_FragCoord origin is upper left
 0:67            Construct combined texture-sampler (temp isampler2D)
 0:67              'g_tTex2di4' (uniform itexture2D)
 0:67              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:67            'c2' (uniform 2-component vector of float)
+0:67            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:67              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67              Constant:
+0:67                1 (const uint)
 0:67            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:67              'o2' (uniform 2-component vector of int)
-0:67              'o2' (uniform 2-component vector of int)
-0:67              'o2' (uniform 2-component vector of int)
-0:67              'o2' (uniform 2-component vector of int)
+0:67              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:67                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67                Constant:
+0:67                  5 (const uint)
+0:67              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:67                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67                Constant:
+0:67                  5 (const uint)
+0:67              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:67                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67                Constant:
+0:67                  5 (const uint)
+0:67              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:67                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67                Constant:
+0:67                  5 (const uint)
 0:67            Constant:
 0:67              1 (const int)
 0:68      Sequence
@@ -534,12 +890,27 @@ gl_FragCoord origin is upper left
 0:68            Construct combined texture-sampler (temp usampler2D)
 0:68              'g_tTex2du4' (uniform utexture2D)
 0:68              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:68            'c2' (uniform 2-component vector of float)
+0:68            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:68              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68              Constant:
+0:68                1 (const uint)
 0:68            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:68              'o2' (uniform 2-component vector of int)
-0:68              'o2' (uniform 2-component vector of int)
-0:68              'o2' (uniform 2-component vector of int)
-0:68              'o2' (uniform 2-component vector of int)
+0:68              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:68                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68                Constant:
+0:68                  5 (const uint)
+0:68              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:68                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68                Constant:
+0:68                  5 (const uint)
+0:68              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:68                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68                Constant:
+0:68                  5 (const uint)
+0:68              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:68                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68                Constant:
+0:68                  5 (const uint)
 0:68            Constant:
 0:68              1 (const int)
 0:78      Sequence
@@ -549,8 +920,14 @@ gl_FragCoord origin is upper left
 0:78            Construct combined texture-sampler (temp sampler2D)
 0:78              'g_tTex2df4' (uniform texture2D)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:78            'c2' (uniform 2-component vector of float)
-0:78            'o2' (uniform 2-component vector of int)
+0:78            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:78              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78              Constant:
+0:78                1 (const uint)
+0:78            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78              Constant:
+0:78                5 (const uint)
 0:78            Constant:
 0:78              2 (const int)
 0:79      Sequence
@@ -560,8 +937,14 @@ gl_FragCoord origin is upper left
 0:79            Construct combined texture-sampler (temp isampler2D)
 0:79              'g_tTex2di4' (uniform itexture2D)
 0:79              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:79            'c2' (uniform 2-component vector of float)
-0:79            'o2' (uniform 2-component vector of int)
+0:79            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:79              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:79              Constant:
+0:79                1 (const uint)
+0:79            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:79              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:79              Constant:
+0:79                5 (const uint)
 0:79            Constant:
 0:79              2 (const int)
 0:80      Sequence
@@ -571,8 +954,14 @@ gl_FragCoord origin is upper left
 0:80            Construct combined texture-sampler (temp usampler2D)
 0:80              'g_tTex2du4' (uniform utexture2D)
 0:80              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:80            'c2' (uniform 2-component vector of float)
-0:80            'o2' (uniform 2-component vector of int)
+0:80            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:80              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:80              Constant:
+0:80                1 (const uint)
+0:80            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:80              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:80              Constant:
+0:80                5 (const uint)
 0:80            Constant:
 0:80              2 (const int)
 0:82      Sequence
@@ -582,12 +971,27 @@ gl_FragCoord origin is upper left
 0:82            Construct combined texture-sampler (temp sampler2D)
 0:82              'g_tTex2df4' (uniform texture2D)
 0:82              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:82            'c2' (uniform 2-component vector of float)
+0:82            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:82              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82              Constant:
+0:82                1 (const uint)
 0:82            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:82              'o2' (uniform 2-component vector of int)
-0:82              'o2' (uniform 2-component vector of int)
-0:82              'o2' (uniform 2-component vector of int)
-0:82              'o2' (uniform 2-component vector of int)
+0:82              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:82                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82                Constant:
+0:82                  5 (const uint)
+0:82              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:82                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82                Constant:
+0:82                  5 (const uint)
+0:82              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:82                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82                Constant:
+0:82                  5 (const uint)
+0:82              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:82                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:82                Constant:
+0:82                  5 (const uint)
 0:82            Constant:
 0:82              2 (const int)
 0:83      Sequence
@@ -597,12 +1001,27 @@ gl_FragCoord origin is upper left
 0:83            Construct combined texture-sampler (temp isampler2D)
 0:83              'g_tTex2di4' (uniform itexture2D)
 0:83              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:83            'c2' (uniform 2-component vector of float)
+0:83            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:83              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83              Constant:
+0:83                1 (const uint)
 0:83            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:83              'o2' (uniform 2-component vector of int)
-0:83              'o2' (uniform 2-component vector of int)
-0:83              'o2' (uniform 2-component vector of int)
-0:83              'o2' (uniform 2-component vector of int)
+0:83              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83                Constant:
+0:83                  5 (const uint)
+0:83              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83                Constant:
+0:83                  5 (const uint)
+0:83              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83                Constant:
+0:83                  5 (const uint)
+0:83              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:83                Constant:
+0:83                  5 (const uint)
 0:83            Constant:
 0:83              2 (const int)
 0:84      Sequence
@@ -612,12 +1031,27 @@ gl_FragCoord origin is upper left
 0:84            Construct combined texture-sampler (temp usampler2D)
 0:84              'g_tTex2du4' (uniform utexture2D)
 0:84              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:84            'c2' (uniform 2-component vector of float)
+0:84            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:84              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84              Constant:
+0:84                1 (const uint)
 0:84            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:84              'o2' (uniform 2-component vector of int)
-0:84              'o2' (uniform 2-component vector of int)
-0:84              'o2' (uniform 2-component vector of int)
-0:84              'o2' (uniform 2-component vector of int)
+0:84              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:84                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84                Constant:
+0:84                  5 (const uint)
+0:84              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:84                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84                Constant:
+0:84                  5 (const uint)
+0:84              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:84                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84                Constant:
+0:84                  5 (const uint)
+0:84              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:84                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:84                Constant:
+0:84                  5 (const uint)
 0:84            Constant:
 0:84              2 (const int)
 0:94      Sequence
@@ -627,8 +1061,14 @@ gl_FragCoord origin is upper left
 0:94            Construct combined texture-sampler (temp sampler2D)
 0:94              'g_tTex2df4' (uniform texture2D)
 0:94              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:94            'c2' (uniform 2-component vector of float)
-0:94            'o2' (uniform 2-component vector of int)
+0:94            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:94              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94              Constant:
+0:94                1 (const uint)
+0:94            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94              Constant:
+0:94                5 (const uint)
 0:94            Constant:
 0:94              3 (const int)
 0:95      Sequence
@@ -638,8 +1078,14 @@ gl_FragCoord origin is upper left
 0:95            Construct combined texture-sampler (temp isampler2D)
 0:95              'g_tTex2di4' (uniform itexture2D)
 0:95              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:95            'c2' (uniform 2-component vector of float)
-0:95            'o2' (uniform 2-component vector of int)
+0:95            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:95              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:95              Constant:
+0:95                1 (const uint)
+0:95            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:95              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:95              Constant:
+0:95                5 (const uint)
 0:95            Constant:
 0:95              3 (const int)
 0:96      Sequence
@@ -649,8 +1095,14 @@ gl_FragCoord origin is upper left
 0:96            Construct combined texture-sampler (temp usampler2D)
 0:96              'g_tTex2du4' (uniform utexture2D)
 0:96              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:96            'c2' (uniform 2-component vector of float)
-0:96            'o2' (uniform 2-component vector of int)
+0:96            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:96              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:96              Constant:
+0:96                1 (const uint)
+0:96            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:96              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:96              Constant:
+0:96                5 (const uint)
 0:96            Constant:
 0:96              3 (const int)
 0:98      Sequence
@@ -660,12 +1112,27 @@ gl_FragCoord origin is upper left
 0:98            Construct combined texture-sampler (temp sampler2D)
 0:98              'g_tTex2df4' (uniform texture2D)
 0:98              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:98            'c2' (uniform 2-component vector of float)
+0:98            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:98              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98              Constant:
+0:98                1 (const uint)
 0:98            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:98              'o2' (uniform 2-component vector of int)
-0:98              'o2' (uniform 2-component vector of int)
-0:98              'o2' (uniform 2-component vector of int)
-0:98              'o2' (uniform 2-component vector of int)
+0:98              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:98                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98                Constant:
+0:98                  5 (const uint)
+0:98              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:98                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98                Constant:
+0:98                  5 (const uint)
+0:98              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:98                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98                Constant:
+0:98                  5 (const uint)
+0:98              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:98                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:98                Constant:
+0:98                  5 (const uint)
 0:98            Constant:
 0:98              3 (const int)
 0:99      Sequence
@@ -675,12 +1142,27 @@ gl_FragCoord origin is upper left
 0:99            Construct combined texture-sampler (temp isampler2D)
 0:99              'g_tTex2di4' (uniform itexture2D)
 0:99              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:99            'c2' (uniform 2-component vector of float)
+0:99            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:99              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99              Constant:
+0:99                1 (const uint)
 0:99            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:99              'o2' (uniform 2-component vector of int)
-0:99              'o2' (uniform 2-component vector of int)
-0:99              'o2' (uniform 2-component vector of int)
-0:99              'o2' (uniform 2-component vector of int)
+0:99              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:99                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99                Constant:
+0:99                  5 (const uint)
+0:99              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:99                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99                Constant:
+0:99                  5 (const uint)
+0:99              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:99                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99                Constant:
+0:99                  5 (const uint)
+0:99              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:99                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:99                Constant:
+0:99                  5 (const uint)
 0:99            Constant:
 0:99              3 (const int)
 0:100      Sequence
@@ -690,12 +1172,27 @@ gl_FragCoord origin is upper left
 0:100            Construct combined texture-sampler (temp usampler2D)
 0:100              'g_tTex2du4' (uniform utexture2D)
 0:100              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:100            'c2' (uniform 2-component vector of float)
+0:100            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float)
+0:100              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100              Constant:
+0:100                1 (const uint)
 0:100            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:100              'o2' (uniform 2-component vector of int)
-0:100              'o2' (uniform 2-component vector of int)
-0:100              'o2' (uniform 2-component vector of int)
-0:100              'o2' (uniform 2-component vector of int)
+0:100              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:100                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100                Constant:
+0:100                  5 (const uint)
+0:100              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:100                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100                Constant:
+0:100                  5 (const uint)
+0:100              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:100                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100                Constant:
+0:100                  5 (const uint)
+0:100              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:100                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:100                Constant:
+0:100                  5 (const uint)
 0:100            Constant:
 0:100              3 (const int)
 0:112      move second child to first child (temp 4-component vector of float)
@@ -746,102 +1243,107 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'c1' (uniform float)
-0:?     'c2' (uniform 2-component vector of float)
-0:?     'c3' (uniform 3-component vector of float)
-0:?     'c4' (uniform 4-component vector of float)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 318
+// Id's are bound by 392
 
                               Capability Shader
                               Capability ImageGatherExtended
                               Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 267 271
+                              EntryPoint Fragment 4  "main" 355 359
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "txval001"
                               Name 12  "g_tTex2df4"
                               Name 16  "g_sSamp"
-                              Name 22  "c2"
-                              Name 27  "o2"
-                              Name 33  "txval011"
-                              Name 36  "g_tTex2di4"
-                              Name 47  "txval021"
-                              Name 50  "g_tTex2du4"
-                              Name 58  "txval004"
-                              Name 71  "txval014"
-                              Name 82  "txval024"
-                              Name 93  "txval101"
-                              Name 101  "txval111"
-                              Name 108  "txval121"
-                              Name 115  "txval104"
-                              Name 126  "txval114"
-                              Name 137  "txval124"
-                              Name 148  "txval201"
-                              Name 156  "txval211"
-                              Name 163  "txval221"
-                              Name 170  "txval204"
-                              Name 181  "txval214"
-                              Name 192  "txval224"
-                              Name 203  "txval301"
-                              Name 211  "txval311"
-                              Name 218  "txval321"
-                              Name 225  "txval304"
-                              Name 236  "txval314"
-                              Name 247  "txval324"
-                              Name 258  "PS_OUTPUT"
-                              MemberName 258(PS_OUTPUT) 0  "Color"
-                              MemberName 258(PS_OUTPUT) 1  "Depth"
-                              Name 260  "psout"
-                              Name 267  "Color"
-                              Name 271  "Depth"
-                              Name 275  "g_sSamp2d"
-                              Name 278  "g_tTex1df4a"
-                              Name 279  "g_tTex1df4"
-                              Name 282  "g_tTex1di4"
-                              Name 285  "g_tTex1du4"
-                              Name 288  "g_tTex3df4"
-                              Name 291  "g_tTex3di4"
-                              Name 294  "g_tTex3du4"
-                              Name 297  "g_tTexcdf4"
-                              Name 300  "g_tTexcdi4"
-                              Name 303  "g_tTexcdu4"
-                              Name 305  "c1"
-                              Name 308  "c3"
-                              Name 310  "c4"
-                              Name 312  "o1"
-                              Name 315  "o3"
-                              Name 317  "o4"
+                              Name 26  "$Global"
+                              MemberName 26($Global) 0  "c1"
+                              MemberName 26($Global) 1  "c2"
+                              MemberName 26($Global) 2  "c3"
+                              MemberName 26($Global) 3  "c4"
+                              MemberName 26($Global) 4  "o1"
+                              MemberName 26($Global) 5  "o2"
+                              MemberName 26($Global) 6  "o3"
+                              MemberName 26($Global) 7  "o4"
+                              Name 28  ""
+                              Name 40  "txval011"
+                              Name 43  "g_tTex2di4"
+                              Name 56  "txval021"
+                              Name 59  "g_tTex2du4"
+                              Name 69  "txval004"
+                              Name 87  "txval014"
+                              Name 103  "txval024"
+                              Name 119  "txval101"
+                              Name 128  "txval111"
+                              Name 137  "txval121"
+                              Name 146  "txval104"
+                              Name 162  "txval114"
+                              Name 178  "txval124"
+                              Name 194  "txval201"
+                              Name 204  "txval211"
+                              Name 213  "txval221"
+                              Name 222  "txval204"
+                              Name 238  "txval214"
+                              Name 254  "txval224"
+                              Name 270  "txval301"
+                              Name 280  "txval311"
+                              Name 289  "txval321"
+                              Name 298  "txval304"
+                              Name 314  "txval314"
+                              Name 330  "txval324"
+                              Name 346  "PS_OUTPUT"
+                              MemberName 346(PS_OUTPUT) 0  "Color"
+                              MemberName 346(PS_OUTPUT) 1  "Depth"
+                              Name 348  "psout"
+                              Name 355  "Color"
+                              Name 359  "Depth"
+                              Name 363  "g_sSamp2d"
+                              Name 366  "g_tTex1df4a"
+                              Name 367  "g_tTex1df4"
+                              Name 370  "g_tTex1di4"
+                              Name 373  "g_tTex1du4"
+                              Name 376  "g_tTex3df4"
+                              Name 379  "g_tTex3di4"
+                              Name 382  "g_tTex3du4"
+                              Name 385  "g_tTexcdf4"
+                              Name 388  "g_tTexcdi4"
+                              Name 391  "g_tTexcdu4"
                               Decorate 12(g_tTex2df4) DescriptorSet 0
                               Decorate 16(g_sSamp) DescriptorSet 0
                               Decorate 16(g_sSamp) Binding 0
-                              Decorate 36(g_tTex2di4) DescriptorSet 0
-                              Decorate 50(g_tTex2du4) DescriptorSet 0
-                              Decorate 267(Color) Location 0
-                              Decorate 271(Depth) BuiltIn FragDepth
-                              Decorate 275(g_sSamp2d) DescriptorSet 0
-                              Decorate 278(g_tTex1df4a) DescriptorSet 0
-                              Decorate 278(g_tTex1df4a) Binding 1
-                              Decorate 279(g_tTex1df4) DescriptorSet 0
-                              Decorate 279(g_tTex1df4) Binding 0
-                              Decorate 282(g_tTex1di4) DescriptorSet 0
-                              Decorate 285(g_tTex1du4) DescriptorSet 0
-                              Decorate 288(g_tTex3df4) DescriptorSet 0
-                              Decorate 291(g_tTex3di4) DescriptorSet 0
-                              Decorate 294(g_tTex3du4) DescriptorSet 0
-                              Decorate 297(g_tTexcdf4) DescriptorSet 0
-                              Decorate 300(g_tTexcdi4) DescriptorSet 0
-                              Decorate 303(g_tTexcdu4) DescriptorSet 0
+                              MemberDecorate 26($Global) 0 Offset 0
+                              MemberDecorate 26($Global) 1 Offset 8
+                              MemberDecorate 26($Global) 2 Offset 16
+                              MemberDecorate 26($Global) 3 Offset 32
+                              MemberDecorate 26($Global) 4 Offset 48
+                              MemberDecorate 26($Global) 5 Offset 56
+                              MemberDecorate 26($Global) 6 Offset 64
+                              MemberDecorate 26($Global) 7 Offset 80
+                              Decorate 26($Global) Block
+                              Decorate 28 DescriptorSet 0
+                              Decorate 43(g_tTex2di4) DescriptorSet 0
+                              Decorate 59(g_tTex2du4) DescriptorSet 0
+                              Decorate 355(Color) Location 0
+                              Decorate 359(Depth) BuiltIn FragDepth
+                              Decorate 363(g_sSamp2d) DescriptorSet 0
+                              Decorate 366(g_tTex1df4a) DescriptorSet 0
+                              Decorate 366(g_tTex1df4a) Binding 1
+                              Decorate 367(g_tTex1df4) DescriptorSet 0
+                              Decorate 367(g_tTex1df4) Binding 0
+                              Decorate 370(g_tTex1di4) DescriptorSet 0
+                              Decorate 373(g_tTex1du4) DescriptorSet 0
+                              Decorate 376(g_tTex3df4) DescriptorSet 0
+                              Decorate 379(g_tTex3di4) DescriptorSet 0
+                              Decorate 382(g_tTex3du4) DescriptorSet 0
+                              Decorate 385(g_tTexcdf4) DescriptorSet 0
+                              Decorate 388(g_tTexcdi4) DescriptorSet 0
+                              Decorate 391(g_tTexcdu4) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -855,335 +1357,409 @@ gl_FragCoord origin is upper left
      16(g_sSamp):     15(ptr) Variable UniformConstant
               18:             TypeSampledImage 10
               20:             TypeVector 6(float) 2
-              21:             TypePointer UniformConstant 20(fvec2)
-          22(c2):     21(ptr) Variable UniformConstant
-              24:             TypeInt 32 1
-              25:             TypeVector 24(int) 2
-              26:             TypePointer UniformConstant 25(ivec2)
-          27(o2):     26(ptr) Variable UniformConstant
-              29:     24(int) Constant 0
-              31:             TypeVector 24(int) 4
-              32:             TypePointer Function 31(ivec4)
-              34:             TypeImage 24(int) 2D sampled format:Unknown
-              35:             TypePointer UniformConstant 34
-  36(g_tTex2di4):     35(ptr) Variable UniformConstant
-              39:             TypeSampledImage 34
-              44:             TypeInt 32 0
-              45:             TypeVector 44(int) 4
-              46:             TypePointer Function 45(ivec4)
-              48:             TypeImage 44(int) 2D sampled format:Unknown
-              49:             TypePointer UniformConstant 48
-  50(g_tTex2du4):     49(ptr) Variable UniformConstant
-              53:             TypeSampledImage 48
-              67:     44(int) Constant 4
-              68:             TypeArray 25(ivec2) 67
-              99:     24(int) Constant 1
-             154:     24(int) Constant 2
-             209:     24(int) Constant 3
-  258(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
-             259:             TypePointer Function 258(PS_OUTPUT)
-             261:    6(float) Constant 1065353216
-             262:    7(fvec4) ConstantComposite 261 261 261 261
-             264:             TypePointer Function 6(float)
-             266:             TypePointer Output 7(fvec4)
-      267(Color):    266(ptr) Variable Output
-             270:             TypePointer Output 6(float)
-      271(Depth):    270(ptr) Variable Output
-  275(g_sSamp2d):     15(ptr) Variable UniformConstant
-             276:             TypeImage 6(float) 1D sampled format:Unknown
-             277:             TypePointer UniformConstant 276
-278(g_tTex1df4a):    277(ptr) Variable UniformConstant
- 279(g_tTex1df4):    277(ptr) Variable UniformConstant
-             280:             TypeImage 24(int) 1D sampled format:Unknown
-             281:             TypePointer UniformConstant 280
- 282(g_tTex1di4):    281(ptr) Variable UniformConstant
-             283:             TypeImage 44(int) 1D sampled format:Unknown
-             284:             TypePointer UniformConstant 283
- 285(g_tTex1du4):    284(ptr) Variable UniformConstant
-             286:             TypeImage 6(float) 3D sampled format:Unknown
-             287:             TypePointer UniformConstant 286
- 288(g_tTex3df4):    287(ptr) Variable UniformConstant
-             289:             TypeImage 24(int) 3D sampled format:Unknown
-             290:             TypePointer UniformConstant 289
- 291(g_tTex3di4):    290(ptr) Variable UniformConstant
-             292:             TypeImage 44(int) 3D sampled format:Unknown
-             293:             TypePointer UniformConstant 292
- 294(g_tTex3du4):    293(ptr) Variable UniformConstant
-             295:             TypeImage 6(float) Cube sampled format:Unknown
-             296:             TypePointer UniformConstant 295
- 297(g_tTexcdf4):    296(ptr) Variable UniformConstant
-             298:             TypeImage 24(int) Cube sampled format:Unknown
-             299:             TypePointer UniformConstant 298
- 300(g_tTexcdi4):    299(ptr) Variable UniformConstant
-             301:             TypeImage 44(int) Cube sampled format:Unknown
-             302:             TypePointer UniformConstant 301
- 303(g_tTexcdu4):    302(ptr) Variable UniformConstant
-             304:             TypePointer UniformConstant 6(float)
-         305(c1):    304(ptr) Variable UniformConstant
-             306:             TypeVector 6(float) 3
-             307:             TypePointer UniformConstant 306(fvec3)
-         308(c3):    307(ptr) Variable UniformConstant
-             309:             TypePointer UniformConstant 7(fvec4)
-         310(c4):    309(ptr) Variable UniformConstant
-             311:             TypePointer UniformConstant 24(int)
-         312(o1):    311(ptr) Variable UniformConstant
-             313:             TypeVector 24(int) 3
-             314:             TypePointer UniformConstant 313(ivec3)
-         315(o3):    314(ptr) Variable UniformConstant
-             316:             TypePointer UniformConstant 31(ivec4)
-         317(o4):    316(ptr) Variable UniformConstant
+              21:             TypeVector 6(float) 3
+              22:             TypeInt 32 1
+              23:             TypeVector 22(int) 2
+              24:             TypeVector 22(int) 3
+              25:             TypeVector 22(int) 4
+     26($Global):             TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) 22(int) 23(ivec2) 24(ivec3) 25(ivec4)
+              27:             TypePointer Uniform 26($Global)
+              28:     27(ptr) Variable Uniform
+              29:     22(int) Constant 1
+              30:             TypePointer Uniform 20(fvec2)
+              33:     22(int) Constant 5
+              34:             TypePointer Uniform 23(ivec2)
+              37:     22(int) Constant 0
+              39:             TypePointer Function 25(ivec4)
+              41:             TypeImage 22(int) 2D sampled format:Unknown
+              42:             TypePointer UniformConstant 41
+  43(g_tTex2di4):     42(ptr) Variable UniformConstant
+              46:             TypeSampledImage 41
+              53:             TypeInt 32 0
+              54:             TypeVector 53(int) 4
+              55:             TypePointer Function 54(ivec4)
+              57:             TypeImage 53(int) 2D sampled format:Unknown
+              58:             TypePointer UniformConstant 57
+  59(g_tTex2du4):     58(ptr) Variable UniformConstant
+              62:             TypeSampledImage 57
+              83:     53(int) Constant 4
+              84:             TypeArray 23(ivec2) 83
+             202:     22(int) Constant 2
+             278:     22(int) Constant 3
+  346(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+             347:             TypePointer Function 346(PS_OUTPUT)
+             349:    6(float) Constant 1065353216
+             350:    7(fvec4) ConstantComposite 349 349 349 349
+             352:             TypePointer Function 6(float)
+             354:             TypePointer Output 7(fvec4)
+      355(Color):    354(ptr) Variable Output
+             358:             TypePointer Output 6(float)
+      359(Depth):    358(ptr) Variable Output
+  363(g_sSamp2d):     15(ptr) Variable UniformConstant
+             364:             TypeImage 6(float) 1D sampled format:Unknown
+             365:             TypePointer UniformConstant 364
+366(g_tTex1df4a):    365(ptr) Variable UniformConstant
+ 367(g_tTex1df4):    365(ptr) Variable UniformConstant
+             368:             TypeImage 22(int) 1D sampled format:Unknown
+             369:             TypePointer UniformConstant 368
+ 370(g_tTex1di4):    369(ptr) Variable UniformConstant
+             371:             TypeImage 53(int) 1D sampled format:Unknown
+             372:             TypePointer UniformConstant 371
+ 373(g_tTex1du4):    372(ptr) Variable UniformConstant
+             374:             TypeImage 6(float) 3D sampled format:Unknown
+             375:             TypePointer UniformConstant 374
+ 376(g_tTex3df4):    375(ptr) Variable UniformConstant
+             377:             TypeImage 22(int) 3D sampled format:Unknown
+             378:             TypePointer UniformConstant 377
+ 379(g_tTex3di4):    378(ptr) Variable UniformConstant
+             380:             TypeImage 53(int) 3D sampled format:Unknown
+             381:             TypePointer UniformConstant 380
+ 382(g_tTex3du4):    381(ptr) Variable UniformConstant
+             383:             TypeImage 6(float) Cube sampled format:Unknown
+             384:             TypePointer UniformConstant 383
+ 385(g_tTexcdf4):    384(ptr) Variable UniformConstant
+             386:             TypeImage 22(int) Cube sampled format:Unknown
+             387:             TypePointer UniformConstant 386
+ 388(g_tTexcdi4):    387(ptr) Variable UniformConstant
+             389:             TypeImage 53(int) Cube sampled format:Unknown
+             390:             TypePointer UniformConstant 389
+ 391(g_tTexcdu4):    390(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
      9(txval001):      8(ptr) Variable Function
-    33(txval011):     32(ptr) Variable Function
-    47(txval021):     46(ptr) Variable Function
-    58(txval004):      8(ptr) Variable Function
-    71(txval014):     32(ptr) Variable Function
-    82(txval024):     46(ptr) Variable Function
-    93(txval101):      8(ptr) Variable Function
-   101(txval111):     32(ptr) Variable Function
-   108(txval121):     46(ptr) Variable Function
-   115(txval104):      8(ptr) Variable Function
-   126(txval114):     32(ptr) Variable Function
-   137(txval124):     46(ptr) Variable Function
-   148(txval201):      8(ptr) Variable Function
-   156(txval211):     32(ptr) Variable Function
-   163(txval221):     46(ptr) Variable Function
-   170(txval204):      8(ptr) Variable Function
-   181(txval214):     32(ptr) Variable Function
-   192(txval224):     46(ptr) Variable Function
-   203(txval301):      8(ptr) Variable Function
-   211(txval311):     32(ptr) Variable Function
-   218(txval321):     46(ptr) Variable Function
-   225(txval304):      8(ptr) Variable Function
-   236(txval314):     32(ptr) Variable Function
-   247(txval324):     46(ptr) Variable Function
-      260(psout):    259(ptr) Variable Function
+    40(txval011):     39(ptr) Variable Function
+    56(txval021):     55(ptr) Variable Function
+    69(txval004):      8(ptr) Variable Function
+    87(txval014):     39(ptr) Variable Function
+   103(txval024):     55(ptr) Variable Function
+   119(txval101):      8(ptr) Variable Function
+   128(txval111):     39(ptr) Variable Function
+   137(txval121):     55(ptr) Variable Function
+   146(txval104):      8(ptr) Variable Function
+   162(txval114):     39(ptr) Variable Function
+   178(txval124):     55(ptr) Variable Function
+   194(txval201):      8(ptr) Variable Function
+   204(txval211):     39(ptr) Variable Function
+   213(txval221):     55(ptr) Variable Function
+   222(txval204):      8(ptr) Variable Function
+   238(txval214):     39(ptr) Variable Function
+   254(txval224):     55(ptr) Variable Function
+   270(txval301):      8(ptr) Variable Function
+   280(txval311):     39(ptr) Variable Function
+   289(txval321):     55(ptr) Variable Function
+   298(txval304):      8(ptr) Variable Function
+   314(txval314):     39(ptr) Variable Function
+   330(txval324):     55(ptr) Variable Function
+      348(psout):    347(ptr) Variable Function
               13:          10 Load 12(g_tTex2df4)
               17:          14 Load 16(g_sSamp)
               19:          18 SampledImage 13 17
-              23:   20(fvec2) Load 22(c2)
-              28:   25(ivec2) Load 27(o2)
-              30:    7(fvec4) ImageGather 19 23 29 Offset 28
-                              Store 9(txval001) 30
-              37:          34 Load 36(g_tTex2di4)
-              38:          14 Load 16(g_sSamp)
-              40:          39 SampledImage 37 38
-              41:   20(fvec2) Load 22(c2)
-              42:   25(ivec2) Load 27(o2)
-              43:   31(ivec4) ImageGather 40 41 29 Offset 42
-                              Store 33(txval011) 43
-              51:          48 Load 50(g_tTex2du4)
-              52:          14 Load 16(g_sSamp)
-              54:          53 SampledImage 51 52
-              55:   20(fvec2) Load 22(c2)
-              56:   25(ivec2) Load 27(o2)
-              57:   45(ivec4) ImageGather 54 55 29 Offset 56
-                              Store 47(txval021) 57
-              59:          10 Load 12(g_tTex2df4)
-              60:          14 Load 16(g_sSamp)
-              61:          18 SampledImage 59 60
-              62:   20(fvec2) Load 22(c2)
-              63:   25(ivec2) Load 27(o2)
-              64:   25(ivec2) Load 27(o2)
-              65:   25(ivec2) Load 27(o2)
-              66:   25(ivec2) Load 27(o2)
-              69:          68 CompositeConstruct 63 64 65 66
-              70:    7(fvec4) ImageGather 61 62 29 ConstOffsets 69
-                              Store 58(txval004) 70
-              72:          34 Load 36(g_tTex2di4)
-              73:          14 Load 16(g_sSamp)
-              74:          39 SampledImage 72 73
-              75:   20(fvec2) Load 22(c2)
-              76:   25(ivec2) Load 27(o2)
-              77:   25(ivec2) Load 27(o2)
-              78:   25(ivec2) Load 27(o2)
-              79:   25(ivec2) Load 27(o2)
-              80:          68 CompositeConstruct 76 77 78 79
-              81:   31(ivec4) ImageGather 74 75 29 ConstOffsets 80
-                              Store 71(txval014) 81
-              83:          48 Load 50(g_tTex2du4)
-              84:          14 Load 16(g_sSamp)
-              85:          53 SampledImage 83 84
-              86:   20(fvec2) Load 22(c2)
-              87:   25(ivec2) Load 27(o2)
-              88:   25(ivec2) Load 27(o2)
-              89:   25(ivec2) Load 27(o2)
-              90:   25(ivec2) Load 27(o2)
-              91:          68 CompositeConstruct 87 88 89 90
-              92:   45(ivec4) ImageGather 85 86 29 ConstOffsets 91
-                              Store 82(txval024) 92
-              94:          10 Load 12(g_tTex2df4)
-              95:          14 Load 16(g_sSamp)
-              96:          18 SampledImage 94 95
-              97:   20(fvec2) Load 22(c2)
-              98:   25(ivec2) Load 27(o2)
-             100:    7(fvec4) ImageGather 96 97 99 Offset 98
-                              Store 93(txval101) 100
-             102:          34 Load 36(g_tTex2di4)
-             103:          14 Load 16(g_sSamp)
-             104:          39 SampledImage 102 103
-             105:   20(fvec2) Load 22(c2)
-             106:   25(ivec2) Load 27(o2)
-             107:   31(ivec4) ImageGather 104 105 99 Offset 106
-                              Store 101(txval111) 107
-             109:          48 Load 50(g_tTex2du4)
-             110:          14 Load 16(g_sSamp)
-             111:          53 SampledImage 109 110
-             112:   20(fvec2) Load 22(c2)
-             113:   25(ivec2) Load 27(o2)
-             114:   45(ivec4) ImageGather 111 112 99 Offset 113
-                              Store 108(txval121) 114
-             116:          10 Load 12(g_tTex2df4)
-             117:          14 Load 16(g_sSamp)
-             118:          18 SampledImage 116 117
-             119:   20(fvec2) Load 22(c2)
-             120:   25(ivec2) Load 27(o2)
-             121:   25(ivec2) Load 27(o2)
-             122:   25(ivec2) Load 27(o2)
-             123:   25(ivec2) Load 27(o2)
-             124:          68 CompositeConstruct 120 121 122 123
-             125:    7(fvec4) ImageGather 118 119 99 ConstOffsets 124
-                              Store 115(txval104) 125
-             127:          34 Load 36(g_tTex2di4)
-             128:          14 Load 16(g_sSamp)
-             129:          39 SampledImage 127 128
-             130:   20(fvec2) Load 22(c2)
-             131:   25(ivec2) Load 27(o2)
-             132:   25(ivec2) Load 27(o2)
-             133:   25(ivec2) Load 27(o2)
-             134:   25(ivec2) Load 27(o2)
-             135:          68 CompositeConstruct 131 132 133 134
-             136:   31(ivec4) ImageGather 129 130 99 ConstOffsets 135
-                              Store 126(txval114) 136
-             138:          48 Load 50(g_tTex2du4)
+              31:     30(ptr) AccessChain 28 29
+              32:   20(fvec2) Load 31
+              35:     34(ptr) AccessChain 28 33
+              36:   23(ivec2) Load 35
+              38:    7(fvec4) ImageGather 19 32 37 Offset 36
+                              Store 9(txval001) 38
+              44:          41 Load 43(g_tTex2di4)
+              45:          14 Load 16(g_sSamp)
+              47:          46 SampledImage 44 45
+              48:     30(ptr) AccessChain 28 29
+              49:   20(fvec2) Load 48
+              50:     34(ptr) AccessChain 28 33
+              51:   23(ivec2) Load 50
+              52:   25(ivec4) ImageGather 47 49 37 Offset 51
+                              Store 40(txval011) 52
+              60:          57 Load 59(g_tTex2du4)
+              61:          14 Load 16(g_sSamp)
+              63:          62 SampledImage 60 61
+              64:     30(ptr) AccessChain 28 29
+              65:   20(fvec2) Load 64
+              66:     34(ptr) AccessChain 28 33
+              67:   23(ivec2) Load 66
+              68:   54(ivec4) ImageGather 63 65 37 Offset 67
+                              Store 56(txval021) 68
+              70:          10 Load 12(g_tTex2df4)
+              71:          14 Load 16(g_sSamp)
+              72:          18 SampledImage 70 71
+              73:     30(ptr) AccessChain 28 29
+              74:   20(fvec2) Load 73
+              75:     34(ptr) AccessChain 28 33
+              76:   23(ivec2) Load 75
+              77:     34(ptr) AccessChain 28 33
+              78:   23(ivec2) Load 77
+              79:     34(ptr) AccessChain 28 33
+              80:   23(ivec2) Load 79
+              81:     34(ptr) AccessChain 28 33
+              82:   23(ivec2) Load 81
+              85:          84 CompositeConstruct 76 78 80 82
+              86:    7(fvec4) ImageGather 72 74 37 ConstOffsets 85
+                              Store 69(txval004) 86
+              88:          41 Load 43(g_tTex2di4)
+              89:          14 Load 16(g_sSamp)
+              90:          46 SampledImage 88 89
+              91:     30(ptr) AccessChain 28 29
+              92:   20(fvec2) Load 91
+              93:     34(ptr) AccessChain 28 33
+              94:   23(ivec2) Load 93
+              95:     34(ptr) AccessChain 28 33
+              96:   23(ivec2) Load 95
+              97:     34(ptr) AccessChain 28 33
+              98:   23(ivec2) Load 97
+              99:     34(ptr) AccessChain 28 33
+             100:   23(ivec2) Load 99
+             101:          84 CompositeConstruct 94 96 98 100
+             102:   25(ivec4) ImageGather 90 92 37 ConstOffsets 101
+                              Store 87(txval014) 102
+             104:          57 Load 59(g_tTex2du4)
+             105:          14 Load 16(g_sSamp)
+             106:          62 SampledImage 104 105
+             107:     30(ptr) AccessChain 28 29
+             108:   20(fvec2) Load 107
+             109:     34(ptr) AccessChain 28 33
+             110:   23(ivec2) Load 109
+             111:     34(ptr) AccessChain 28 33
+             112:   23(ivec2) Load 111
+             113:     34(ptr) AccessChain 28 33
+             114:   23(ivec2) Load 113
+             115:     34(ptr) AccessChain 28 33
+             116:   23(ivec2) Load 115
+             117:          84 CompositeConstruct 110 112 114 116
+             118:   54(ivec4) ImageGather 106 108 37 ConstOffsets 117
+                              Store 103(txval024) 118
+             120:          10 Load 12(g_tTex2df4)
+             121:          14 Load 16(g_sSamp)
+             122:          18 SampledImage 120 121
+             123:     30(ptr) AccessChain 28 29
+             124:   20(fvec2) Load 123
+             125:     34(ptr) AccessChain 28 33
+             126:   23(ivec2) Load 125
+             127:    7(fvec4) ImageGather 122 124 29 Offset 126
+                              Store 119(txval101) 127
+             129:          41 Load 43(g_tTex2di4)
+             130:          14 Load 16(g_sSamp)
+             131:          46 SampledImage 129 130
+             132:     30(ptr) AccessChain 28 29
+             133:   20(fvec2) Load 132
+             134:     34(ptr) AccessChain 28 33
+             135:   23(ivec2) Load 134
+             136:   25(ivec4) ImageGather 131 133 29 Offset 135
+                              Store 128(txval111) 136
+             138:          57 Load 59(g_tTex2du4)
              139:          14 Load 16(g_sSamp)
-             140:          53 SampledImage 138 139
-             141:   20(fvec2) Load 22(c2)
-             142:   25(ivec2) Load 27(o2)
-             143:   25(ivec2) Load 27(o2)
-             144:   25(ivec2) Load 27(o2)
-             145:   25(ivec2) Load 27(o2)
-             146:          68 CompositeConstruct 142 143 144 145
-             147:   45(ivec4) ImageGather 140 141 99 ConstOffsets 146
-                              Store 137(txval124) 147
-             149:          10 Load 12(g_tTex2df4)
-             150:          14 Load 16(g_sSamp)
-             151:          18 SampledImage 149 150
-             152:   20(fvec2) Load 22(c2)
-             153:   25(ivec2) Load 27(o2)
-             155:    7(fvec4) ImageGather 151 152 154 Offset 153
-                              Store 148(txval201) 155
-             157:          34 Load 36(g_tTex2di4)
-             158:          14 Load 16(g_sSamp)
-             159:          39 SampledImage 157 158
-             160:   20(fvec2) Load 22(c2)
-             161:   25(ivec2) Load 27(o2)
-             162:   31(ivec4) ImageGather 159 160 154 Offset 161
-                              Store 156(txval211) 162
-             164:          48 Load 50(g_tTex2du4)
-             165:          14 Load 16(g_sSamp)
-             166:          53 SampledImage 164 165
-             167:   20(fvec2) Load 22(c2)
-             168:   25(ivec2) Load 27(o2)
-             169:   45(ivec4) ImageGather 166 167 154 Offset 168
-                              Store 163(txval221) 169
-             171:          10 Load 12(g_tTex2df4)
-             172:          14 Load 16(g_sSamp)
-             173:          18 SampledImage 171 172
-             174:   20(fvec2) Load 22(c2)
-             175:   25(ivec2) Load 27(o2)
-             176:   25(ivec2) Load 27(o2)
-             177:   25(ivec2) Load 27(o2)
-             178:   25(ivec2) Load 27(o2)
-             179:          68 CompositeConstruct 175 176 177 178
-             180:    7(fvec4) ImageGather 173 174 154 ConstOffsets 179
-                              Store 170(txval204) 180
-             182:          34 Load 36(g_tTex2di4)
-             183:          14 Load 16(g_sSamp)
-             184:          39 SampledImage 182 183
-             185:   20(fvec2) Load 22(c2)
-             186:   25(ivec2) Load 27(o2)
-             187:   25(ivec2) Load 27(o2)
-             188:   25(ivec2) Load 27(o2)
-             189:   25(ivec2) Load 27(o2)
-             190:          68 CompositeConstruct 186 187 188 189
-             191:   31(ivec4) ImageGather 184 185 154 ConstOffsets 190
-                              Store 181(txval214) 191
-             193:          48 Load 50(g_tTex2du4)
-             194:          14 Load 16(g_sSamp)
-             195:          53 SampledImage 193 194
-             196:   20(fvec2) Load 22(c2)
-             197:   25(ivec2) Load 27(o2)
-             198:   25(ivec2) Load 27(o2)
-             199:   25(ivec2) Load 27(o2)
-             200:   25(ivec2) Load 27(o2)
-             201:          68 CompositeConstruct 197 198 199 200
-             202:   45(ivec4) ImageGather 195 196 154 ConstOffsets 201
-                              Store 192(txval224) 202
-             204:          10 Load 12(g_tTex2df4)
-             205:          14 Load 16(g_sSamp)
-             206:          18 SampledImage 204 205
-             207:   20(fvec2) Load 22(c2)
-             208:   25(ivec2) Load 27(o2)
-             210:    7(fvec4) ImageGather 206 207 209 Offset 208
-                              Store 203(txval301) 210
-             212:          34 Load 36(g_tTex2di4)
-             213:          14 Load 16(g_sSamp)
-             214:          39 SampledImage 212 213
-             215:   20(fvec2) Load 22(c2)
-             216:   25(ivec2) Load 27(o2)
-             217:   31(ivec4) ImageGather 214 215 209 Offset 216
-                              Store 211(txval311) 217
-             219:          48 Load 50(g_tTex2du4)
-             220:          14 Load 16(g_sSamp)
-             221:          53 SampledImage 219 220
-             222:   20(fvec2) Load 22(c2)
-             223:   25(ivec2) Load 27(o2)
-             224:   45(ivec4) ImageGather 221 222 209 Offset 223
-                              Store 218(txval321) 224
-             226:          10 Load 12(g_tTex2df4)
-             227:          14 Load 16(g_sSamp)
-             228:          18 SampledImage 226 227
-             229:   20(fvec2) Load 22(c2)
-             230:   25(ivec2) Load 27(o2)
-             231:   25(ivec2) Load 27(o2)
-             232:   25(ivec2) Load 27(o2)
-             233:   25(ivec2) Load 27(o2)
-             234:          68 CompositeConstruct 230 231 232 233
-             235:    7(fvec4) ImageGather 228 229 209 ConstOffsets 234
-                              Store 225(txval304) 235
-             237:          34 Load 36(g_tTex2di4)
-             238:          14 Load 16(g_sSamp)
-             239:          39 SampledImage 237 238
-             240:   20(fvec2) Load 22(c2)
-             241:   25(ivec2) Load 27(o2)
-             242:   25(ivec2) Load 27(o2)
-             243:   25(ivec2) Load 27(o2)
-             244:   25(ivec2) Load 27(o2)
-             245:          68 CompositeConstruct 241 242 243 244
-             246:   31(ivec4) ImageGather 239 240 209 ConstOffsets 245
-                              Store 236(txval314) 246
-             248:          48 Load 50(g_tTex2du4)
-             249:          14 Load 16(g_sSamp)
-             250:          53 SampledImage 248 249
-             251:   20(fvec2) Load 22(c2)
-             252:   25(ivec2) Load 27(o2)
-             253:   25(ivec2) Load 27(o2)
-             254:   25(ivec2) Load 27(o2)
-             255:   25(ivec2) Load 27(o2)
-             256:          68 CompositeConstruct 252 253 254 255
-             257:   45(ivec4) ImageGather 250 251 209 ConstOffsets 256
-                              Store 247(txval324) 257
-             263:      8(ptr) AccessChain 260(psout) 29
-                              Store 263 262
-             265:    264(ptr) AccessChain 260(psout) 99
-                              Store 265 261
-             268:      8(ptr) AccessChain 260(psout) 29
-             269:    7(fvec4) Load 268
-                              Store 267(Color) 269
-             272:    264(ptr) AccessChain 260(psout) 99
-             273:    6(float) Load 272
-                              Store 271(Depth) 273
+             140:          62 SampledImage 138 139
+             141:     30(ptr) AccessChain 28 29
+             142:   20(fvec2) Load 141
+             143:     34(ptr) AccessChain 28 33
+             144:   23(ivec2) Load 143
+             145:   54(ivec4) ImageGather 140 142 29 Offset 144
+                              Store 137(txval121) 145
+             147:          10 Load 12(g_tTex2df4)
+             148:          14 Load 16(g_sSamp)
+             149:          18 SampledImage 147 148
+             150:     30(ptr) AccessChain 28 29
+             151:   20(fvec2) Load 150
+             152:     34(ptr) AccessChain 28 33
+             153:   23(ivec2) Load 152
+             154:     34(ptr) AccessChain 28 33
+             155:   23(ivec2) Load 154
+             156:     34(ptr) AccessChain 28 33
+             157:   23(ivec2) Load 156
+             158:     34(ptr) AccessChain 28 33
+             159:   23(ivec2) Load 158
+             160:          84 CompositeConstruct 153 155 157 159
+             161:    7(fvec4) ImageGather 149 151 29 ConstOffsets 160
+                              Store 146(txval104) 161
+             163:          41 Load 43(g_tTex2di4)
+             164:          14 Load 16(g_sSamp)
+             165:          46 SampledImage 163 164
+             166:     30(ptr) AccessChain 28 29
+             167:   20(fvec2) Load 166
+             168:     34(ptr) AccessChain 28 33
+             169:   23(ivec2) Load 168
+             170:     34(ptr) AccessChain 28 33
+             171:   23(ivec2) Load 170
+             172:     34(ptr) AccessChain 28 33
+             173:   23(ivec2) Load 172
+             174:     34(ptr) AccessChain 28 33
+             175:   23(ivec2) Load 174
+             176:          84 CompositeConstruct 169 171 173 175
+             177:   25(ivec4) ImageGather 165 167 29 ConstOffsets 176
+                              Store 162(txval114) 177
+             179:          57 Load 59(g_tTex2du4)
+             180:          14 Load 16(g_sSamp)
+             181:          62 SampledImage 179 180
+             182:     30(ptr) AccessChain 28 29
+             183:   20(fvec2) Load 182
+             184:     34(ptr) AccessChain 28 33
+             185:   23(ivec2) Load 184
+             186:     34(ptr) AccessChain 28 33
+             187:   23(ivec2) Load 186
+             188:     34(ptr) AccessChain 28 33
+             189:   23(ivec2) Load 188
+             190:     34(ptr) AccessChain 28 33
+             191:   23(ivec2) Load 190
+             192:          84 CompositeConstruct 185 187 189 191
+             193:   54(ivec4) ImageGather 181 183 29 ConstOffsets 192
+                              Store 178(txval124) 193
+             195:          10 Load 12(g_tTex2df4)
+             196:          14 Load 16(g_sSamp)
+             197:          18 SampledImage 195 196
+             198:     30(ptr) AccessChain 28 29
+             199:   20(fvec2) Load 198
+             200:     34(ptr) AccessChain 28 33
+             201:   23(ivec2) Load 200
+             203:    7(fvec4) ImageGather 197 199 202 Offset 201
+                              Store 194(txval201) 203
+             205:          41 Load 43(g_tTex2di4)
+             206:          14 Load 16(g_sSamp)
+             207:          46 SampledImage 205 206
+             208:     30(ptr) AccessChain 28 29
+             209:   20(fvec2) Load 208
+             210:     34(ptr) AccessChain 28 33
+             211:   23(ivec2) Load 210
+             212:   25(ivec4) ImageGather 207 209 202 Offset 211
+                              Store 204(txval211) 212
+             214:          57 Load 59(g_tTex2du4)
+             215:          14 Load 16(g_sSamp)
+             216:          62 SampledImage 214 215
+             217:     30(ptr) AccessChain 28 29
+             218:   20(fvec2) Load 217
+             219:     34(ptr) AccessChain 28 33
+             220:   23(ivec2) Load 219
+             221:   54(ivec4) ImageGather 216 218 202 Offset 220
+                              Store 213(txval221) 221
+             223:          10 Load 12(g_tTex2df4)
+             224:          14 Load 16(g_sSamp)
+             225:          18 SampledImage 223 224
+             226:     30(ptr) AccessChain 28 29
+             227:   20(fvec2) Load 226
+             228:     34(ptr) AccessChain 28 33
+             229:   23(ivec2) Load 228
+             230:     34(ptr) AccessChain 28 33
+             231:   23(ivec2) Load 230
+             232:     34(ptr) AccessChain 28 33
+             233:   23(ivec2) Load 232
+             234:     34(ptr) AccessChain 28 33
+             235:   23(ivec2) Load 234
+             236:          84 CompositeConstruct 229 231 233 235
+             237:    7(fvec4) ImageGather 225 227 202 ConstOffsets 236
+                              Store 222(txval204) 237
+             239:          41 Load 43(g_tTex2di4)
+             240:          14 Load 16(g_sSamp)
+             241:          46 SampledImage 239 240
+             242:     30(ptr) AccessChain 28 29
+             243:   20(fvec2) Load 242
+             244:     34(ptr) AccessChain 28 33
+             245:   23(ivec2) Load 244
+             246:     34(ptr) AccessChain 28 33
+             247:   23(ivec2) Load 246
+             248:     34(ptr) AccessChain 28 33
+             249:   23(ivec2) Load 248
+             250:     34(ptr) AccessChain 28 33
+             251:   23(ivec2) Load 250
+             252:          84 CompositeConstruct 245 247 249 251
+             253:   25(ivec4) ImageGather 241 243 202 ConstOffsets 252
+                              Store 238(txval214) 253
+             255:          57 Load 59(g_tTex2du4)
+             256:          14 Load 16(g_sSamp)
+             257:          62 SampledImage 255 256
+             258:     30(ptr) AccessChain 28 29
+             259:   20(fvec2) Load 258
+             260:     34(ptr) AccessChain 28 33
+             261:   23(ivec2) Load 260
+             262:     34(ptr) AccessChain 28 33
+             263:   23(ivec2) Load 262
+             264:     34(ptr) AccessChain 28 33
+             265:   23(ivec2) Load 264
+             266:     34(ptr) AccessChain 28 33
+             267:   23(ivec2) Load 266
+             268:          84 CompositeConstruct 261 263 265 267
+             269:   54(ivec4) ImageGather 257 259 202 ConstOffsets 268
+                              Store 254(txval224) 269
+             271:          10 Load 12(g_tTex2df4)
+             272:          14 Load 16(g_sSamp)
+             273:          18 SampledImage 271 272
+             274:     30(ptr) AccessChain 28 29
+             275:   20(fvec2) Load 274
+             276:     34(ptr) AccessChain 28 33
+             277:   23(ivec2) Load 276
+             279:    7(fvec4) ImageGather 273 275 278 Offset 277
+                              Store 270(txval301) 279
+             281:          41 Load 43(g_tTex2di4)
+             282:          14 Load 16(g_sSamp)
+             283:          46 SampledImage 281 282
+             284:     30(ptr) AccessChain 28 29
+             285:   20(fvec2) Load 284
+             286:     34(ptr) AccessChain 28 33
+             287:   23(ivec2) Load 286
+             288:   25(ivec4) ImageGather 283 285 278 Offset 287
+                              Store 280(txval311) 288
+             290:          57 Load 59(g_tTex2du4)
+             291:          14 Load 16(g_sSamp)
+             292:          62 SampledImage 290 291
+             293:     30(ptr) AccessChain 28 29
+             294:   20(fvec2) Load 293
+             295:     34(ptr) AccessChain 28 33
+             296:   23(ivec2) Load 295
+             297:   54(ivec4) ImageGather 292 294 278 Offset 296
+                              Store 289(txval321) 297
+             299:          10 Load 12(g_tTex2df4)
+             300:          14 Load 16(g_sSamp)
+             301:          18 SampledImage 299 300
+             302:     30(ptr) AccessChain 28 29
+             303:   20(fvec2) Load 302
+             304:     34(ptr) AccessChain 28 33
+             305:   23(ivec2) Load 304
+             306:     34(ptr) AccessChain 28 33
+             307:   23(ivec2) Load 306
+             308:     34(ptr) AccessChain 28 33
+             309:   23(ivec2) Load 308
+             310:     34(ptr) AccessChain 28 33
+             311:   23(ivec2) Load 310
+             312:          84 CompositeConstruct 305 307 309 311
+             313:    7(fvec4) ImageGather 301 303 278 ConstOffsets 312
+                              Store 298(txval304) 313
+             315:          41 Load 43(g_tTex2di4)
+             316:          14 Load 16(g_sSamp)
+             317:          46 SampledImage 315 316
+             318:     30(ptr) AccessChain 28 29
+             319:   20(fvec2) Load 318
+             320:     34(ptr) AccessChain 28 33
+             321:   23(ivec2) Load 320
+             322:     34(ptr) AccessChain 28 33
+             323:   23(ivec2) Load 322
+             324:     34(ptr) AccessChain 28 33
+             325:   23(ivec2) Load 324
+             326:     34(ptr) AccessChain 28 33
+             327:   23(ivec2) Load 326
+             328:          84 CompositeConstruct 321 323 325 327
+             329:   25(ivec4) ImageGather 317 319 278 ConstOffsets 328
+                              Store 314(txval314) 329
+             331:          57 Load 59(g_tTex2du4)
+             332:          14 Load 16(g_sSamp)
+             333:          62 SampledImage 331 332
+             334:     30(ptr) AccessChain 28 29
+             335:   20(fvec2) Load 334
+             336:     34(ptr) AccessChain 28 33
+             337:   23(ivec2) Load 336
+             338:     34(ptr) AccessChain 28 33
+             339:   23(ivec2) Load 338
+             340:     34(ptr) AccessChain 28 33
+             341:   23(ivec2) Load 340
+             342:     34(ptr) AccessChain 28 33
+             343:   23(ivec2) Load 342
+             344:          84 CompositeConstruct 337 339 341 343
+             345:   54(ivec4) ImageGather 333 335 278 ConstOffsets 344
+                              Store 330(txval324) 345
+             351:      8(ptr) AccessChain 348(psout) 37
+                              Store 351 350
+             353:    352(ptr) AccessChain 348(psout) 29
+                              Store 353 349
+             356:      8(ptr) AccessChain 348(psout) 37
+             357:    7(fvec4) Load 356
+                              Store 355(Color) 357
+             360:    352(ptr) AccessChain 348(psout) 29
+             361:    6(float) Load 360
+                              Store 359(Depth) 361
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
index 022f63eda..1a5df38e4 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.gatherRGBA.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:33  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:33  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:33    Function Parameters: 
 0:?     Sequence
 0:40      Sequence
@@ -12,8 +12,14 @@ gl_FragCoord origin is upper left
 0:40            Construct combined texture-sampler (temp sampler2DArray)
 0:40              'g_tTex2df4a' (uniform texture2DArray)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:40            'c3' (uniform 3-component vector of float)
-0:40            'o2' (uniform 2-component vector of int)
+0:40            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:40              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:40              Constant:
+0:40                2 (const uint)
+0:40            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:40              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:40              Constant:
+0:40                5 (const uint)
 0:40            Constant:
 0:40              0 (const int)
 0:41      Sequence
@@ -23,8 +29,14 @@ gl_FragCoord origin is upper left
 0:41            Construct combined texture-sampler (temp isampler2DArray)
 0:41              'g_tTex2di4a' (uniform itexture2DArray)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:41            'c3' (uniform 3-component vector of float)
-0:41            'o2' (uniform 2-component vector of int)
+0:41            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:41              Constant:
+0:41                2 (const uint)
+0:41            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:41              Constant:
+0:41                5 (const uint)
 0:41            Constant:
 0:41              0 (const int)
 0:42      Sequence
@@ -34,8 +46,14 @@ gl_FragCoord origin is upper left
 0:42            Construct combined texture-sampler (temp usampler2DArray)
 0:42              'g_tTex2du4a' (uniform utexture2DArray)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:42            'c3' (uniform 3-component vector of float)
-0:42            'o2' (uniform 2-component vector of int)
+0:42            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:42              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:42              Constant:
+0:42                2 (const uint)
+0:42            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:42              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:42              Constant:
+0:42                5 (const uint)
 0:42            Constant:
 0:42              0 (const int)
 0:44      Sequence
@@ -45,12 +63,27 @@ gl_FragCoord origin is upper left
 0:44            Construct combined texture-sampler (temp sampler2DArray)
 0:44              'g_tTex2df4a' (uniform texture2DArray)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:44            'c3' (uniform 3-component vector of float)
+0:44            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44              Constant:
+0:44                2 (const uint)
 0:44            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:44              'o2' (uniform 2-component vector of int)
-0:44              'o2' (uniform 2-component vector of int)
-0:44              'o2' (uniform 2-component vector of int)
-0:44              'o2' (uniform 2-component vector of int)
+0:44              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:44                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44                Constant:
+0:44                  5 (const uint)
+0:44              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:44                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44                Constant:
+0:44                  5 (const uint)
+0:44              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:44                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44                Constant:
+0:44                  5 (const uint)
+0:44              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:44                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44                Constant:
+0:44                  5 (const uint)
 0:44            Constant:
 0:44              0 (const int)
 0:45      Sequence
@@ -60,12 +93,27 @@ gl_FragCoord origin is upper left
 0:45            Construct combined texture-sampler (temp isampler2DArray)
 0:45              'g_tTex2di4a' (uniform itexture2DArray)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:45            'c3' (uniform 3-component vector of float)
+0:45            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:45              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45              Constant:
+0:45                2 (const uint)
 0:45            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:45              'o2' (uniform 2-component vector of int)
-0:45              'o2' (uniform 2-component vector of int)
-0:45              'o2' (uniform 2-component vector of int)
-0:45              'o2' (uniform 2-component vector of int)
+0:45              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:45                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45                Constant:
+0:45                  5 (const uint)
+0:45              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:45                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45                Constant:
+0:45                  5 (const uint)
+0:45              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:45                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45                Constant:
+0:45                  5 (const uint)
+0:45              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:45                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45                Constant:
+0:45                  5 (const uint)
 0:45            Constant:
 0:45              0 (const int)
 0:46      Sequence
@@ -75,12 +123,27 @@ gl_FragCoord origin is upper left
 0:46            Construct combined texture-sampler (temp usampler2DArray)
 0:46              'g_tTex2du4a' (uniform utexture2DArray)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:46            'c3' (uniform 3-component vector of float)
+0:46            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46              Constant:
+0:46                2 (const uint)
 0:46            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:46              'o2' (uniform 2-component vector of int)
-0:46              'o2' (uniform 2-component vector of int)
-0:46              'o2' (uniform 2-component vector of int)
-0:46              'o2' (uniform 2-component vector of int)
+0:46              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46                Constant:
+0:46                  5 (const uint)
+0:46              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46                Constant:
+0:46                  5 (const uint)
+0:46              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46                Constant:
+0:46                  5 (const uint)
+0:46              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46                Constant:
+0:46                  5 (const uint)
 0:46            Constant:
 0:46              0 (const int)
 0:56      Sequence
@@ -90,8 +153,14 @@ gl_FragCoord origin is upper left
 0:56            Construct combined texture-sampler (temp sampler2DArray)
 0:56              'g_tTex2df4a' (uniform texture2DArray)
 0:56              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:56            'c3' (uniform 3-component vector of float)
-0:56            'o2' (uniform 2-component vector of int)
+0:56            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56              Constant:
+0:56                2 (const uint)
+0:56            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56              Constant:
+0:56                5 (const uint)
 0:56            Constant:
 0:56              1 (const int)
 0:57      Sequence
@@ -101,8 +170,14 @@ gl_FragCoord origin is upper left
 0:57            Construct combined texture-sampler (temp isampler2DArray)
 0:57              'g_tTex2di4a' (uniform itexture2DArray)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:57            'c3' (uniform 3-component vector of float)
-0:57            'o2' (uniform 2-component vector of int)
+0:57            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57              Constant:
+0:57                2 (const uint)
+0:57            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57              Constant:
+0:57                5 (const uint)
 0:57            Constant:
 0:57              1 (const int)
 0:58      Sequence
@@ -112,8 +187,14 @@ gl_FragCoord origin is upper left
 0:58            Construct combined texture-sampler (temp usampler2DArray)
 0:58              'g_tTex2du4a' (uniform utexture2DArray)
 0:58              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:58            'c3' (uniform 3-component vector of float)
-0:58            'o2' (uniform 2-component vector of int)
+0:58            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:58              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58              Constant:
+0:58                2 (const uint)
+0:58            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:58              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58              Constant:
+0:58                5 (const uint)
 0:58            Constant:
 0:58              1 (const int)
 0:60      Sequence
@@ -123,12 +204,27 @@ gl_FragCoord origin is upper left
 0:60            Construct combined texture-sampler (temp sampler2DArray)
 0:60              'g_tTex2df4a' (uniform texture2DArray)
 0:60              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:60            'c3' (uniform 3-component vector of float)
+0:60            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60              Constant:
+0:60                2 (const uint)
 0:60            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:60              'o2' (uniform 2-component vector of int)
-0:60              'o2' (uniform 2-component vector of int)
-0:60              'o2' (uniform 2-component vector of int)
-0:60              'o2' (uniform 2-component vector of int)
+0:60              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:60                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60                Constant:
+0:60                  5 (const uint)
+0:60              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:60                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60                Constant:
+0:60                  5 (const uint)
+0:60              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:60                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60                Constant:
+0:60                  5 (const uint)
+0:60              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:60                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60                Constant:
+0:60                  5 (const uint)
 0:60            Constant:
 0:60              1 (const int)
 0:61      Sequence
@@ -138,12 +234,27 @@ gl_FragCoord origin is upper left
 0:61            Construct combined texture-sampler (temp isampler2DArray)
 0:61              'g_tTex2di4a' (uniform itexture2DArray)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:61            'c3' (uniform 3-component vector of float)
+0:61            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61              Constant:
+0:61                2 (const uint)
 0:61            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:61              'o2' (uniform 2-component vector of int)
-0:61              'o2' (uniform 2-component vector of int)
-0:61              'o2' (uniform 2-component vector of int)
-0:61              'o2' (uniform 2-component vector of int)
+0:61              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:61                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61                Constant:
+0:61                  5 (const uint)
+0:61              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:61                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61                Constant:
+0:61                  5 (const uint)
+0:61              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:61                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61                Constant:
+0:61                  5 (const uint)
+0:61              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:61                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61                Constant:
+0:61                  5 (const uint)
 0:61            Constant:
 0:61              1 (const int)
 0:62      Sequence
@@ -153,12 +264,27 @@ gl_FragCoord origin is upper left
 0:62            Construct combined texture-sampler (temp usampler2DArray)
 0:62              'g_tTex2du4a' (uniform utexture2DArray)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:62            'c3' (uniform 3-component vector of float)
+0:62            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62              Constant:
+0:62                2 (const uint)
 0:62            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:62              'o2' (uniform 2-component vector of int)
-0:62              'o2' (uniform 2-component vector of int)
-0:62              'o2' (uniform 2-component vector of int)
-0:62              'o2' (uniform 2-component vector of int)
+0:62              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62                Constant:
+0:62                  5 (const uint)
+0:62              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62                Constant:
+0:62                  5 (const uint)
+0:62              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62                Constant:
+0:62                  5 (const uint)
+0:62              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62                Constant:
+0:62                  5 (const uint)
 0:62            Constant:
 0:62              1 (const int)
 0:72      Sequence
@@ -168,8 +294,14 @@ gl_FragCoord origin is upper left
 0:72            Construct combined texture-sampler (temp sampler2DArray)
 0:72              'g_tTex2df4a' (uniform texture2DArray)
 0:72              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:72            'c3' (uniform 3-component vector of float)
-0:72            'o2' (uniform 2-component vector of int)
+0:72            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:72              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:72              Constant:
+0:72                2 (const uint)
+0:72            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:72              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:72              Constant:
+0:72                5 (const uint)
 0:72            Constant:
 0:72              2 (const int)
 0:73      Sequence
@@ -179,8 +311,14 @@ gl_FragCoord origin is upper left
 0:73            Construct combined texture-sampler (temp isampler2DArray)
 0:73              'g_tTex2di4a' (uniform itexture2DArray)
 0:73              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:73            'c3' (uniform 3-component vector of float)
-0:73            'o2' (uniform 2-component vector of int)
+0:73            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:73              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:73              Constant:
+0:73                2 (const uint)
+0:73            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:73              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:73              Constant:
+0:73                5 (const uint)
 0:73            Constant:
 0:73              2 (const int)
 0:74      Sequence
@@ -190,8 +328,14 @@ gl_FragCoord origin is upper left
 0:74            Construct combined texture-sampler (temp usampler2DArray)
 0:74              'g_tTex2du4a' (uniform utexture2DArray)
 0:74              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:74            'c3' (uniform 3-component vector of float)
-0:74            'o2' (uniform 2-component vector of int)
+0:74            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:74              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:74              Constant:
+0:74                2 (const uint)
+0:74            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:74              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:74              Constant:
+0:74                5 (const uint)
 0:74            Constant:
 0:74              2 (const int)
 0:76      Sequence
@@ -201,12 +345,27 @@ gl_FragCoord origin is upper left
 0:76            Construct combined texture-sampler (temp sampler2DArray)
 0:76              'g_tTex2df4a' (uniform texture2DArray)
 0:76              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:76            'c3' (uniform 3-component vector of float)
+0:76            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:76              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76              Constant:
+0:76                2 (const uint)
 0:76            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:76              'o2' (uniform 2-component vector of int)
-0:76              'o2' (uniform 2-component vector of int)
-0:76              'o2' (uniform 2-component vector of int)
-0:76              'o2' (uniform 2-component vector of int)
+0:76              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:76                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76                Constant:
+0:76                  5 (const uint)
+0:76              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:76                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76                Constant:
+0:76                  5 (const uint)
+0:76              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:76                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76                Constant:
+0:76                  5 (const uint)
+0:76              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:76                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76                Constant:
+0:76                  5 (const uint)
 0:76            Constant:
 0:76              2 (const int)
 0:77      Sequence
@@ -216,12 +375,27 @@ gl_FragCoord origin is upper left
 0:77            Construct combined texture-sampler (temp isampler2DArray)
 0:77              'g_tTex2di4a' (uniform itexture2DArray)
 0:77              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:77            'c3' (uniform 3-component vector of float)
+0:77            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:77              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77              Constant:
+0:77                2 (const uint)
 0:77            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:77              'o2' (uniform 2-component vector of int)
-0:77              'o2' (uniform 2-component vector of int)
-0:77              'o2' (uniform 2-component vector of int)
-0:77              'o2' (uniform 2-component vector of int)
+0:77              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:77                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77                Constant:
+0:77                  5 (const uint)
+0:77              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:77                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77                Constant:
+0:77                  5 (const uint)
+0:77              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:77                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77                Constant:
+0:77                  5 (const uint)
+0:77              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:77                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77                Constant:
+0:77                  5 (const uint)
 0:77            Constant:
 0:77              2 (const int)
 0:78      Sequence
@@ -231,12 +405,27 @@ gl_FragCoord origin is upper left
 0:78            Construct combined texture-sampler (temp usampler2DArray)
 0:78              'g_tTex2du4a' (uniform utexture2DArray)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:78            'c3' (uniform 3-component vector of float)
+0:78            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:78              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78              Constant:
+0:78                2 (const uint)
 0:78            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:78              'o2' (uniform 2-component vector of int)
-0:78              'o2' (uniform 2-component vector of int)
-0:78              'o2' (uniform 2-component vector of int)
-0:78              'o2' (uniform 2-component vector of int)
+0:78              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78                Constant:
+0:78                  5 (const uint)
+0:78              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78                Constant:
+0:78                  5 (const uint)
+0:78              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78                Constant:
+0:78                  5 (const uint)
+0:78              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78                Constant:
+0:78                  5 (const uint)
 0:78            Constant:
 0:78              2 (const int)
 0:88      Sequence
@@ -246,8 +435,14 @@ gl_FragCoord origin is upper left
 0:88            Construct combined texture-sampler (temp sampler2DArray)
 0:88              'g_tTex2df4a' (uniform texture2DArray)
 0:88              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:88            'c3' (uniform 3-component vector of float)
-0:88            'o2' (uniform 2-component vector of int)
+0:88            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:88              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:88              Constant:
+0:88                2 (const uint)
+0:88            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:88              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:88              Constant:
+0:88                5 (const uint)
 0:88            Constant:
 0:88              3 (const int)
 0:89      Sequence
@@ -257,8 +452,14 @@ gl_FragCoord origin is upper left
 0:89            Construct combined texture-sampler (temp isampler2DArray)
 0:89              'g_tTex2di4a' (uniform itexture2DArray)
 0:89              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:89            'c3' (uniform 3-component vector of float)
-0:89            'o2' (uniform 2-component vector of int)
+0:89            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:89              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:89              Constant:
+0:89                2 (const uint)
+0:89            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:89              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:89              Constant:
+0:89                5 (const uint)
 0:89            Constant:
 0:89              3 (const int)
 0:90      Sequence
@@ -268,8 +469,14 @@ gl_FragCoord origin is upper left
 0:90            Construct combined texture-sampler (temp usampler2DArray)
 0:90              'g_tTex2du4a' (uniform utexture2DArray)
 0:90              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:90            'c3' (uniform 3-component vector of float)
-0:90            'o2' (uniform 2-component vector of int)
+0:90            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:90              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:90              Constant:
+0:90                2 (const uint)
+0:90            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:90              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:90              Constant:
+0:90                5 (const uint)
 0:90            Constant:
 0:90              3 (const int)
 0:92      Sequence
@@ -279,12 +486,27 @@ gl_FragCoord origin is upper left
 0:92            Construct combined texture-sampler (temp sampler2DArray)
 0:92              'g_tTex2df4a' (uniform texture2DArray)
 0:92              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:92            'c3' (uniform 3-component vector of float)
+0:92            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:92              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92              Constant:
+0:92                2 (const uint)
 0:92            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:92              'o2' (uniform 2-component vector of int)
-0:92              'o2' (uniform 2-component vector of int)
-0:92              'o2' (uniform 2-component vector of int)
-0:92              'o2' (uniform 2-component vector of int)
+0:92              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:92                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92                Constant:
+0:92                  5 (const uint)
+0:92              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:92                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92                Constant:
+0:92                  5 (const uint)
+0:92              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:92                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92                Constant:
+0:92                  5 (const uint)
+0:92              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:92                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92                Constant:
+0:92                  5 (const uint)
 0:92            Constant:
 0:92              3 (const int)
 0:93      Sequence
@@ -294,12 +516,27 @@ gl_FragCoord origin is upper left
 0:93            Construct combined texture-sampler (temp isampler2DArray)
 0:93              'g_tTex2di4a' (uniform itexture2DArray)
 0:93              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:93            'c3' (uniform 3-component vector of float)
+0:93            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:93              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93              Constant:
+0:93                2 (const uint)
 0:93            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:93              'o2' (uniform 2-component vector of int)
-0:93              'o2' (uniform 2-component vector of int)
-0:93              'o2' (uniform 2-component vector of int)
-0:93              'o2' (uniform 2-component vector of int)
+0:93              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:93                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93                Constant:
+0:93                  5 (const uint)
+0:93              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:93                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93                Constant:
+0:93                  5 (const uint)
+0:93              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:93                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93                Constant:
+0:93                  5 (const uint)
+0:93              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:93                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93                Constant:
+0:93                  5 (const uint)
 0:93            Constant:
 0:93              3 (const int)
 0:94      Sequence
@@ -309,12 +546,27 @@ gl_FragCoord origin is upper left
 0:94            Construct combined texture-sampler (temp usampler2DArray)
 0:94              'g_tTex2du4a' (uniform utexture2DArray)
 0:94              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:94            'c3' (uniform 3-component vector of float)
+0:94            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:94              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94              Constant:
+0:94                2 (const uint)
 0:94            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:94              'o2' (uniform 2-component vector of int)
-0:94              'o2' (uniform 2-component vector of int)
-0:94              'o2' (uniform 2-component vector of int)
-0:94              'o2' (uniform 2-component vector of int)
+0:94              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94                Constant:
+0:94                  5 (const uint)
+0:94              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94                Constant:
+0:94                  5 (const uint)
+0:94              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94                Constant:
+0:94                  5 (const uint)
+0:94              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94                Constant:
+0:94                  5 (const uint)
 0:94            Constant:
 0:94              3 (const int)
 0:106      move second child to first child (temp 4-component vector of float)
@@ -361,16 +613,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform float)
-0:?     'c2' (uniform 2-component vector of float)
-0:?     'c3' (uniform 3-component vector of float)
-0:?     'c4' (uniform 4-component vector of float)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -379,7 +624,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:33  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:33  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:33    Function Parameters: 
 0:?     Sequence
 0:40      Sequence
@@ -389,8 +634,14 @@ gl_FragCoord origin is upper left
 0:40            Construct combined texture-sampler (temp sampler2DArray)
 0:40              'g_tTex2df4a' (uniform texture2DArray)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:40            'c3' (uniform 3-component vector of float)
-0:40            'o2' (uniform 2-component vector of int)
+0:40            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:40              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:40              Constant:
+0:40                2 (const uint)
+0:40            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:40              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:40              Constant:
+0:40                5 (const uint)
 0:40            Constant:
 0:40              0 (const int)
 0:41      Sequence
@@ -400,8 +651,14 @@ gl_FragCoord origin is upper left
 0:41            Construct combined texture-sampler (temp isampler2DArray)
 0:41              'g_tTex2di4a' (uniform itexture2DArray)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:41            'c3' (uniform 3-component vector of float)
-0:41            'o2' (uniform 2-component vector of int)
+0:41            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:41              Constant:
+0:41                2 (const uint)
+0:41            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:41              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:41              Constant:
+0:41                5 (const uint)
 0:41            Constant:
 0:41              0 (const int)
 0:42      Sequence
@@ -411,8 +668,14 @@ gl_FragCoord origin is upper left
 0:42            Construct combined texture-sampler (temp usampler2DArray)
 0:42              'g_tTex2du4a' (uniform utexture2DArray)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:42            'c3' (uniform 3-component vector of float)
-0:42            'o2' (uniform 2-component vector of int)
+0:42            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:42              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:42              Constant:
+0:42                2 (const uint)
+0:42            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:42              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:42              Constant:
+0:42                5 (const uint)
 0:42            Constant:
 0:42              0 (const int)
 0:44      Sequence
@@ -422,12 +685,27 @@ gl_FragCoord origin is upper left
 0:44            Construct combined texture-sampler (temp sampler2DArray)
 0:44              'g_tTex2df4a' (uniform texture2DArray)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:44            'c3' (uniform 3-component vector of float)
+0:44            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44              Constant:
+0:44                2 (const uint)
 0:44            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:44              'o2' (uniform 2-component vector of int)
-0:44              'o2' (uniform 2-component vector of int)
-0:44              'o2' (uniform 2-component vector of int)
-0:44              'o2' (uniform 2-component vector of int)
+0:44              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:44                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44                Constant:
+0:44                  5 (const uint)
+0:44              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:44                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44                Constant:
+0:44                  5 (const uint)
+0:44              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:44                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44                Constant:
+0:44                  5 (const uint)
+0:44              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:44                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44                Constant:
+0:44                  5 (const uint)
 0:44            Constant:
 0:44              0 (const int)
 0:45      Sequence
@@ -437,12 +715,27 @@ gl_FragCoord origin is upper left
 0:45            Construct combined texture-sampler (temp isampler2DArray)
 0:45              'g_tTex2di4a' (uniform itexture2DArray)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:45            'c3' (uniform 3-component vector of float)
+0:45            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:45              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45              Constant:
+0:45                2 (const uint)
 0:45            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:45              'o2' (uniform 2-component vector of int)
-0:45              'o2' (uniform 2-component vector of int)
-0:45              'o2' (uniform 2-component vector of int)
-0:45              'o2' (uniform 2-component vector of int)
+0:45              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:45                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45                Constant:
+0:45                  5 (const uint)
+0:45              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:45                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45                Constant:
+0:45                  5 (const uint)
+0:45              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:45                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45                Constant:
+0:45                  5 (const uint)
+0:45              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:45                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:45                Constant:
+0:45                  5 (const uint)
 0:45            Constant:
 0:45              0 (const int)
 0:46      Sequence
@@ -452,12 +745,27 @@ gl_FragCoord origin is upper left
 0:46            Construct combined texture-sampler (temp usampler2DArray)
 0:46              'g_tTex2du4a' (uniform utexture2DArray)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:46            'c3' (uniform 3-component vector of float)
+0:46            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:46              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46              Constant:
+0:46                2 (const uint)
 0:46            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:46              'o2' (uniform 2-component vector of int)
-0:46              'o2' (uniform 2-component vector of int)
-0:46              'o2' (uniform 2-component vector of int)
-0:46              'o2' (uniform 2-component vector of int)
+0:46              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46                Constant:
+0:46                  5 (const uint)
+0:46              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46                Constant:
+0:46                  5 (const uint)
+0:46              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46                Constant:
+0:46                  5 (const uint)
+0:46              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:46                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:46                Constant:
+0:46                  5 (const uint)
 0:46            Constant:
 0:46              0 (const int)
 0:56      Sequence
@@ -467,8 +775,14 @@ gl_FragCoord origin is upper left
 0:56            Construct combined texture-sampler (temp sampler2DArray)
 0:56              'g_tTex2df4a' (uniform texture2DArray)
 0:56              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:56            'c3' (uniform 3-component vector of float)
-0:56            'o2' (uniform 2-component vector of int)
+0:56            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56              Constant:
+0:56                2 (const uint)
+0:56            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56              Constant:
+0:56                5 (const uint)
 0:56            Constant:
 0:56              1 (const int)
 0:57      Sequence
@@ -478,8 +792,14 @@ gl_FragCoord origin is upper left
 0:57            Construct combined texture-sampler (temp isampler2DArray)
 0:57              'g_tTex2di4a' (uniform itexture2DArray)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:57            'c3' (uniform 3-component vector of float)
-0:57            'o2' (uniform 2-component vector of int)
+0:57            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57              Constant:
+0:57                2 (const uint)
+0:57            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57              Constant:
+0:57                5 (const uint)
 0:57            Constant:
 0:57              1 (const int)
 0:58      Sequence
@@ -489,8 +809,14 @@ gl_FragCoord origin is upper left
 0:58            Construct combined texture-sampler (temp usampler2DArray)
 0:58              'g_tTex2du4a' (uniform utexture2DArray)
 0:58              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:58            'c3' (uniform 3-component vector of float)
-0:58            'o2' (uniform 2-component vector of int)
+0:58            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:58              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58              Constant:
+0:58                2 (const uint)
+0:58            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:58              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58              Constant:
+0:58                5 (const uint)
 0:58            Constant:
 0:58              1 (const int)
 0:60      Sequence
@@ -500,12 +826,27 @@ gl_FragCoord origin is upper left
 0:60            Construct combined texture-sampler (temp sampler2DArray)
 0:60              'g_tTex2df4a' (uniform texture2DArray)
 0:60              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:60            'c3' (uniform 3-component vector of float)
+0:60            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60              Constant:
+0:60                2 (const uint)
 0:60            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:60              'o2' (uniform 2-component vector of int)
-0:60              'o2' (uniform 2-component vector of int)
-0:60              'o2' (uniform 2-component vector of int)
-0:60              'o2' (uniform 2-component vector of int)
+0:60              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:60                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60                Constant:
+0:60                  5 (const uint)
+0:60              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:60                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60                Constant:
+0:60                  5 (const uint)
+0:60              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:60                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60                Constant:
+0:60                  5 (const uint)
+0:60              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:60                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:60                Constant:
+0:60                  5 (const uint)
 0:60            Constant:
 0:60              1 (const int)
 0:61      Sequence
@@ -515,12 +856,27 @@ gl_FragCoord origin is upper left
 0:61            Construct combined texture-sampler (temp isampler2DArray)
 0:61              'g_tTex2di4a' (uniform itexture2DArray)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:61            'c3' (uniform 3-component vector of float)
+0:61            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61              Constant:
+0:61                2 (const uint)
 0:61            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:61              'o2' (uniform 2-component vector of int)
-0:61              'o2' (uniform 2-component vector of int)
-0:61              'o2' (uniform 2-component vector of int)
-0:61              'o2' (uniform 2-component vector of int)
+0:61              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:61                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61                Constant:
+0:61                  5 (const uint)
+0:61              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:61                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61                Constant:
+0:61                  5 (const uint)
+0:61              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:61                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61                Constant:
+0:61                  5 (const uint)
+0:61              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:61                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61                Constant:
+0:61                  5 (const uint)
 0:61            Constant:
 0:61              1 (const int)
 0:62      Sequence
@@ -530,12 +886,27 @@ gl_FragCoord origin is upper left
 0:62            Construct combined texture-sampler (temp usampler2DArray)
 0:62              'g_tTex2du4a' (uniform utexture2DArray)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:62            'c3' (uniform 3-component vector of float)
+0:62            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62              Constant:
+0:62                2 (const uint)
 0:62            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:62              'o2' (uniform 2-component vector of int)
-0:62              'o2' (uniform 2-component vector of int)
-0:62              'o2' (uniform 2-component vector of int)
-0:62              'o2' (uniform 2-component vector of int)
+0:62              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62                Constant:
+0:62                  5 (const uint)
+0:62              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62                Constant:
+0:62                  5 (const uint)
+0:62              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62                Constant:
+0:62                  5 (const uint)
+0:62              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:62                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62                Constant:
+0:62                  5 (const uint)
 0:62            Constant:
 0:62              1 (const int)
 0:72      Sequence
@@ -545,8 +916,14 @@ gl_FragCoord origin is upper left
 0:72            Construct combined texture-sampler (temp sampler2DArray)
 0:72              'g_tTex2df4a' (uniform texture2DArray)
 0:72              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:72            'c3' (uniform 3-component vector of float)
-0:72            'o2' (uniform 2-component vector of int)
+0:72            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:72              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:72              Constant:
+0:72                2 (const uint)
+0:72            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:72              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:72              Constant:
+0:72                5 (const uint)
 0:72            Constant:
 0:72              2 (const int)
 0:73      Sequence
@@ -556,8 +933,14 @@ gl_FragCoord origin is upper left
 0:73            Construct combined texture-sampler (temp isampler2DArray)
 0:73              'g_tTex2di4a' (uniform itexture2DArray)
 0:73              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:73            'c3' (uniform 3-component vector of float)
-0:73            'o2' (uniform 2-component vector of int)
+0:73            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:73              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:73              Constant:
+0:73                2 (const uint)
+0:73            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:73              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:73              Constant:
+0:73                5 (const uint)
 0:73            Constant:
 0:73              2 (const int)
 0:74      Sequence
@@ -567,8 +950,14 @@ gl_FragCoord origin is upper left
 0:74            Construct combined texture-sampler (temp usampler2DArray)
 0:74              'g_tTex2du4a' (uniform utexture2DArray)
 0:74              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:74            'c3' (uniform 3-component vector of float)
-0:74            'o2' (uniform 2-component vector of int)
+0:74            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:74              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:74              Constant:
+0:74                2 (const uint)
+0:74            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:74              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:74              Constant:
+0:74                5 (const uint)
 0:74            Constant:
 0:74              2 (const int)
 0:76      Sequence
@@ -578,12 +967,27 @@ gl_FragCoord origin is upper left
 0:76            Construct combined texture-sampler (temp sampler2DArray)
 0:76              'g_tTex2df4a' (uniform texture2DArray)
 0:76              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:76            'c3' (uniform 3-component vector of float)
+0:76            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:76              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76              Constant:
+0:76                2 (const uint)
 0:76            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:76              'o2' (uniform 2-component vector of int)
-0:76              'o2' (uniform 2-component vector of int)
-0:76              'o2' (uniform 2-component vector of int)
-0:76              'o2' (uniform 2-component vector of int)
+0:76              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:76                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76                Constant:
+0:76                  5 (const uint)
+0:76              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:76                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76                Constant:
+0:76                  5 (const uint)
+0:76              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:76                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76                Constant:
+0:76                  5 (const uint)
+0:76              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:76                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:76                Constant:
+0:76                  5 (const uint)
 0:76            Constant:
 0:76              2 (const int)
 0:77      Sequence
@@ -593,12 +997,27 @@ gl_FragCoord origin is upper left
 0:77            Construct combined texture-sampler (temp isampler2DArray)
 0:77              'g_tTex2di4a' (uniform itexture2DArray)
 0:77              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:77            'c3' (uniform 3-component vector of float)
+0:77            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:77              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77              Constant:
+0:77                2 (const uint)
 0:77            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:77              'o2' (uniform 2-component vector of int)
-0:77              'o2' (uniform 2-component vector of int)
-0:77              'o2' (uniform 2-component vector of int)
-0:77              'o2' (uniform 2-component vector of int)
+0:77              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:77                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77                Constant:
+0:77                  5 (const uint)
+0:77              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:77                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77                Constant:
+0:77                  5 (const uint)
+0:77              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:77                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77                Constant:
+0:77                  5 (const uint)
+0:77              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:77                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:77                Constant:
+0:77                  5 (const uint)
 0:77            Constant:
 0:77              2 (const int)
 0:78      Sequence
@@ -608,12 +1027,27 @@ gl_FragCoord origin is upper left
 0:78            Construct combined texture-sampler (temp usampler2DArray)
 0:78              'g_tTex2du4a' (uniform utexture2DArray)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:78            'c3' (uniform 3-component vector of float)
+0:78            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:78              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78              Constant:
+0:78                2 (const uint)
 0:78            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:78              'o2' (uniform 2-component vector of int)
-0:78              'o2' (uniform 2-component vector of int)
-0:78              'o2' (uniform 2-component vector of int)
-0:78              'o2' (uniform 2-component vector of int)
+0:78              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78                Constant:
+0:78                  5 (const uint)
+0:78              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78                Constant:
+0:78                  5 (const uint)
+0:78              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78                Constant:
+0:78                  5 (const uint)
+0:78              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:78                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:78                Constant:
+0:78                  5 (const uint)
 0:78            Constant:
 0:78              2 (const int)
 0:88      Sequence
@@ -623,8 +1057,14 @@ gl_FragCoord origin is upper left
 0:88            Construct combined texture-sampler (temp sampler2DArray)
 0:88              'g_tTex2df4a' (uniform texture2DArray)
 0:88              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:88            'c3' (uniform 3-component vector of float)
-0:88            'o2' (uniform 2-component vector of int)
+0:88            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:88              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:88              Constant:
+0:88                2 (const uint)
+0:88            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:88              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:88              Constant:
+0:88                5 (const uint)
 0:88            Constant:
 0:88              3 (const int)
 0:89      Sequence
@@ -634,8 +1074,14 @@ gl_FragCoord origin is upper left
 0:89            Construct combined texture-sampler (temp isampler2DArray)
 0:89              'g_tTex2di4a' (uniform itexture2DArray)
 0:89              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:89            'c3' (uniform 3-component vector of float)
-0:89            'o2' (uniform 2-component vector of int)
+0:89            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:89              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:89              Constant:
+0:89                2 (const uint)
+0:89            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:89              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:89              Constant:
+0:89                5 (const uint)
 0:89            Constant:
 0:89              3 (const int)
 0:90      Sequence
@@ -645,8 +1091,14 @@ gl_FragCoord origin is upper left
 0:90            Construct combined texture-sampler (temp usampler2DArray)
 0:90              'g_tTex2du4a' (uniform utexture2DArray)
 0:90              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:90            'c3' (uniform 3-component vector of float)
-0:90            'o2' (uniform 2-component vector of int)
+0:90            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:90              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:90              Constant:
+0:90                2 (const uint)
+0:90            o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:90              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:90              Constant:
+0:90                5 (const uint)
 0:90            Constant:
 0:90              3 (const int)
 0:92      Sequence
@@ -656,12 +1108,27 @@ gl_FragCoord origin is upper left
 0:92            Construct combined texture-sampler (temp sampler2DArray)
 0:92              'g_tTex2df4a' (uniform texture2DArray)
 0:92              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:92            'c3' (uniform 3-component vector of float)
+0:92            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:92              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92              Constant:
+0:92                2 (const uint)
 0:92            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:92              'o2' (uniform 2-component vector of int)
-0:92              'o2' (uniform 2-component vector of int)
-0:92              'o2' (uniform 2-component vector of int)
-0:92              'o2' (uniform 2-component vector of int)
+0:92              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:92                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92                Constant:
+0:92                  5 (const uint)
+0:92              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:92                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92                Constant:
+0:92                  5 (const uint)
+0:92              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:92                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92                Constant:
+0:92                  5 (const uint)
+0:92              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:92                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:92                Constant:
+0:92                  5 (const uint)
 0:92            Constant:
 0:92              3 (const int)
 0:93      Sequence
@@ -671,12 +1138,27 @@ gl_FragCoord origin is upper left
 0:93            Construct combined texture-sampler (temp isampler2DArray)
 0:93              'g_tTex2di4a' (uniform itexture2DArray)
 0:93              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:93            'c3' (uniform 3-component vector of float)
+0:93            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:93              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93              Constant:
+0:93                2 (const uint)
 0:93            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:93              'o2' (uniform 2-component vector of int)
-0:93              'o2' (uniform 2-component vector of int)
-0:93              'o2' (uniform 2-component vector of int)
-0:93              'o2' (uniform 2-component vector of int)
+0:93              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:93                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93                Constant:
+0:93                  5 (const uint)
+0:93              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:93                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93                Constant:
+0:93                  5 (const uint)
+0:93              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:93                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93                Constant:
+0:93                  5 (const uint)
+0:93              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:93                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:93                Constant:
+0:93                  5 (const uint)
 0:93            Constant:
 0:93              3 (const int)
 0:94      Sequence
@@ -686,12 +1168,27 @@ gl_FragCoord origin is upper left
 0:94            Construct combined texture-sampler (temp usampler2DArray)
 0:94              'g_tTex2du4a' (uniform utexture2DArray)
 0:94              'g_sSamp' (layout(binding=0 ) uniform sampler)
-0:94            'c3' (uniform 3-component vector of float)
+0:94            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float)
+0:94              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94              Constant:
+0:94                2 (const uint)
 0:94            Construct ivec2 (temp 4-element array of 2-component vector of int)
-0:94              'o2' (uniform 2-component vector of int)
-0:94              'o2' (uniform 2-component vector of int)
-0:94              'o2' (uniform 2-component vector of int)
-0:94              'o2' (uniform 2-component vector of int)
+0:94              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94                Constant:
+0:94                  5 (const uint)
+0:94              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94                Constant:
+0:94                  5 (const uint)
+0:94              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94                Constant:
+0:94                  5 (const uint)
+0:94              o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:94                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:94                Constant:
+0:94                  5 (const uint)
 0:94            Constant:
 0:94              3 (const int)
 0:106      move second child to first child (temp 4-component vector of float)
@@ -738,20 +1235,13 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform float)
-0:?     'c2' (uniform 2-component vector of float)
-0:?     'c3' (uniform 3-component vector of float)
-0:?     'c4' (uniform 4-component vector of float)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 308
+// Id's are bound by 382
 
                               Capability Shader
                               Capability ImageGatherExtended
@@ -759,73 +1249,85 @@ gl_FragCoord origin is upper left
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 267 271
+                              EntryPoint Fragment 4  "main" 355 359
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "txval001"
                               Name 12  "g_tTex2df4a"
                               Name 16  "g_sSamp"
-                              Name 22  "c3"
-                              Name 27  "o2"
-                              Name 33  "txval011"
-                              Name 36  "g_tTex2di4a"
-                              Name 47  "txval021"
-                              Name 50  "g_tTex2du4a"
-                              Name 58  "txval004"
-                              Name 71  "txval014"
-                              Name 82  "txval024"
-                              Name 93  "txval101"
-                              Name 101  "txval111"
-                              Name 108  "txval121"
-                              Name 115  "txval104"
-                              Name 126  "txval114"
-                              Name 137  "txval124"
-                              Name 148  "txval201"
-                              Name 156  "txval211"
-                              Name 163  "txval221"
-                              Name 170  "txval204"
-                              Name 181  "txval214"
-                              Name 192  "txval224"
-                              Name 203  "txval301"
-                              Name 211  "txval311"
-                              Name 218  "txval321"
-                              Name 225  "txval304"
-                              Name 236  "txval314"
-                              Name 247  "txval324"
-                              Name 258  "PS_OUTPUT"
-                              MemberName 258(PS_OUTPUT) 0  "Color"
-                              MemberName 258(PS_OUTPUT) 1  "Depth"
-                              Name 260  "psout"
-                              Name 267  "Color"
-                              Name 271  "Depth"
-                              Name 275  "g_sSamp2d"
-                              Name 278  "g_tTex1df4a"
-                              Name 281  "g_tTex1di4a"
-                              Name 284  "g_tTex1du4a"
-                              Name 287  "g_tTexcdf4a"
-                              Name 290  "g_tTexcdi4a"
-                              Name 293  "g_tTexcdu4a"
-                              Name 295  "c1"
-                              Name 298  "c2"
-                              Name 300  "c4"
-                              Name 302  "o1"
-                              Name 305  "o3"
-                              Name 307  "o4"
+                              Name 26  "$Global"
+                              MemberName 26($Global) 0  "c1"
+                              MemberName 26($Global) 1  "c2"
+                              MemberName 26($Global) 2  "c3"
+                              MemberName 26($Global) 3  "c4"
+                              MemberName 26($Global) 4  "o1"
+                              MemberName 26($Global) 5  "o2"
+                              MemberName 26($Global) 6  "o3"
+                              MemberName 26($Global) 7  "o4"
+                              Name 28  ""
+                              Name 40  "txval011"
+                              Name 43  "g_tTex2di4a"
+                              Name 56  "txval021"
+                              Name 59  "g_tTex2du4a"
+                              Name 69  "txval004"
+                              Name 87  "txval014"
+                              Name 103  "txval024"
+                              Name 119  "txval101"
+                              Name 129  "txval111"
+                              Name 138  "txval121"
+                              Name 147  "txval104"
+                              Name 163  "txval114"
+                              Name 179  "txval124"
+                              Name 195  "txval201"
+                              Name 204  "txval211"
+                              Name 213  "txval221"
+                              Name 222  "txval204"
+                              Name 238  "txval214"
+                              Name 254  "txval224"
+                              Name 270  "txval301"
+                              Name 280  "txval311"
+                              Name 289  "txval321"
+                              Name 298  "txval304"
+                              Name 314  "txval314"
+                              Name 330  "txval324"
+                              Name 346  "PS_OUTPUT"
+                              MemberName 346(PS_OUTPUT) 0  "Color"
+                              MemberName 346(PS_OUTPUT) 1  "Depth"
+                              Name 348  "psout"
+                              Name 355  "Color"
+                              Name 359  "Depth"
+                              Name 363  "g_sSamp2d"
+                              Name 366  "g_tTex1df4a"
+                              Name 369  "g_tTex1di4a"
+                              Name 372  "g_tTex1du4a"
+                              Name 375  "g_tTexcdf4a"
+                              Name 378  "g_tTexcdi4a"
+                              Name 381  "g_tTexcdu4a"
                               Decorate 12(g_tTex2df4a) DescriptorSet 0
                               Decorate 16(g_sSamp) DescriptorSet 0
                               Decorate 16(g_sSamp) Binding 0
-                              Decorate 36(g_tTex2di4a) DescriptorSet 0
-                              Decorate 50(g_tTex2du4a) DescriptorSet 0
-                              Decorate 267(Color) Location 0
-                              Decorate 271(Depth) BuiltIn FragDepth
-                              Decorate 275(g_sSamp2d) DescriptorSet 0
-                              Decorate 278(g_tTex1df4a) DescriptorSet 0
-                              Decorate 278(g_tTex1df4a) Binding 0
-                              Decorate 281(g_tTex1di4a) DescriptorSet 0
-                              Decorate 284(g_tTex1du4a) DescriptorSet 0
-                              Decorate 287(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 290(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 293(g_tTexcdu4a) DescriptorSet 0
+                              MemberDecorate 26($Global) 0 Offset 0
+                              MemberDecorate 26($Global) 1 Offset 8
+                              MemberDecorate 26($Global) 2 Offset 16
+                              MemberDecorate 26($Global) 3 Offset 32
+                              MemberDecorate 26($Global) 4 Offset 48
+                              MemberDecorate 26($Global) 5 Offset 56
+                              MemberDecorate 26($Global) 6 Offset 64
+                              MemberDecorate 26($Global) 7 Offset 80
+                              Decorate 26($Global) Block
+                              Decorate 28 DescriptorSet 0
+                              Decorate 43(g_tTex2di4a) DescriptorSet 0
+                              Decorate 59(g_tTex2du4a) DescriptorSet 0
+                              Decorate 355(Color) Location 0
+                              Decorate 359(Depth) BuiltIn FragDepth
+                              Decorate 363(g_sSamp2d) DescriptorSet 0
+                              Decorate 366(g_tTex1df4a) DescriptorSet 0
+                              Decorate 366(g_tTex1df4a) Binding 0
+                              Decorate 369(g_tTex1di4a) DescriptorSet 0
+                              Decorate 372(g_tTex1du4a) DescriptorSet 0
+                              Decorate 375(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 378(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 381(g_tTexcdu4a) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -838,326 +1340,400 @@ gl_FragCoord origin is upper left
               15:             TypePointer UniformConstant 14
      16(g_sSamp):     15(ptr) Variable UniformConstant
               18:             TypeSampledImage 10
-              20:             TypeVector 6(float) 3
-              21:             TypePointer UniformConstant 20(fvec3)
-          22(c3):     21(ptr) Variable UniformConstant
-              24:             TypeInt 32 1
-              25:             TypeVector 24(int) 2
-              26:             TypePointer UniformConstant 25(ivec2)
-          27(o2):     26(ptr) Variable UniformConstant
-              29:     24(int) Constant 0
-              31:             TypeVector 24(int) 4
-              32:             TypePointer Function 31(ivec4)
-              34:             TypeImage 24(int) 2D array sampled format:Unknown
-              35:             TypePointer UniformConstant 34
- 36(g_tTex2di4a):     35(ptr) Variable UniformConstant
-              39:             TypeSampledImage 34
-              44:             TypeInt 32 0
-              45:             TypeVector 44(int) 4
-              46:             TypePointer Function 45(ivec4)
-              48:             TypeImage 44(int) 2D array sampled format:Unknown
-              49:             TypePointer UniformConstant 48
- 50(g_tTex2du4a):     49(ptr) Variable UniformConstant
-              53:             TypeSampledImage 48
-              67:     44(int) Constant 4
-              68:             TypeArray 25(ivec2) 67
-              99:     24(int) Constant 1
-             154:     24(int) Constant 2
-             209:     24(int) Constant 3
-  258(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
-             259:             TypePointer Function 258(PS_OUTPUT)
-             261:    6(float) Constant 1065353216
-             262:    7(fvec4) ConstantComposite 261 261 261 261
-             264:             TypePointer Function 6(float)
-             266:             TypePointer Output 7(fvec4)
-      267(Color):    266(ptr) Variable Output
-             270:             TypePointer Output 6(float)
-      271(Depth):    270(ptr) Variable Output
-  275(g_sSamp2d):     15(ptr) Variable UniformConstant
-             276:             TypeImage 6(float) 1D array sampled format:Unknown
-             277:             TypePointer UniformConstant 276
-278(g_tTex1df4a):    277(ptr) Variable UniformConstant
-             279:             TypeImage 24(int) 1D array sampled format:Unknown
-             280:             TypePointer UniformConstant 279
-281(g_tTex1di4a):    280(ptr) Variable UniformConstant
-             282:             TypeImage 44(int) 1D array sampled format:Unknown
-             283:             TypePointer UniformConstant 282
-284(g_tTex1du4a):    283(ptr) Variable UniformConstant
-             285:             TypeImage 6(float) Cube array sampled format:Unknown
-             286:             TypePointer UniformConstant 285
-287(g_tTexcdf4a):    286(ptr) Variable UniformConstant
-             288:             TypeImage 24(int) Cube array sampled format:Unknown
-             289:             TypePointer UniformConstant 288
-290(g_tTexcdi4a):    289(ptr) Variable UniformConstant
-             291:             TypeImage 44(int) Cube array sampled format:Unknown
-             292:             TypePointer UniformConstant 291
-293(g_tTexcdu4a):    292(ptr) Variable UniformConstant
-             294:             TypePointer UniformConstant 6(float)
-         295(c1):    294(ptr) Variable UniformConstant
-             296:             TypeVector 6(float) 2
-             297:             TypePointer UniformConstant 296(fvec2)
-         298(c2):    297(ptr) Variable UniformConstant
-             299:             TypePointer UniformConstant 7(fvec4)
-         300(c4):    299(ptr) Variable UniformConstant
-             301:             TypePointer UniformConstant 24(int)
-         302(o1):    301(ptr) Variable UniformConstant
-             303:             TypeVector 24(int) 3
-             304:             TypePointer UniformConstant 303(ivec3)
-         305(o3):    304(ptr) Variable UniformConstant
-             306:             TypePointer UniformConstant 31(ivec4)
-         307(o4):    306(ptr) Variable UniformConstant
+              20:             TypeVector 6(float) 2
+              21:             TypeVector 6(float) 3
+              22:             TypeInt 32 1
+              23:             TypeVector 22(int) 2
+              24:             TypeVector 22(int) 3
+              25:             TypeVector 22(int) 4
+     26($Global):             TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) 22(int) 23(ivec2) 24(ivec3) 25(ivec4)
+              27:             TypePointer Uniform 26($Global)
+              28:     27(ptr) Variable Uniform
+              29:     22(int) Constant 2
+              30:             TypePointer Uniform 21(fvec3)
+              33:     22(int) Constant 5
+              34:             TypePointer Uniform 23(ivec2)
+              37:     22(int) Constant 0
+              39:             TypePointer Function 25(ivec4)
+              41:             TypeImage 22(int) 2D array sampled format:Unknown
+              42:             TypePointer UniformConstant 41
+ 43(g_tTex2di4a):     42(ptr) Variable UniformConstant
+              46:             TypeSampledImage 41
+              53:             TypeInt 32 0
+              54:             TypeVector 53(int) 4
+              55:             TypePointer Function 54(ivec4)
+              57:             TypeImage 53(int) 2D array sampled format:Unknown
+              58:             TypePointer UniformConstant 57
+ 59(g_tTex2du4a):     58(ptr) Variable UniformConstant
+              62:             TypeSampledImage 57
+              83:     53(int) Constant 4
+              84:             TypeArray 23(ivec2) 83
+             127:     22(int) Constant 1
+             278:     22(int) Constant 3
+  346(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+             347:             TypePointer Function 346(PS_OUTPUT)
+             349:    6(float) Constant 1065353216
+             350:    7(fvec4) ConstantComposite 349 349 349 349
+             352:             TypePointer Function 6(float)
+             354:             TypePointer Output 7(fvec4)
+      355(Color):    354(ptr) Variable Output
+             358:             TypePointer Output 6(float)
+      359(Depth):    358(ptr) Variable Output
+  363(g_sSamp2d):     15(ptr) Variable UniformConstant
+             364:             TypeImage 6(float) 1D array sampled format:Unknown
+             365:             TypePointer UniformConstant 364
+366(g_tTex1df4a):    365(ptr) Variable UniformConstant
+             367:             TypeImage 22(int) 1D array sampled format:Unknown
+             368:             TypePointer UniformConstant 367
+369(g_tTex1di4a):    368(ptr) Variable UniformConstant
+             370:             TypeImage 53(int) 1D array sampled format:Unknown
+             371:             TypePointer UniformConstant 370
+372(g_tTex1du4a):    371(ptr) Variable UniformConstant
+             373:             TypeImage 6(float) Cube array sampled format:Unknown
+             374:             TypePointer UniformConstant 373
+375(g_tTexcdf4a):    374(ptr) Variable UniformConstant
+             376:             TypeImage 22(int) Cube array sampled format:Unknown
+             377:             TypePointer UniformConstant 376
+378(g_tTexcdi4a):    377(ptr) Variable UniformConstant
+             379:             TypeImage 53(int) Cube array sampled format:Unknown
+             380:             TypePointer UniformConstant 379
+381(g_tTexcdu4a):    380(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
      9(txval001):      8(ptr) Variable Function
-    33(txval011):     32(ptr) Variable Function
-    47(txval021):     46(ptr) Variable Function
-    58(txval004):      8(ptr) Variable Function
-    71(txval014):     32(ptr) Variable Function
-    82(txval024):     46(ptr) Variable Function
-    93(txval101):      8(ptr) Variable Function
-   101(txval111):     32(ptr) Variable Function
-   108(txval121):     46(ptr) Variable Function
-   115(txval104):      8(ptr) Variable Function
-   126(txval114):     32(ptr) Variable Function
-   137(txval124):     46(ptr) Variable Function
-   148(txval201):      8(ptr) Variable Function
-   156(txval211):     32(ptr) Variable Function
-   163(txval221):     46(ptr) Variable Function
-   170(txval204):      8(ptr) Variable Function
-   181(txval214):     32(ptr) Variable Function
-   192(txval224):     46(ptr) Variable Function
-   203(txval301):      8(ptr) Variable Function
-   211(txval311):     32(ptr) Variable Function
-   218(txval321):     46(ptr) Variable Function
-   225(txval304):      8(ptr) Variable Function
-   236(txval314):     32(ptr) Variable Function
-   247(txval324):     46(ptr) Variable Function
-      260(psout):    259(ptr) Variable Function
+    40(txval011):     39(ptr) Variable Function
+    56(txval021):     55(ptr) Variable Function
+    69(txval004):      8(ptr) Variable Function
+    87(txval014):     39(ptr) Variable Function
+   103(txval024):     55(ptr) Variable Function
+   119(txval101):      8(ptr) Variable Function
+   129(txval111):     39(ptr) Variable Function
+   138(txval121):     55(ptr) Variable Function
+   147(txval104):      8(ptr) Variable Function
+   163(txval114):     39(ptr) Variable Function
+   179(txval124):     55(ptr) Variable Function
+   195(txval201):      8(ptr) Variable Function
+   204(txval211):     39(ptr) Variable Function
+   213(txval221):     55(ptr) Variable Function
+   222(txval204):      8(ptr) Variable Function
+   238(txval214):     39(ptr) Variable Function
+   254(txval224):     55(ptr) Variable Function
+   270(txval301):      8(ptr) Variable Function
+   280(txval311):     39(ptr) Variable Function
+   289(txval321):     55(ptr) Variable Function
+   298(txval304):      8(ptr) Variable Function
+   314(txval314):     39(ptr) Variable Function
+   330(txval324):     55(ptr) Variable Function
+      348(psout):    347(ptr) Variable Function
               13:          10 Load 12(g_tTex2df4a)
               17:          14 Load 16(g_sSamp)
               19:          18 SampledImage 13 17
-              23:   20(fvec3) Load 22(c3)
-              28:   25(ivec2) Load 27(o2)
-              30:    7(fvec4) ImageGather 19 23 29 Offset 28
-                              Store 9(txval001) 30
-              37:          34 Load 36(g_tTex2di4a)
-              38:          14 Load 16(g_sSamp)
-              40:          39 SampledImage 37 38
-              41:   20(fvec3) Load 22(c3)
-              42:   25(ivec2) Load 27(o2)
-              43:   31(ivec4) ImageGather 40 41 29 Offset 42
-                              Store 33(txval011) 43
-              51:          48 Load 50(g_tTex2du4a)
-              52:          14 Load 16(g_sSamp)
-              54:          53 SampledImage 51 52
-              55:   20(fvec3) Load 22(c3)
-              56:   25(ivec2) Load 27(o2)
-              57:   45(ivec4) ImageGather 54 55 29 Offset 56
-                              Store 47(txval021) 57
-              59:          10 Load 12(g_tTex2df4a)
-              60:          14 Load 16(g_sSamp)
-              61:          18 SampledImage 59 60
-              62:   20(fvec3) Load 22(c3)
-              63:   25(ivec2) Load 27(o2)
-              64:   25(ivec2) Load 27(o2)
-              65:   25(ivec2) Load 27(o2)
-              66:   25(ivec2) Load 27(o2)
-              69:          68 CompositeConstruct 63 64 65 66
-              70:    7(fvec4) ImageGather 61 62 29 ConstOffsets 69
-                              Store 58(txval004) 70
-              72:          34 Load 36(g_tTex2di4a)
-              73:          14 Load 16(g_sSamp)
-              74:          39 SampledImage 72 73
-              75:   20(fvec3) Load 22(c3)
-              76:   25(ivec2) Load 27(o2)
-              77:   25(ivec2) Load 27(o2)
-              78:   25(ivec2) Load 27(o2)
-              79:   25(ivec2) Load 27(o2)
-              80:          68 CompositeConstruct 76 77 78 79
-              81:   31(ivec4) ImageGather 74 75 29 ConstOffsets 80
-                              Store 71(txval014) 81
-              83:          48 Load 50(g_tTex2du4a)
-              84:          14 Load 16(g_sSamp)
-              85:          53 SampledImage 83 84
-              86:   20(fvec3) Load 22(c3)
-              87:   25(ivec2) Load 27(o2)
-              88:   25(ivec2) Load 27(o2)
-              89:   25(ivec2) Load 27(o2)
-              90:   25(ivec2) Load 27(o2)
-              91:          68 CompositeConstruct 87 88 89 90
-              92:   45(ivec4) ImageGather 85 86 29 ConstOffsets 91
-                              Store 82(txval024) 92
-              94:          10 Load 12(g_tTex2df4a)
-              95:          14 Load 16(g_sSamp)
-              96:          18 SampledImage 94 95
-              97:   20(fvec3) Load 22(c3)
-              98:   25(ivec2) Load 27(o2)
-             100:    7(fvec4) ImageGather 96 97 99 Offset 98
-                              Store 93(txval101) 100
-             102:          34 Load 36(g_tTex2di4a)
-             103:          14 Load 16(g_sSamp)
-             104:          39 SampledImage 102 103
-             105:   20(fvec3) Load 22(c3)
-             106:   25(ivec2) Load 27(o2)
-             107:   31(ivec4) ImageGather 104 105 99 Offset 106
-                              Store 101(txval111) 107
-             109:          48 Load 50(g_tTex2du4a)
-             110:          14 Load 16(g_sSamp)
-             111:          53 SampledImage 109 110
-             112:   20(fvec3) Load 22(c3)
-             113:   25(ivec2) Load 27(o2)
-             114:   45(ivec4) ImageGather 111 112 99 Offset 113
-                              Store 108(txval121) 114
-             116:          10 Load 12(g_tTex2df4a)
-             117:          14 Load 16(g_sSamp)
-             118:          18 SampledImage 116 117
-             119:   20(fvec3) Load 22(c3)
-             120:   25(ivec2) Load 27(o2)
-             121:   25(ivec2) Load 27(o2)
-             122:   25(ivec2) Load 27(o2)
-             123:   25(ivec2) Load 27(o2)
-             124:          68 CompositeConstruct 120 121 122 123
-             125:    7(fvec4) ImageGather 118 119 99 ConstOffsets 124
-                              Store 115(txval104) 125
-             127:          34 Load 36(g_tTex2di4a)
-             128:          14 Load 16(g_sSamp)
-             129:          39 SampledImage 127 128
-             130:   20(fvec3) Load 22(c3)
-             131:   25(ivec2) Load 27(o2)
-             132:   25(ivec2) Load 27(o2)
-             133:   25(ivec2) Load 27(o2)
-             134:   25(ivec2) Load 27(o2)
-             135:          68 CompositeConstruct 131 132 133 134
-             136:   31(ivec4) ImageGather 129 130 99 ConstOffsets 135
-                              Store 126(txval114) 136
-             138:          48 Load 50(g_tTex2du4a)
-             139:          14 Load 16(g_sSamp)
-             140:          53 SampledImage 138 139
-             141:   20(fvec3) Load 22(c3)
-             142:   25(ivec2) Load 27(o2)
-             143:   25(ivec2) Load 27(o2)
-             144:   25(ivec2) Load 27(o2)
-             145:   25(ivec2) Load 27(o2)
-             146:          68 CompositeConstruct 142 143 144 145
-             147:   45(ivec4) ImageGather 140 141 99 ConstOffsets 146
-                              Store 137(txval124) 147
-             149:          10 Load 12(g_tTex2df4a)
-             150:          14 Load 16(g_sSamp)
-             151:          18 SampledImage 149 150
-             152:   20(fvec3) Load 22(c3)
-             153:   25(ivec2) Load 27(o2)
-             155:    7(fvec4) ImageGather 151 152 154 Offset 153
-                              Store 148(txval201) 155
-             157:          34 Load 36(g_tTex2di4a)
-             158:          14 Load 16(g_sSamp)
-             159:          39 SampledImage 157 158
-             160:   20(fvec3) Load 22(c3)
-             161:   25(ivec2) Load 27(o2)
-             162:   31(ivec4) ImageGather 159 160 154 Offset 161
-                              Store 156(txval211) 162
-             164:          48 Load 50(g_tTex2du4a)
+              31:     30(ptr) AccessChain 28 29
+              32:   21(fvec3) Load 31
+              35:     34(ptr) AccessChain 28 33
+              36:   23(ivec2) Load 35
+              38:    7(fvec4) ImageGather 19 32 37 Offset 36
+                              Store 9(txval001) 38
+              44:          41 Load 43(g_tTex2di4a)
+              45:          14 Load 16(g_sSamp)
+              47:          46 SampledImage 44 45
+              48:     30(ptr) AccessChain 28 29
+              49:   21(fvec3) Load 48
+              50:     34(ptr) AccessChain 28 33
+              51:   23(ivec2) Load 50
+              52:   25(ivec4) ImageGather 47 49 37 Offset 51
+                              Store 40(txval011) 52
+              60:          57 Load 59(g_tTex2du4a)
+              61:          14 Load 16(g_sSamp)
+              63:          62 SampledImage 60 61
+              64:     30(ptr) AccessChain 28 29
+              65:   21(fvec3) Load 64
+              66:     34(ptr) AccessChain 28 33
+              67:   23(ivec2) Load 66
+              68:   54(ivec4) ImageGather 63 65 37 Offset 67
+                              Store 56(txval021) 68
+              70:          10 Load 12(g_tTex2df4a)
+              71:          14 Load 16(g_sSamp)
+              72:          18 SampledImage 70 71
+              73:     30(ptr) AccessChain 28 29
+              74:   21(fvec3) Load 73
+              75:     34(ptr) AccessChain 28 33
+              76:   23(ivec2) Load 75
+              77:     34(ptr) AccessChain 28 33
+              78:   23(ivec2) Load 77
+              79:     34(ptr) AccessChain 28 33
+              80:   23(ivec2) Load 79
+              81:     34(ptr) AccessChain 28 33
+              82:   23(ivec2) Load 81
+              85:          84 CompositeConstruct 76 78 80 82
+              86:    7(fvec4) ImageGather 72 74 37 ConstOffsets 85
+                              Store 69(txval004) 86
+              88:          41 Load 43(g_tTex2di4a)
+              89:          14 Load 16(g_sSamp)
+              90:          46 SampledImage 88 89
+              91:     30(ptr) AccessChain 28 29
+              92:   21(fvec3) Load 91
+              93:     34(ptr) AccessChain 28 33
+              94:   23(ivec2) Load 93
+              95:     34(ptr) AccessChain 28 33
+              96:   23(ivec2) Load 95
+              97:     34(ptr) AccessChain 28 33
+              98:   23(ivec2) Load 97
+              99:     34(ptr) AccessChain 28 33
+             100:   23(ivec2) Load 99
+             101:          84 CompositeConstruct 94 96 98 100
+             102:   25(ivec4) ImageGather 90 92 37 ConstOffsets 101
+                              Store 87(txval014) 102
+             104:          57 Load 59(g_tTex2du4a)
+             105:          14 Load 16(g_sSamp)
+             106:          62 SampledImage 104 105
+             107:     30(ptr) AccessChain 28 29
+             108:   21(fvec3) Load 107
+             109:     34(ptr) AccessChain 28 33
+             110:   23(ivec2) Load 109
+             111:     34(ptr) AccessChain 28 33
+             112:   23(ivec2) Load 111
+             113:     34(ptr) AccessChain 28 33
+             114:   23(ivec2) Load 113
+             115:     34(ptr) AccessChain 28 33
+             116:   23(ivec2) Load 115
+             117:          84 CompositeConstruct 110 112 114 116
+             118:   54(ivec4) ImageGather 106 108 37 ConstOffsets 117
+                              Store 103(txval024) 118
+             120:          10 Load 12(g_tTex2df4a)
+             121:          14 Load 16(g_sSamp)
+             122:          18 SampledImage 120 121
+             123:     30(ptr) AccessChain 28 29
+             124:   21(fvec3) Load 123
+             125:     34(ptr) AccessChain 28 33
+             126:   23(ivec2) Load 125
+             128:    7(fvec4) ImageGather 122 124 127 Offset 126
+                              Store 119(txval101) 128
+             130:          41 Load 43(g_tTex2di4a)
+             131:          14 Load 16(g_sSamp)
+             132:          46 SampledImage 130 131
+             133:     30(ptr) AccessChain 28 29
+             134:   21(fvec3) Load 133
+             135:     34(ptr) AccessChain 28 33
+             136:   23(ivec2) Load 135
+             137:   25(ivec4) ImageGather 132 134 127 Offset 136
+                              Store 129(txval111) 137
+             139:          57 Load 59(g_tTex2du4a)
+             140:          14 Load 16(g_sSamp)
+             141:          62 SampledImage 139 140
+             142:     30(ptr) AccessChain 28 29
+             143:   21(fvec3) Load 142
+             144:     34(ptr) AccessChain 28 33
+             145:   23(ivec2) Load 144
+             146:   54(ivec4) ImageGather 141 143 127 Offset 145
+                              Store 138(txval121) 146
+             148:          10 Load 12(g_tTex2df4a)
+             149:          14 Load 16(g_sSamp)
+             150:          18 SampledImage 148 149
+             151:     30(ptr) AccessChain 28 29
+             152:   21(fvec3) Load 151
+             153:     34(ptr) AccessChain 28 33
+             154:   23(ivec2) Load 153
+             155:     34(ptr) AccessChain 28 33
+             156:   23(ivec2) Load 155
+             157:     34(ptr) AccessChain 28 33
+             158:   23(ivec2) Load 157
+             159:     34(ptr) AccessChain 28 33
+             160:   23(ivec2) Load 159
+             161:          84 CompositeConstruct 154 156 158 160
+             162:    7(fvec4) ImageGather 150 152 127 ConstOffsets 161
+                              Store 147(txval104) 162
+             164:          41 Load 43(g_tTex2di4a)
              165:          14 Load 16(g_sSamp)
-             166:          53 SampledImage 164 165
-             167:   20(fvec3) Load 22(c3)
-             168:   25(ivec2) Load 27(o2)
-             169:   45(ivec4) ImageGather 166 167 154 Offset 168
-                              Store 163(txval221) 169
-             171:          10 Load 12(g_tTex2df4a)
-             172:          14 Load 16(g_sSamp)
-             173:          18 SampledImage 171 172
-             174:   20(fvec3) Load 22(c3)
-             175:   25(ivec2) Load 27(o2)
-             176:   25(ivec2) Load 27(o2)
-             177:   25(ivec2) Load 27(o2)
-             178:   25(ivec2) Load 27(o2)
-             179:          68 CompositeConstruct 175 176 177 178
-             180:    7(fvec4) ImageGather 173 174 154 ConstOffsets 179
-                              Store 170(txval204) 180
-             182:          34 Load 36(g_tTex2di4a)
-             183:          14 Load 16(g_sSamp)
-             184:          39 SampledImage 182 183
-             185:   20(fvec3) Load 22(c3)
-             186:   25(ivec2) Load 27(o2)
-             187:   25(ivec2) Load 27(o2)
-             188:   25(ivec2) Load 27(o2)
-             189:   25(ivec2) Load 27(o2)
-             190:          68 CompositeConstruct 186 187 188 189
-             191:   31(ivec4) ImageGather 184 185 154 ConstOffsets 190
-                              Store 181(txval214) 191
-             193:          48 Load 50(g_tTex2du4a)
-             194:          14 Load 16(g_sSamp)
-             195:          53 SampledImage 193 194
-             196:   20(fvec3) Load 22(c3)
-             197:   25(ivec2) Load 27(o2)
-             198:   25(ivec2) Load 27(o2)
-             199:   25(ivec2) Load 27(o2)
-             200:   25(ivec2) Load 27(o2)
-             201:          68 CompositeConstruct 197 198 199 200
-             202:   45(ivec4) ImageGather 195 196 154 ConstOffsets 201
-                              Store 192(txval224) 202
-             204:          10 Load 12(g_tTex2df4a)
-             205:          14 Load 16(g_sSamp)
-             206:          18 SampledImage 204 205
-             207:   20(fvec3) Load 22(c3)
-             208:   25(ivec2) Load 27(o2)
-             210:    7(fvec4) ImageGather 206 207 209 Offset 208
-                              Store 203(txval301) 210
-             212:          34 Load 36(g_tTex2di4a)
-             213:          14 Load 16(g_sSamp)
-             214:          39 SampledImage 212 213
-             215:   20(fvec3) Load 22(c3)
-             216:   25(ivec2) Load 27(o2)
-             217:   31(ivec4) ImageGather 214 215 209 Offset 216
-                              Store 211(txval311) 217
-             219:          48 Load 50(g_tTex2du4a)
-             220:          14 Load 16(g_sSamp)
-             221:          53 SampledImage 219 220
-             222:   20(fvec3) Load 22(c3)
-             223:   25(ivec2) Load 27(o2)
-             224:   45(ivec4) ImageGather 221 222 209 Offset 223
-                              Store 218(txval321) 224
-             226:          10 Load 12(g_tTex2df4a)
-             227:          14 Load 16(g_sSamp)
-             228:          18 SampledImage 226 227
-             229:   20(fvec3) Load 22(c3)
-             230:   25(ivec2) Load 27(o2)
-             231:   25(ivec2) Load 27(o2)
-             232:   25(ivec2) Load 27(o2)
-             233:   25(ivec2) Load 27(o2)
-             234:          68 CompositeConstruct 230 231 232 233
-             235:    7(fvec4) ImageGather 228 229 209 ConstOffsets 234
-                              Store 225(txval304) 235
-             237:          34 Load 36(g_tTex2di4a)
-             238:          14 Load 16(g_sSamp)
-             239:          39 SampledImage 237 238
-             240:   20(fvec3) Load 22(c3)
-             241:   25(ivec2) Load 27(o2)
-             242:   25(ivec2) Load 27(o2)
-             243:   25(ivec2) Load 27(o2)
-             244:   25(ivec2) Load 27(o2)
-             245:          68 CompositeConstruct 241 242 243 244
-             246:   31(ivec4) ImageGather 239 240 209 ConstOffsets 245
-                              Store 236(txval314) 246
-             248:          48 Load 50(g_tTex2du4a)
-             249:          14 Load 16(g_sSamp)
-             250:          53 SampledImage 248 249
-             251:   20(fvec3) Load 22(c3)
-             252:   25(ivec2) Load 27(o2)
-             253:   25(ivec2) Load 27(o2)
-             254:   25(ivec2) Load 27(o2)
-             255:   25(ivec2) Load 27(o2)
-             256:          68 CompositeConstruct 252 253 254 255
-             257:   45(ivec4) ImageGather 250 251 209 ConstOffsets 256
-                              Store 247(txval324) 257
-             263:      8(ptr) AccessChain 260(psout) 29
-                              Store 263 262
-             265:    264(ptr) AccessChain 260(psout) 99
-                              Store 265 261
-             268:      8(ptr) AccessChain 260(psout) 29
-             269:    7(fvec4) Load 268
-                              Store 267(Color) 269
-             272:    264(ptr) AccessChain 260(psout) 99
-             273:    6(float) Load 272
-                              Store 271(Depth) 273
+             166:          46 SampledImage 164 165
+             167:     30(ptr) AccessChain 28 29
+             168:   21(fvec3) Load 167
+             169:     34(ptr) AccessChain 28 33
+             170:   23(ivec2) Load 169
+             171:     34(ptr) AccessChain 28 33
+             172:   23(ivec2) Load 171
+             173:     34(ptr) AccessChain 28 33
+             174:   23(ivec2) Load 173
+             175:     34(ptr) AccessChain 28 33
+             176:   23(ivec2) Load 175
+             177:          84 CompositeConstruct 170 172 174 176
+             178:   25(ivec4) ImageGather 166 168 127 ConstOffsets 177
+                              Store 163(txval114) 178
+             180:          57 Load 59(g_tTex2du4a)
+             181:          14 Load 16(g_sSamp)
+             182:          62 SampledImage 180 181
+             183:     30(ptr) AccessChain 28 29
+             184:   21(fvec3) Load 183
+             185:     34(ptr) AccessChain 28 33
+             186:   23(ivec2) Load 185
+             187:     34(ptr) AccessChain 28 33
+             188:   23(ivec2) Load 187
+             189:     34(ptr) AccessChain 28 33
+             190:   23(ivec2) Load 189
+             191:     34(ptr) AccessChain 28 33
+             192:   23(ivec2) Load 191
+             193:          84 CompositeConstruct 186 188 190 192
+             194:   54(ivec4) ImageGather 182 184 127 ConstOffsets 193
+                              Store 179(txval124) 194
+             196:          10 Load 12(g_tTex2df4a)
+             197:          14 Load 16(g_sSamp)
+             198:          18 SampledImage 196 197
+             199:     30(ptr) AccessChain 28 29
+             200:   21(fvec3) Load 199
+             201:     34(ptr) AccessChain 28 33
+             202:   23(ivec2) Load 201
+             203:    7(fvec4) ImageGather 198 200 29 Offset 202
+                              Store 195(txval201) 203
+             205:          41 Load 43(g_tTex2di4a)
+             206:          14 Load 16(g_sSamp)
+             207:          46 SampledImage 205 206
+             208:     30(ptr) AccessChain 28 29
+             209:   21(fvec3) Load 208
+             210:     34(ptr) AccessChain 28 33
+             211:   23(ivec2) Load 210
+             212:   25(ivec4) ImageGather 207 209 29 Offset 211
+                              Store 204(txval211) 212
+             214:          57 Load 59(g_tTex2du4a)
+             215:          14 Load 16(g_sSamp)
+             216:          62 SampledImage 214 215
+             217:     30(ptr) AccessChain 28 29
+             218:   21(fvec3) Load 217
+             219:     34(ptr) AccessChain 28 33
+             220:   23(ivec2) Load 219
+             221:   54(ivec4) ImageGather 216 218 29 Offset 220
+                              Store 213(txval221) 221
+             223:          10 Load 12(g_tTex2df4a)
+             224:          14 Load 16(g_sSamp)
+             225:          18 SampledImage 223 224
+             226:     30(ptr) AccessChain 28 29
+             227:   21(fvec3) Load 226
+             228:     34(ptr) AccessChain 28 33
+             229:   23(ivec2) Load 228
+             230:     34(ptr) AccessChain 28 33
+             231:   23(ivec2) Load 230
+             232:     34(ptr) AccessChain 28 33
+             233:   23(ivec2) Load 232
+             234:     34(ptr) AccessChain 28 33
+             235:   23(ivec2) Load 234
+             236:          84 CompositeConstruct 229 231 233 235
+             237:    7(fvec4) ImageGather 225 227 29 ConstOffsets 236
+                              Store 222(txval204) 237
+             239:          41 Load 43(g_tTex2di4a)
+             240:          14 Load 16(g_sSamp)
+             241:          46 SampledImage 239 240
+             242:     30(ptr) AccessChain 28 29
+             243:   21(fvec3) Load 242
+             244:     34(ptr) AccessChain 28 33
+             245:   23(ivec2) Load 244
+             246:     34(ptr) AccessChain 28 33
+             247:   23(ivec2) Load 246
+             248:     34(ptr) AccessChain 28 33
+             249:   23(ivec2) Load 248
+             250:     34(ptr) AccessChain 28 33
+             251:   23(ivec2) Load 250
+             252:          84 CompositeConstruct 245 247 249 251
+             253:   25(ivec4) ImageGather 241 243 29 ConstOffsets 252
+                              Store 238(txval214) 253
+             255:          57 Load 59(g_tTex2du4a)
+             256:          14 Load 16(g_sSamp)
+             257:          62 SampledImage 255 256
+             258:     30(ptr) AccessChain 28 29
+             259:   21(fvec3) Load 258
+             260:     34(ptr) AccessChain 28 33
+             261:   23(ivec2) Load 260
+             262:     34(ptr) AccessChain 28 33
+             263:   23(ivec2) Load 262
+             264:     34(ptr) AccessChain 28 33
+             265:   23(ivec2) Load 264
+             266:     34(ptr) AccessChain 28 33
+             267:   23(ivec2) Load 266
+             268:          84 CompositeConstruct 261 263 265 267
+             269:   54(ivec4) ImageGather 257 259 29 ConstOffsets 268
+                              Store 254(txval224) 269
+             271:          10 Load 12(g_tTex2df4a)
+             272:          14 Load 16(g_sSamp)
+             273:          18 SampledImage 271 272
+             274:     30(ptr) AccessChain 28 29
+             275:   21(fvec3) Load 274
+             276:     34(ptr) AccessChain 28 33
+             277:   23(ivec2) Load 276
+             279:    7(fvec4) ImageGather 273 275 278 Offset 277
+                              Store 270(txval301) 279
+             281:          41 Load 43(g_tTex2di4a)
+             282:          14 Load 16(g_sSamp)
+             283:          46 SampledImage 281 282
+             284:     30(ptr) AccessChain 28 29
+             285:   21(fvec3) Load 284
+             286:     34(ptr) AccessChain 28 33
+             287:   23(ivec2) Load 286
+             288:   25(ivec4) ImageGather 283 285 278 Offset 287
+                              Store 280(txval311) 288
+             290:          57 Load 59(g_tTex2du4a)
+             291:          14 Load 16(g_sSamp)
+             292:          62 SampledImage 290 291
+             293:     30(ptr) AccessChain 28 29
+             294:   21(fvec3) Load 293
+             295:     34(ptr) AccessChain 28 33
+             296:   23(ivec2) Load 295
+             297:   54(ivec4) ImageGather 292 294 278 Offset 296
+                              Store 289(txval321) 297
+             299:          10 Load 12(g_tTex2df4a)
+             300:          14 Load 16(g_sSamp)
+             301:          18 SampledImage 299 300
+             302:     30(ptr) AccessChain 28 29
+             303:   21(fvec3) Load 302
+             304:     34(ptr) AccessChain 28 33
+             305:   23(ivec2) Load 304
+             306:     34(ptr) AccessChain 28 33
+             307:   23(ivec2) Load 306
+             308:     34(ptr) AccessChain 28 33
+             309:   23(ivec2) Load 308
+             310:     34(ptr) AccessChain 28 33
+             311:   23(ivec2) Load 310
+             312:          84 CompositeConstruct 305 307 309 311
+             313:    7(fvec4) ImageGather 301 303 278 ConstOffsets 312
+                              Store 298(txval304) 313
+             315:          41 Load 43(g_tTex2di4a)
+             316:          14 Load 16(g_sSamp)
+             317:          46 SampledImage 315 316
+             318:     30(ptr) AccessChain 28 29
+             319:   21(fvec3) Load 318
+             320:     34(ptr) AccessChain 28 33
+             321:   23(ivec2) Load 320
+             322:     34(ptr) AccessChain 28 33
+             323:   23(ivec2) Load 322
+             324:     34(ptr) AccessChain 28 33
+             325:   23(ivec2) Load 324
+             326:     34(ptr) AccessChain 28 33
+             327:   23(ivec2) Load 326
+             328:          84 CompositeConstruct 321 323 325 327
+             329:   25(ivec4) ImageGather 317 319 278 ConstOffsets 328
+                              Store 314(txval314) 329
+             331:          57 Load 59(g_tTex2du4a)
+             332:          14 Load 16(g_sSamp)
+             333:          62 SampledImage 331 332
+             334:     30(ptr) AccessChain 28 29
+             335:   21(fvec3) Load 334
+             336:     34(ptr) AccessChain 28 33
+             337:   23(ivec2) Load 336
+             338:     34(ptr) AccessChain 28 33
+             339:   23(ivec2) Load 338
+             340:     34(ptr) AccessChain 28 33
+             341:   23(ivec2) Load 340
+             342:     34(ptr) AccessChain 28 33
+             343:   23(ivec2) Load 342
+             344:          84 CompositeConstruct 337 339 341 343
+             345:   54(ivec4) ImageGather 333 335 278 ConstOffsets 344
+                              Store 330(txval324) 345
+             351:      8(ptr) AccessChain 348(psout) 37
+                              Store 351 350
+             353:    352(ptr) AccessChain 348(psout) 127
+                              Store 353 349
+             356:      8(ptr) AccessChain 348(psout) 37
+             357:    7(fvec4) Load 356
+                              Store 355(Color) 357
+             360:    352(ptr) AccessChain 348(psout) 127
+             361:    6(float) Load 360
+                              Store 359(Depth) 361
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
index 18b35e4c8..8aba16ae2 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.getdimensions.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:46  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:46  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:46    Function Parameters: 
 0:?     Sequence
 0:65      Sequence
@@ -1114,7 +1114,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:46  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:46  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:46    Function Parameters: 
 0:?     Sequence
 0:65      Sequence
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
index 3c063c129..1d72e873a 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
@@ -1,7 +1,7 @@
 hlsl.getdimensions.dx10.vert
 Shader version: 450
 0:? Sequence
-0:11  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:11  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:11    Function Parameters: 
 0:?     Sequence
 0:21      Sequence
@@ -56,7 +56,7 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:11  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:11  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:11    Function Parameters: 
 0:?     Sequence
 0:21      Sequence
diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
index a44e9445e..41f6ca2dd 100644
--- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
+++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
@@ -7,7 +7,7 @@ ERROR: 2 compilation errors.  No code generated.
 Shader version: 450
 gl_FragCoord origin is upper left
 ERROR: node is still EOpNull!
-0:13  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:13  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:13    Function Parameters: 
 0:?     Sequence
 0:16      Sequence
@@ -72,7 +72,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 ERROR: node is still EOpNull!
-0:13  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:13  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:13    Function Parameters: 
 0:?     Sequence
 0:16      Sequence
diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out
index 499015a48..3b329ae17 100755
--- a/Test/baseResults/hlsl.if.frag.out
+++ b/Test/baseResults/hlsl.if.frag.out
@@ -2,7 +2,7 @@ hlsl.if.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -103,7 +103,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out
index 99acc2358..b31921b49 100755
--- a/Test/baseResults/hlsl.init.frag.out
+++ b/Test/baseResults/hlsl.init.frag.out
@@ -78,7 +78,7 @@ gl_FragCoord origin is upper left
 0:18      Constant:
 0:18        4 (const uint)
 0:18        5 (const uint)
-0:21  Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:21  Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
 0:21    Function Parameters: 
 0:21      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -236,7 +236,7 @@ gl_FragCoord origin is upper left
 0:18      Constant:
 0:18        4 (const uint)
 0:18        5 (const uint)
-0:21  Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:21  Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
 0:21    Function Parameters: 
 0:21      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out
index 3657cb228..9ba8b1184 100644
--- a/Test/baseResults/hlsl.init2.frag.out
+++ b/Test/baseResults/hlsl.init2.frag.out
@@ -2,7 +2,7 @@ hlsl.init2.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:3  Function Definition: Test1( (global void)
+0:3  Function Definition: Test1( (temp void)
 0:3    Function Parameters: 
 0:?     Sequence
 0:5      Sequence
@@ -29,10 +29,10 @@ gl_FragCoord origin is upper left
 0:20            8.000000
 0:20            9.000000
 0:20            10.000000
-0:26  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:26  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:26    Function Parameters: 
 0:?     Sequence
-0:27      Function Call: Test1( (global void)
+0:27      Function Call: Test1( (temp void)
 0:30      move second child to first child (temp 4-component vector of float)
 0:30        color: direct index for structure (temp 4-component vector of float)
 0:30          'ps_output' (temp structure{temp 4-component vector of float color})
@@ -62,7 +62,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:3  Function Definition: Test1( (global void)
+0:3  Function Definition: Test1( (temp void)
 0:3    Function Parameters: 
 0:?     Sequence
 0:5      Sequence
@@ -89,10 +89,10 @@ gl_FragCoord origin is upper left
 0:20            8.000000
 0:20            9.000000
 0:20            10.000000
-0:26  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:26  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:26    Function Parameters: 
 0:?     Sequence
-0:27      Function Call: Test1( (global void)
+0:27      Function Call: Test1( (temp void)
 0:30      move second child to first child (temp 4-component vector of float)
 0:30        color: direct index for structure (temp 4-component vector of float)
 0:30          'ps_output' (temp structure{temp 4-component vector of float color})
diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out
index 2fcb72226..b3b3d8fd0 100644
--- a/Test/baseResults/hlsl.inoutquals.frag.out
+++ b/Test/baseResults/hlsl.inoutquals.frag.out
@@ -2,7 +2,7 @@ hlsl.inoutquals.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:8  Function Definition: MyFunc(f1;f1;f1; (global void)
+0:8  Function Definition: MyFunc(f1;f1;f1; (temp void)
 0:8    Function Parameters: 
 0:8      'x' (in float)
 0:8      'y' (out float)
@@ -18,7 +18,7 @@ gl_FragCoord origin is upper left
 0:11        'x' (in float)
 0:11        Constant:
 0:11          -1.000000
-0:15  Function Definition: main(vf4; (global structure{temp 4-component vector of float Color, temp float Depth})
+0:15  Function Definition: main(vf4; (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:15    Function Parameters: 
 0:15      'inpos' (noperspective in 4-component vector of float FragCoord)
 0:?     Sequence
@@ -31,7 +31,7 @@ gl_FragCoord origin is upper left
 0:18          'z' (temp float)
 0:18          Constant:
 0:18            3.000000
-0:19      Function Call: MyFunc(f1;f1;f1; (global void)
+0:19      Function Call: MyFunc(f1;f1;f1; (temp void)
 0:19        'x' (temp float)
 0:19        'y' (temp float)
 0:19        'z' (temp float)
@@ -82,7 +82,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:8  Function Definition: MyFunc(f1;f1;f1; (global void)
+0:8  Function Definition: MyFunc(f1;f1;f1; (temp void)
 0:8    Function Parameters: 
 0:8      'x' (in float)
 0:8      'y' (out float)
@@ -98,7 +98,7 @@ gl_FragCoord origin is upper left
 0:11        'x' (in float)
 0:11        Constant:
 0:11          -1.000000
-0:15  Function Definition: main(vf4; (global structure{temp 4-component vector of float Color, temp float Depth})
+0:15  Function Definition: main(vf4; (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:15    Function Parameters: 
 0:15      'inpos' (noperspective in 4-component vector of float FragCoord)
 0:?     Sequence
@@ -111,7 +111,7 @@ gl_FragCoord origin is upper left
 0:18          'z' (temp float)
 0:18          Constant:
 0:18            3.000000
-0:19      Function Call: MyFunc(f1;f1;f1; (global void)
+0:19      Function Call: MyFunc(f1;f1;f1; (temp void)
 0:19        'x' (temp float)
 0:19        'y' (temp float)
 0:19        'z' (temp float)
diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
index 95e172588..5d92dd1f5 100644
--- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
@@ -2,7 +2,7 @@ hlsl.intrinsics.barriers.comp
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:3  Function Definition: ComputeShaderFunction( (global float)
+0:3  Function Definition: ComputeShaderFunction( (temp float)
 0:3    Function Parameters: 
 0:?     Sequence
 0:4      MemoryBarrier (global void)
@@ -27,7 +27,7 @@ Linked compute stage:
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:3  Function Definition: ComputeShaderFunction( (global float)
+0:3  Function Definition: ComputeShaderFunction( (temp float)
 0:3    Function Parameters: 
 0:?     Sequence
 0:4      MemoryBarrier (global void)
diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
index b760c65e0..f73397551 100644
--- a/Test/baseResults/hlsl.intrinsics.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.comp.out
@@ -2,7 +2,7 @@ hlsl.intrinsics.comp
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:17  Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:17  Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (temp float)
 0:17    Function Parameters: 
 0:17      'inF0' (in float)
 0:17      'inF1' (in float)
@@ -74,7 +74,7 @@ local_size = (1, 1, 1)
 0:41      Branch: Return with expression
 0:41        Constant:
 0:41          0.000000
-0:45  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:45  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float)
 0:45    Function Parameters: 
 0:45      'inF0' (in 1-component vector of float)
 0:45      'inF1' (in 1-component vector of float)
@@ -83,7 +83,7 @@ local_size = (1, 1, 1)
 0:47      Branch: Return with expression
 0:47        Constant:
 0:47          0.000000
-0:51  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:51  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
 0:51    Function Parameters: 
 0:51      'inF0' (in 2-component vector of float)
 0:51      'inF1' (in 2-component vector of float)
@@ -156,7 +156,7 @@ local_size = (1, 1, 1)
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:78  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:78  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
 0:78    Function Parameters: 
 0:78      'inF0' (in 3-component vector of float)
 0:78      'inF1' (in 3-component vector of float)
@@ -230,7 +230,7 @@ local_size = (1, 1, 1)
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:105  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:105  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
 0:105    Function Parameters: 
 0:105      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:105      'inF1' (layout(location=1 ) in 4-component vector of float)
@@ -335,7 +335,7 @@ Linked compute stage:
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:17  Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:17  Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (temp float)
 0:17    Function Parameters: 
 0:17      'inF0' (in float)
 0:17      'inF1' (in float)
@@ -407,7 +407,7 @@ local_size = (1, 1, 1)
 0:41      Branch: Return with expression
 0:41        Constant:
 0:41          0.000000
-0:45  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:45  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float)
 0:45    Function Parameters: 
 0:45      'inF0' (in 1-component vector of float)
 0:45      'inF1' (in 1-component vector of float)
@@ -416,7 +416,7 @@ local_size = (1, 1, 1)
 0:47      Branch: Return with expression
 0:47        Constant:
 0:47          0.000000
-0:51  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:51  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
 0:51    Function Parameters: 
 0:51      'inF0' (in 2-component vector of float)
 0:51      'inF1' (in 2-component vector of float)
@@ -489,7 +489,7 @@ local_size = (1, 1, 1)
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:78  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:78  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
 0:78    Function Parameters: 
 0:78      'inF0' (in 3-component vector of float)
 0:78      'inF1' (in 3-component vector of float)
@@ -563,7 +563,7 @@ local_size = (1, 1, 1)
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:105  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:105  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
 0:105    Function Parameters: 
 0:105      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:105      'inF1' (layout(location=1 ) in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out
index 0dba03292..554e55208 100644
--- a/Test/baseResults/hlsl.intrinsics.double.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.double.frag.out
@@ -2,7 +2,7 @@ hlsl.intrinsics.double.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:5  Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float)
+0:5  Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (temp float)
 0:5    Function Parameters: 
 0:5      'inDV1a' (layout(location=0 ) in double)
 0:5      'inDV1b' (layout(location=1 ) in double)
@@ -51,7 +51,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:5  Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float)
+0:5  Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (temp float)
 0:5    Function Parameters: 
 0:5      'inDV1a' (layout(location=0 ) in double)
 0:5      'inDV1b' (layout(location=1 ) in double)
diff --git a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
index a23a88334..8f8dd6101 100644
--- a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
@@ -2,7 +2,7 @@ hlsl.intrinsics.evalfns.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:3  Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void)
+0:3  Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
 0:3    Function Parameters: 
 0:3      'inF1' (layout(location=0 ) in float)
 0:3      'inF2' (layout(location=1 ) in 2-component vector of float)
@@ -57,7 +57,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:3  Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void)
+0:3  Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
 0:3    Function Parameters: 
 0:3      'inF1' (layout(location=0 ) in float)
 0:3      'inF2' (layout(location=1 ) in 2-component vector of float)
diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
index 21daced7f..5fcb5f99f 100644
--- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
@@ -9,7 +9,7 @@ ERROR: 4 compilation errors.  No code generated.
 Shader version: 450
 gl_FragCoord origin is upper left
 ERROR: node is still EOpNull!
-0:2  Function Definition: PixelShaderFunctionS(f1; (global float)
+0:2  Function Definition: PixelShaderFunctionS(f1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (in float)
 0:?     Sequence
@@ -19,14 +19,14 @@ ERROR: node is still EOpNull!
 0:5      Branch: Return with expression
 0:5        Constant:
 0:5          0.000000
-0:9  Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float)
+0:9  Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of float)
 0:9    Function Parameters: 
 0:9      'inF0' (in 1-component vector of float)
 0:?     Sequence
 0:11      Branch: Return with expression
 0:11        Constant:
 0:11          0.000000
-0:15  Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float)
+0:15  Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float)
 0:15    Function Parameters: 
 0:15      'inF0' (in 2-component vector of float)
 0:?     Sequence
@@ -37,7 +37,7 @@ ERROR: node is still EOpNull!
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:22  Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float)
+0:22  Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of float)
 0:22    Function Parameters: 
 0:22      'inF0' (in 3-component vector of float)
 0:?     Sequence
@@ -49,7 +49,7 @@ ERROR: node is still EOpNull!
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:29  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:29  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:29    Function Parameters: 
 0:29      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -76,7 +76,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 ERROR: node is still EOpNull!
-0:2  Function Definition: PixelShaderFunctionS(f1; (global float)
+0:2  Function Definition: PixelShaderFunctionS(f1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (in float)
 0:?     Sequence
@@ -86,14 +86,14 @@ ERROR: node is still EOpNull!
 0:5      Branch: Return with expression
 0:5        Constant:
 0:5          0.000000
-0:9  Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float)
+0:9  Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of float)
 0:9    Function Parameters: 
 0:9      'inF0' (in 1-component vector of float)
 0:?     Sequence
 0:11      Branch: Return with expression
 0:11        Constant:
 0:11          0.000000
-0:15  Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float)
+0:15  Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float)
 0:15    Function Parameters: 
 0:15      'inF0' (in 2-component vector of float)
 0:?     Sequence
@@ -104,7 +104,7 @@ ERROR: node is still EOpNull!
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:22  Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float)
+0:22  Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of float)
 0:22    Function Parameters: 
 0:22      'inF0' (in 3-component vector of float)
 0:?     Sequence
@@ -116,7 +116,7 @@ ERROR: node is still EOpNull!
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:29  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:29  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:29    Function Parameters: 
 0:29      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out
index 151bdb428..09f88a86e 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -2,7 +2,7 @@ hlsl.intrinsics.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:17  Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:17  Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (temp float)
 0:17    Function Parameters: 
 0:17      'inF0' (in float)
 0:17      'inF1' (in float)
@@ -339,7 +339,7 @@ gl_FragCoord origin is upper left
 0:85      Branch: Return with expression
 0:85        Constant:
 0:85          0.000000
-0:89  Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:89  Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float)
 0:89    Function Parameters: 
 0:89      'inF0' (in 1-component vector of float)
 0:89      'inF1' (in 1-component vector of float)
@@ -348,7 +348,7 @@ gl_FragCoord origin is upper left
 0:91      Branch: Return with expression
 0:91        Constant:
 0:91          0.000000
-0:95  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:95  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
 0:95    Function Parameters: 
 0:95      'inF0' (in 2-component vector of float)
 0:95      'inF1' (in 2-component vector of float)
@@ -733,7 +733,7 @@ gl_FragCoord origin is upper left
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:178  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:178  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
 0:178    Function Parameters: 
 0:178      'inF0' (in 3-component vector of float)
 0:178      'inF1' (in 3-component vector of float)
@@ -1138,7 +1138,7 @@ gl_FragCoord origin is upper left
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:260  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:260  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
 0:260    Function Parameters: 
 0:260      'inF0' (in 4-component vector of float)
 0:260      'inF1' (in 4-component vector of float)
@@ -1558,7 +1558,7 @@ gl_FragCoord origin is upper left
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:401  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:401  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float)
 0:401    Function Parameters: 
 0:401      'inF0' (in 2X2 matrix of float)
 0:401      'inF1' (in 2X2 matrix of float)
@@ -1846,7 +1846,7 @@ gl_FragCoord origin is upper left
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:410  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:410  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float)
 0:410    Function Parameters: 
 0:410      'inF0' (in 3X3 matrix of float)
 0:410      'inF1' (in 3X3 matrix of float)
@@ -2144,7 +2144,7 @@ gl_FragCoord origin is upper left
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:419  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:419  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float)
 0:419    Function Parameters: 
 0:419      'inF0' (in 4X4 matrix of float)
 0:419      'inF1' (in 4X4 matrix of float)
@@ -2456,7 +2456,7 @@ gl_FragCoord origin is upper left
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:442  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
+0:442  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void)
 0:442    Function Parameters: 
 0:442      'inF0' (in float)
 0:442      'inF1' (in float)
@@ -2519,7 +2519,7 @@ gl_FragCoord origin is upper left
 0:443          matrix-multiply (temp 2X2 matrix of float)
 0:443            'inFM1' (in 2X2 matrix of float)
 0:443            'inFM0' (in 2X2 matrix of float)
-0:449  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
+0:449  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void)
 0:449    Function Parameters: 
 0:449      'inF0' (in float)
 0:449      'inF1' (in float)
@@ -2582,7 +2582,7 @@ gl_FragCoord origin is upper left
 0:450          matrix-multiply (temp 3X3 matrix of float)
 0:450            'inFM1' (in 3X3 matrix of float)
 0:450            'inFM0' (in 3X3 matrix of float)
-0:456  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
+0:456  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void)
 0:456    Function Parameters: 
 0:456      'inF0' (in float)
 0:456      'inF1' (in float)
@@ -2645,7 +2645,7 @@ gl_FragCoord origin is upper left
 0:457          matrix-multiply (temp 4X4 matrix of float)
 0:457            'inFM1' (in 4X4 matrix of float)
 0:457            'inFM0' (in 4X4 matrix of float)
-0:466  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
+0:466  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp void)
 0:466    Function Parameters: 
 0:466      'inF0' (in float)
 0:466      'inF1' (in float)
@@ -2759,7 +2759,7 @@ gl_FragCoord origin is upper left
 0:483          matrix-multiply (temp 3X4 matrix of float)
 0:483            'inFM2x4' (in 2X4 matrix of float)
 0:483            'inFM3x2' (in 3X2 matrix of float)
-0:489  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:489  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:489    Function Parameters: 
 0:?     Sequence
 0:491      move second child to first child (temp 4-component vector of float)
@@ -2803,7 +2803,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:17  Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:17  Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (temp float)
 0:17    Function Parameters: 
 0:17      'inF0' (in float)
 0:17      'inF1' (in float)
@@ -3140,7 +3140,7 @@ gl_FragCoord origin is upper left
 0:85      Branch: Return with expression
 0:85        Constant:
 0:85          0.000000
-0:89  Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:89  Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float)
 0:89    Function Parameters: 
 0:89      'inF0' (in 1-component vector of float)
 0:89      'inF1' (in 1-component vector of float)
@@ -3149,7 +3149,7 @@ gl_FragCoord origin is upper left
 0:91      Branch: Return with expression
 0:91        Constant:
 0:91          0.000000
-0:95  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:95  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
 0:95    Function Parameters: 
 0:95      'inF0' (in 2-component vector of float)
 0:95      'inF1' (in 2-component vector of float)
@@ -3534,7 +3534,7 @@ gl_FragCoord origin is upper left
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:178  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:178  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
 0:178    Function Parameters: 
 0:178      'inF0' (in 3-component vector of float)
 0:178      'inF1' (in 3-component vector of float)
@@ -3939,7 +3939,7 @@ gl_FragCoord origin is upper left
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:260  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:260  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
 0:260    Function Parameters: 
 0:260      'inF0' (in 4-component vector of float)
 0:260      'inF1' (in 4-component vector of float)
@@ -4359,7 +4359,7 @@ gl_FragCoord origin is upper left
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:401  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:401  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float)
 0:401    Function Parameters: 
 0:401      'inF0' (in 2X2 matrix of float)
 0:401      'inF1' (in 2X2 matrix of float)
@@ -4647,7 +4647,7 @@ gl_FragCoord origin is upper left
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:410  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:410  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float)
 0:410    Function Parameters: 
 0:410      'inF0' (in 3X3 matrix of float)
 0:410      'inF1' (in 3X3 matrix of float)
@@ -4945,7 +4945,7 @@ gl_FragCoord origin is upper left
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:419  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:419  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float)
 0:419    Function Parameters: 
 0:419      'inF0' (in 4X4 matrix of float)
 0:419      'inF1' (in 4X4 matrix of float)
@@ -5257,7 +5257,7 @@ gl_FragCoord origin is upper left
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:442  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
+0:442  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void)
 0:442    Function Parameters: 
 0:442      'inF0' (in float)
 0:442      'inF1' (in float)
@@ -5320,7 +5320,7 @@ gl_FragCoord origin is upper left
 0:443          matrix-multiply (temp 2X2 matrix of float)
 0:443            'inFM1' (in 2X2 matrix of float)
 0:443            'inFM0' (in 2X2 matrix of float)
-0:449  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
+0:449  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void)
 0:449    Function Parameters: 
 0:449      'inF0' (in float)
 0:449      'inF1' (in float)
@@ -5383,7 +5383,7 @@ gl_FragCoord origin is upper left
 0:450          matrix-multiply (temp 3X3 matrix of float)
 0:450            'inFM1' (in 3X3 matrix of float)
 0:450            'inFM0' (in 3X3 matrix of float)
-0:456  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
+0:456  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void)
 0:456    Function Parameters: 
 0:456      'inF0' (in float)
 0:456      'inF1' (in float)
@@ -5446,7 +5446,7 @@ gl_FragCoord origin is upper left
 0:457          matrix-multiply (temp 4X4 matrix of float)
 0:457            'inFM1' (in 4X4 matrix of float)
 0:457            'inFM0' (in 4X4 matrix of float)
-0:466  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
+0:466  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp void)
 0:466    Function Parameters: 
 0:466      'inF0' (in float)
 0:466      'inF1' (in float)
@@ -5560,7 +5560,7 @@ gl_FragCoord origin is upper left
 0:483          matrix-multiply (temp 3X4 matrix of float)
 0:483            'inFM2x4' (in 2X4 matrix of float)
 0:483            'inFM3x2' (in 3X2 matrix of float)
-0:489  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:489  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:489    Function Parameters: 
 0:?     Sequence
 0:491      move second child to first child (temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out
index eb3cee7d7..6b393048e 100644
--- a/Test/baseResults/hlsl.intrinsics.lit.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out
@@ -2,7 +2,7 @@ hlsl.intrinsics.lit.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(f1;f1;f1; (global void)
+0:2  Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
 0:2    Function Parameters: 
 0:2      'n_dot_l' (layout(location=0 ) in float)
 0:2      'n_dot_h' (layout(location=1 ) in float)
@@ -47,7 +47,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(f1;f1;f1; (global void)
+0:2  Function Definition: PixelShaderFunction(f1;f1;f1; (temp void)
 0:2    Function Parameters: 
 0:2      'n_dot_l' (layout(location=0 ) in float)
 0:2      'n_dot_h' (layout(location=1 ) in float)
diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out
index 010086444..44dedf770 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out
@@ -2,7 +2,7 @@ hlsl.intrinsics.negative.comp
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
+0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (in float)
 0:2      'inF1' (in float)
@@ -12,7 +12,7 @@ local_size = (1, 1, 1)
 0:53      Branch: Return with expression
 0:53        Constant:
 0:53          0.000000
-0:57  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:57  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
 0:57    Function Parameters: 
 0:57      'inF0' (in 1-component vector of float)
 0:57      'inF1' (in 1-component vector of float)
@@ -22,7 +22,7 @@ local_size = (1, 1, 1)
 0:62      Branch: Return with expression
 0:62        Constant:
 0:62          0.000000
-0:66  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:66  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
 0:66    Function Parameters: 
 0:66      'inF0' (in 2-component vector of float)
 0:66      'inF1' (in 2-component vector of float)
@@ -33,7 +33,7 @@ local_size = (1, 1, 1)
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:113  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:113  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
 0:113    Function Parameters: 
 0:113      'inF0' (in 3-component vector of float)
 0:113      'inF1' (in 3-component vector of float)
@@ -45,7 +45,7 @@ local_size = (1, 1, 1)
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:158  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:158  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:158    Function Parameters: 
 0:158      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:158      'inF1' (layout(location=1 ) in 4-component vector of float)
@@ -75,7 +75,7 @@ Linked compute stage:
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
+0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (in float)
 0:2      'inF1' (in float)
@@ -85,7 +85,7 @@ local_size = (1, 1, 1)
 0:53      Branch: Return with expression
 0:53        Constant:
 0:53          0.000000
-0:57  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:57  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
 0:57    Function Parameters: 
 0:57      'inF0' (in 1-component vector of float)
 0:57      'inF1' (in 1-component vector of float)
@@ -95,7 +95,7 @@ local_size = (1, 1, 1)
 0:62      Branch: Return with expression
 0:62        Constant:
 0:62          0.000000
-0:66  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:66  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
 0:66    Function Parameters: 
 0:66      'inF0' (in 2-component vector of float)
 0:66      'inF1' (in 2-component vector of float)
@@ -106,7 +106,7 @@ local_size = (1, 1, 1)
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:113  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:113  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
 0:113    Function Parameters: 
 0:113      'inF0' (in 3-component vector of float)
 0:113      'inF1' (in 3-component vector of float)
@@ -118,7 +118,7 @@ local_size = (1, 1, 1)
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:158  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:158  Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:158    Function Parameters: 
 0:158      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:158      'inF1' (layout(location=1 ) in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.intrinsics.negative.frag.out b/Test/baseResults/hlsl.intrinsics.negative.frag.out
index 2244e8bce..29ee00957 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.frag.out
@@ -65,7 +65,7 @@ ERROR: 60 compilation errors.  No code generated.
 Shader version: 450
 gl_FragCoord origin is upper left
 ERROR: node is still EOpNull!
-0:2  Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float)
+0:2  Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (in float)
 0:2      'inF1' (in float)
@@ -142,7 +142,7 @@ ERROR: node is still EOpNull!
 0:32      Branch: Return with expression
 0:32        Constant:
 0:32          0.000000
-0:36  Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:36  Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
 0:36    Function Parameters: 
 0:36      'inF0' (in 1-component vector of float)
 0:36      'inF1' (in 1-component vector of float)
@@ -154,7 +154,7 @@ ERROR: node is still EOpNull!
 0:41      Branch: Return with expression
 0:41        Constant:
 0:41          0.000000
-0:45  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:45  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
 0:45    Function Parameters: 
 0:45      'inF0' (in 2-component vector of float)
 0:45      'inF1' (in 2-component vector of float)
@@ -197,7 +197,7 @@ ERROR: node is still EOpNull!
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:63  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:63  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
 0:63    Function Parameters: 
 0:63      'inF0' (in 3-component vector of float)
 0:63      'inF1' (in 3-component vector of float)
@@ -233,7 +233,7 @@ ERROR: node is still EOpNull!
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:80  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:80  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:80    Function Parameters: 
 0:80      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:80      'inF1' (layout(location=1 ) in 4-component vector of float)
@@ -276,7 +276,7 @@ ERROR: node is still EOpNull!
 0:?             3.000000
 0:?             4.000000
 0:92        Branch: Return
-0:115  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:115  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float)
 0:115    Function Parameters: 
 0:115      'inF0' (in 2X2 matrix of float)
 0:115      'inF1' (in 2X2 matrix of float)
@@ -314,7 +314,7 @@ ERROR: node is still EOpNull!
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:123  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:123  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float)
 0:123    Function Parameters: 
 0:123      'inF0' (in 3X3 matrix of float)
 0:123      'inF1' (in 3X3 matrix of float)
@@ -357,7 +357,7 @@ ERROR: node is still EOpNull!
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:131  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:131  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float)
 0:131    Function Parameters: 
 0:131      'inF0' (in 4X4 matrix of float)
 0:131      'inF1' (in 4X4 matrix of float)
@@ -421,7 +421,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 ERROR: node is still EOpNull!
-0:2  Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float)
+0:2  Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (in float)
 0:2      'inF1' (in float)
@@ -498,7 +498,7 @@ ERROR: node is still EOpNull!
 0:32      Branch: Return with expression
 0:32        Constant:
 0:32          0.000000
-0:36  Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:36  Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
 0:36    Function Parameters: 
 0:36      'inF0' (in 1-component vector of float)
 0:36      'inF1' (in 1-component vector of float)
@@ -510,7 +510,7 @@ ERROR: node is still EOpNull!
 0:41      Branch: Return with expression
 0:41        Constant:
 0:41          0.000000
-0:45  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:45  Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
 0:45    Function Parameters: 
 0:45      'inF0' (in 2-component vector of float)
 0:45      'inF1' (in 2-component vector of float)
@@ -553,7 +553,7 @@ ERROR: node is still EOpNull!
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:63  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:63  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
 0:63    Function Parameters: 
 0:63      'inF0' (in 3-component vector of float)
 0:63      'inF1' (in 3-component vector of float)
@@ -589,7 +589,7 @@ ERROR: node is still EOpNull!
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:80  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:80  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:80    Function Parameters: 
 0:80      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:80      'inF1' (layout(location=1 ) in 4-component vector of float)
@@ -632,7 +632,7 @@ ERROR: node is still EOpNull!
 0:?             3.000000
 0:?             4.000000
 0:92        Branch: Return
-0:115  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:115  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float)
 0:115    Function Parameters: 
 0:115      'inF0' (in 2X2 matrix of float)
 0:115      'inF1' (in 2X2 matrix of float)
@@ -670,7 +670,7 @@ ERROR: node is still EOpNull!
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:123  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:123  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float)
 0:123    Function Parameters: 
 0:123      'inF0' (in 3X3 matrix of float)
 0:123      'inF1' (in 3X3 matrix of float)
@@ -713,7 +713,7 @@ ERROR: node is still EOpNull!
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:131  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:131  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float)
 0:131    Function Parameters: 
 0:131      'inF0' (in 4X4 matrix of float)
 0:131      'inF1' (in 4X4 matrix of float)
diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out
index e702d332c..72b6fbcc2 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out
@@ -1,7 +1,7 @@
 hlsl.intrinsics.negative.vert
 Shader version: 450
 0:? Sequence
-0:15  Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float)
+0:15  Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (temp float)
 0:15    Function Parameters: 
 0:15      'inF0' (in float)
 0:15      'inF1' (in float)
@@ -11,7 +11,7 @@ Shader version: 450
 0:71      Branch: Return with expression
 0:71        Constant:
 0:71          0.000000
-0:75  Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:75  Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
 0:75    Function Parameters: 
 0:75      'inF0' (in 1-component vector of float)
 0:75      'inF1' (in 1-component vector of float)
@@ -21,7 +21,7 @@ Shader version: 450
 0:80      Branch: Return with expression
 0:80        Constant:
 0:80          0.000000
-0:84  Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:84  Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
 0:84    Function Parameters: 
 0:84      'inF0' (in 2-component vector of float)
 0:84      'inF1' (in 2-component vector of float)
@@ -32,7 +32,7 @@ Shader version: 450
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:131  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:131  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
 0:131    Function Parameters: 
 0:131      'inF0' (in 3-component vector of float)
 0:131      'inF1' (in 3-component vector of float)
@@ -44,7 +44,7 @@ Shader version: 450
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:176  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:176  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:176    Function Parameters: 
 0:176      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:176      'inF1' (layout(location=1 ) in 4-component vector of float)
@@ -60,7 +60,7 @@ Shader version: 450
 0:?             3.000000
 0:?             4.000000
 0:217        Branch: Return
-0:226  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:226  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float)
 0:226    Function Parameters: 
 0:226      'inF0' (in 2X2 matrix of float)
 0:226      'inF1' (in 2X2 matrix of float)
@@ -72,7 +72,7 @@ Shader version: 450
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:234  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:234  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float)
 0:234    Function Parameters: 
 0:234      'inF0' (in 3X3 matrix of float)
 0:234      'inF1' (in 3X3 matrix of float)
@@ -89,7 +89,7 @@ Shader version: 450
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:242  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:242  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float)
 0:242    Function Parameters: 
 0:242      'inF0' (in 4X4 matrix of float)
 0:242      'inF1' (in 4X4 matrix of float)
@@ -138,7 +138,7 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:15  Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float)
+0:15  Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (temp float)
 0:15    Function Parameters: 
 0:15      'inF0' (in float)
 0:15      'inF1' (in float)
@@ -148,7 +148,7 @@ Shader version: 450
 0:71      Branch: Return with expression
 0:71        Constant:
 0:71          0.000000
-0:75  Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:75  Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
 0:75    Function Parameters: 
 0:75      'inF0' (in 1-component vector of float)
 0:75      'inF1' (in 1-component vector of float)
@@ -158,7 +158,7 @@ Shader version: 450
 0:80      Branch: Return with expression
 0:80        Constant:
 0:80          0.000000
-0:84  Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:84  Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
 0:84    Function Parameters: 
 0:84      'inF0' (in 2-component vector of float)
 0:84      'inF1' (in 2-component vector of float)
@@ -169,7 +169,7 @@ Shader version: 450
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:131  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:131  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
 0:131    Function Parameters: 
 0:131      'inF0' (in 3-component vector of float)
 0:131      'inF1' (in 3-component vector of float)
@@ -181,7 +181,7 @@ Shader version: 450
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:176  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:176  Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
 0:176    Function Parameters: 
 0:176      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:176      'inF1' (layout(location=1 ) in 4-component vector of float)
@@ -197,7 +197,7 @@ Shader version: 450
 0:?             3.000000
 0:?             4.000000
 0:217        Branch: Return
-0:226  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:226  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float)
 0:226    Function Parameters: 
 0:226      'inF0' (in 2X2 matrix of float)
 0:226      'inF1' (in 2X2 matrix of float)
@@ -209,7 +209,7 @@ Shader version: 450
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:234  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:234  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float)
 0:234    Function Parameters: 
 0:234      'inF0' (in 3X3 matrix of float)
 0:234      'inF1' (in 3X3 matrix of float)
@@ -226,7 +226,7 @@ Shader version: 450
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:242  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:242  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float)
 0:242    Function Parameters: 
 0:242      'inF0' (in 4X4 matrix of float)
 0:242      'inF1' (in 4X4 matrix of float)
diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out
index 121c80932..811a752dc 100644
--- a/Test/baseResults/hlsl.intrinsics.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.vert.out
@@ -1,7 +1,7 @@
 hlsl.intrinsics.vert
 Shader version: 450
 0:? Sequence
-0:2  Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:2  Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (in float)
 0:2      'inF1' (in float)
@@ -142,7 +142,7 @@ Shader version: 450
 0:60      Branch: Return with expression
 0:60        Constant:
 0:60          0.000000
-0:64  Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:64  Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float)
 0:64    Function Parameters: 
 0:64      'inF0' (in 1-component vector of float)
 0:64      'inF1' (in 1-component vector of float)
@@ -151,7 +151,7 @@ Shader version: 450
 0:66      Branch: Return with expression
 0:66        Constant:
 0:66          0.000000
-0:70  Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:70  Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
 0:70    Function Parameters: 
 0:70      'inF0' (in 2-component vector of float)
 0:70      'inF1' (in 2-component vector of float)
@@ -317,7 +317,7 @@ Shader version: 450
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:140  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:140  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
 0:140    Function Parameters: 
 0:140      'inF0' (in 3-component vector of float)
 0:140      'inF1' (in 3-component vector of float)
@@ -489,7 +489,7 @@ Shader version: 450
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:211  Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:211  Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
 0:211    Function Parameters: 
 0:211      'inF0' (in 4-component vector of float)
 0:211      'inF1' (in 4-component vector of float)
@@ -681,7 +681,7 @@ Shader version: 450
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:336  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:336  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float)
 0:336    Function Parameters: 
 0:336      'inF0' (in 2X2 matrix of float)
 0:336      'inF1' (in 2X2 matrix of float)
@@ -811,7 +811,7 @@ Shader version: 450
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:345  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:345  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float)
 0:345    Function Parameters: 
 0:345      'inF0' (in 3X3 matrix of float)
 0:345      'inF1' (in 3X3 matrix of float)
@@ -946,7 +946,7 @@ Shader version: 450
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:354  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:354  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float)
 0:354    Function Parameters: 
 0:354      'inF0' (in 4X4 matrix of float)
 0:354      'inF1' (in 4X4 matrix of float)
@@ -1088,7 +1088,7 @@ Shader version: 450
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:377  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
+0:377  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void)
 0:377    Function Parameters: 
 0:377      'inF0' (in float)
 0:377      'inF1' (in float)
@@ -1151,7 +1151,7 @@ Shader version: 450
 0:378          matrix-multiply (temp 2X2 matrix of float)
 0:378            'inFM1' (in 2X2 matrix of float)
 0:378            'inFM0' (in 2X2 matrix of float)
-0:384  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
+0:384  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void)
 0:384    Function Parameters: 
 0:384      'inF0' (in float)
 0:384      'inF1' (in float)
@@ -1214,7 +1214,7 @@ Shader version: 450
 0:385          matrix-multiply (temp 3X3 matrix of float)
 0:385            'inFM1' (in 3X3 matrix of float)
 0:385            'inFM0' (in 3X3 matrix of float)
-0:391  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
+0:391  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void)
 0:391    Function Parameters: 
 0:391      'inF0' (in float)
 0:391      'inF1' (in float)
@@ -1277,7 +1277,7 @@ Shader version: 450
 0:392          matrix-multiply (temp 4X4 matrix of float)
 0:392            'inFM1' (in 4X4 matrix of float)
 0:392            'inFM0' (in 4X4 matrix of float)
-0:401  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
+0:401  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp void)
 0:401    Function Parameters: 
 0:401      'inF0' (in float)
 0:401      'inF1' (in float)
@@ -1399,7 +1399,7 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:2  Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:2  Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (temp float)
 0:2    Function Parameters: 
 0:2      'inF0' (in float)
 0:2      'inF1' (in float)
@@ -1540,7 +1540,7 @@ Shader version: 450
 0:60      Branch: Return with expression
 0:60        Constant:
 0:60          0.000000
-0:64  Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:64  Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (temp 1-component vector of float)
 0:64    Function Parameters: 
 0:64      'inF0' (in 1-component vector of float)
 0:64      'inF1' (in 1-component vector of float)
@@ -1549,7 +1549,7 @@ Shader version: 450
 0:66      Branch: Return with expression
 0:66        Constant:
 0:66          0.000000
-0:70  Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:70  Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
 0:70    Function Parameters: 
 0:70      'inF0' (in 2-component vector of float)
 0:70      'inF1' (in 2-component vector of float)
@@ -1715,7 +1715,7 @@ Shader version: 450
 0:?         Constant:
 0:?           1.000000
 0:?           2.000000
-0:140  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:140  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
 0:140    Function Parameters: 
 0:140      'inF0' (in 3-component vector of float)
 0:140      'inF1' (in 3-component vector of float)
@@ -1887,7 +1887,7 @@ Shader version: 450
 0:?           1.000000
 0:?           2.000000
 0:?           3.000000
-0:211  Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:211  Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
 0:211    Function Parameters: 
 0:211      'inF0' (in 4-component vector of float)
 0:211      'inF1' (in 4-component vector of float)
@@ -2079,7 +2079,7 @@ Shader version: 450
 0:?           2.000000
 0:?           3.000000
 0:?           4.000000
-0:336  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:336  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float)
 0:336    Function Parameters: 
 0:336      'inF0' (in 2X2 matrix of float)
 0:336      'inF1' (in 2X2 matrix of float)
@@ -2209,7 +2209,7 @@ Shader version: 450
 0:?           2.000000
 0:?           2.000000
 0:?           2.000000
-0:345  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:345  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float)
 0:345    Function Parameters: 
 0:345      'inF0' (in 3X3 matrix of float)
 0:345      'inF1' (in 3X3 matrix of float)
@@ -2344,7 +2344,7 @@ Shader version: 450
 0:?           3.000000
 0:?           3.000000
 0:?           3.000000
-0:354  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:354  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float)
 0:354    Function Parameters: 
 0:354      'inF0' (in 4X4 matrix of float)
 0:354      'inF1' (in 4X4 matrix of float)
@@ -2486,7 +2486,7 @@ Shader version: 450
 0:?           4.000000
 0:?           4.000000
 0:?           4.000000
-0:377  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
+0:377  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void)
 0:377    Function Parameters: 
 0:377      'inF0' (in float)
 0:377      'inF1' (in float)
@@ -2549,7 +2549,7 @@ Shader version: 450
 0:378          matrix-multiply (temp 2X2 matrix of float)
 0:378            'inFM1' (in 2X2 matrix of float)
 0:378            'inFM0' (in 2X2 matrix of float)
-0:384  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
+0:384  Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void)
 0:384    Function Parameters: 
 0:384      'inF0' (in float)
 0:384      'inF1' (in float)
@@ -2612,7 +2612,7 @@ Shader version: 450
 0:385          matrix-multiply (temp 3X3 matrix of float)
 0:385            'inFM1' (in 3X3 matrix of float)
 0:385            'inFM0' (in 3X3 matrix of float)
-0:391  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
+0:391  Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void)
 0:391    Function Parameters: 
 0:391      'inF0' (in float)
 0:391      'inF1' (in float)
@@ -2675,7 +2675,7 @@ Shader version: 450
 0:392          matrix-multiply (temp 4X4 matrix of float)
 0:392            'inFM1' (in 4X4 matrix of float)
 0:392            'inFM0' (in 4X4 matrix of float)
-0:401  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
+0:401  Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp void)
 0:401    Function Parameters: 
 0:401      'inF0' (in float)
 0:401      'inF1' (in float)
diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out
index 938332b7a..ef096f356 100755
--- a/Test/baseResults/hlsl.layout.frag.out
+++ b/Test/baseResults/hlsl.layout.frag.out
@@ -2,7 +2,7 @@ hlsl.layout.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:16  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:16  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:16    Function Parameters: 
 0:16      'input' (in 4-component vector of float)
 0:?     Sequence
@@ -37,7 +37,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:16  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:16  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:16    Function Parameters: 
 0:16      'input' (in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index 051f20171..0048d9adf 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -2,75 +2,129 @@ hlsl.load.2dms.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:32      textureFetch (global 4-component vector of float)
 0:32        'g_tTex2dmsf4' (uniform texture2DMS)
-0:32        'c2' (uniform 2-component vector of int)
+0:32        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:32          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:32          Constant:
+0:32            1 (const uint)
 0:32        Constant:
 0:32          3 (const int)
 0:33      textureFetch (global 4-component vector of int)
 0:33        'g_tTex2dmsi4' (uniform itexture2DMS)
-0:33        'c2' (uniform 2-component vector of int)
+0:33        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:33          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:33          Constant:
+0:33            1 (const uint)
 0:33        Constant:
 0:33          3 (const int)
 0:34      textureFetch (global 4-component vector of uint)
 0:34        'g_tTex2dmsu4' (uniform utexture2DMS)
-0:34        'c2' (uniform 2-component vector of int)
+0:34        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:34          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:34          Constant:
+0:34            1 (const uint)
 0:34        Constant:
 0:34          3 (const int)
 0:37      textureFetchOffset (global 4-component vector of float)
 0:37        'g_tTex2dmsf4' (uniform texture2DMS)
-0:37        'c2' (uniform 2-component vector of int)
+0:37        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:37          Constant:
+0:37            1 (const uint)
 0:37        Constant:
 0:37          3 (const int)
-0:37        'o2' (uniform 2-component vector of int)
+0:37        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:37          Constant:
+0:37            5 (const uint)
 0:38      textureFetchOffset (global 4-component vector of int)
 0:38        'g_tTex2dmsi4' (uniform itexture2DMS)
-0:38        'c2' (uniform 2-component vector of int)
+0:38        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:38          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:38          Constant:
+0:38            1 (const uint)
 0:38        Constant:
 0:38          3 (const int)
-0:38        'o2' (uniform 2-component vector of int)
+0:38        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:38          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:38          Constant:
+0:38            5 (const uint)
 0:39      textureFetchOffset (global 4-component vector of uint)
 0:39        'g_tTex2dmsu4' (uniform utexture2DMS)
-0:39        'c2' (uniform 2-component vector of int)
+0:39        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:39          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:39          Constant:
+0:39            1 (const uint)
 0:39        Constant:
 0:39          3 (const int)
-0:39        'o2' (uniform 2-component vector of int)
+0:39        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:39          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:39          Constant:
+0:39            5 (const uint)
 0:42      textureFetch (global 4-component vector of float)
 0:42        'g_tTex2dmsf4a' (uniform texture2DMSArray)
-0:42        'c3' (uniform 3-component vector of int)
+0:42        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:42          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:42          Constant:
+0:42            2 (const uint)
 0:42        Constant:
 0:42          3 (const int)
 0:43      textureFetch (global 4-component vector of int)
 0:43        'g_tTex2dmsi4a' (uniform itexture2DMSArray)
-0:43        'c3' (uniform 3-component vector of int)
+0:43        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:43          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:43          Constant:
+0:43            2 (const uint)
 0:43        Constant:
 0:43          3 (const int)
 0:44      textureFetch (global 4-component vector of uint)
 0:44        'g_tTex2dmsu4a' (uniform utexture2DMSArray)
-0:44        'c3' (uniform 3-component vector of int)
+0:44        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:44          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44          Constant:
+0:44            2 (const uint)
 0:44        Constant:
 0:44          3 (const int)
 0:47      textureFetchOffset (global 4-component vector of float)
 0:47        'g_tTex2dmsf4a' (uniform texture2DMSArray)
-0:47        'c3' (uniform 3-component vector of int)
+0:47        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:47          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:47          Constant:
+0:47            2 (const uint)
 0:47        Constant:
 0:47          3 (const int)
-0:47        'o2' (uniform 2-component vector of int)
+0:47        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:47          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:47          Constant:
+0:47            5 (const uint)
 0:48      textureFetchOffset (global 4-component vector of int)
 0:48        'g_tTex2dmsi4a' (uniform itexture2DMSArray)
-0:48        'c3' (uniform 3-component vector of int)
+0:48        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:48          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:48          Constant:
+0:48            2 (const uint)
 0:48        Constant:
 0:48          3 (const int)
-0:48        'o2' (uniform 2-component vector of int)
+0:48        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:48          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:48          Constant:
+0:48            5 (const uint)
 0:49      textureFetchOffset (global 4-component vector of uint)
 0:49        'g_tTex2dmsu4a' (uniform utexture2DMSArray)
-0:49        'c3' (uniform 3-component vector of int)
+0:49        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:49          Constant:
+0:49            2 (const uint)
 0:49        Constant:
 0:49          3 (const int)
-0:49        'o2' (uniform 2-component vector of int)
+0:49        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:49          Constant:
+0:49            5 (const uint)
 0:51      move second child to first child (temp 4-component vector of float)
 0:51        Color: direct index for structure (temp 4-component vector of float)
 0:51          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
@@ -111,16 +165,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:?     'g_tTex2dmsi4a' (uniform itexture2DMSArray)
 0:?     'g_tTex2dmsu4a' (uniform utexture2DMSArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -129,75 +176,129 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:32      textureFetch (global 4-component vector of float)
 0:32        'g_tTex2dmsf4' (uniform texture2DMS)
-0:32        'c2' (uniform 2-component vector of int)
+0:32        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:32          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:32          Constant:
+0:32            1 (const uint)
 0:32        Constant:
 0:32          3 (const int)
 0:33      textureFetch (global 4-component vector of int)
 0:33        'g_tTex2dmsi4' (uniform itexture2DMS)
-0:33        'c2' (uniform 2-component vector of int)
+0:33        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:33          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:33          Constant:
+0:33            1 (const uint)
 0:33        Constant:
 0:33          3 (const int)
 0:34      textureFetch (global 4-component vector of uint)
 0:34        'g_tTex2dmsu4' (uniform utexture2DMS)
-0:34        'c2' (uniform 2-component vector of int)
+0:34        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:34          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:34          Constant:
+0:34            1 (const uint)
 0:34        Constant:
 0:34          3 (const int)
 0:37      textureFetchOffset (global 4-component vector of float)
 0:37        'g_tTex2dmsf4' (uniform texture2DMS)
-0:37        'c2' (uniform 2-component vector of int)
+0:37        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:37          Constant:
+0:37            1 (const uint)
 0:37        Constant:
 0:37          3 (const int)
-0:37        'o2' (uniform 2-component vector of int)
+0:37        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:37          Constant:
+0:37            5 (const uint)
 0:38      textureFetchOffset (global 4-component vector of int)
 0:38        'g_tTex2dmsi4' (uniform itexture2DMS)
-0:38        'c2' (uniform 2-component vector of int)
+0:38        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:38          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:38          Constant:
+0:38            1 (const uint)
 0:38        Constant:
 0:38          3 (const int)
-0:38        'o2' (uniform 2-component vector of int)
+0:38        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:38          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:38          Constant:
+0:38            5 (const uint)
 0:39      textureFetchOffset (global 4-component vector of uint)
 0:39        'g_tTex2dmsu4' (uniform utexture2DMS)
-0:39        'c2' (uniform 2-component vector of int)
+0:39        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:39          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:39          Constant:
+0:39            1 (const uint)
 0:39        Constant:
 0:39          3 (const int)
-0:39        'o2' (uniform 2-component vector of int)
+0:39        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:39          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:39          Constant:
+0:39            5 (const uint)
 0:42      textureFetch (global 4-component vector of float)
 0:42        'g_tTex2dmsf4a' (uniform texture2DMSArray)
-0:42        'c3' (uniform 3-component vector of int)
+0:42        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:42          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:42          Constant:
+0:42            2 (const uint)
 0:42        Constant:
 0:42          3 (const int)
 0:43      textureFetch (global 4-component vector of int)
 0:43        'g_tTex2dmsi4a' (uniform itexture2DMSArray)
-0:43        'c3' (uniform 3-component vector of int)
+0:43        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:43          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:43          Constant:
+0:43            2 (const uint)
 0:43        Constant:
 0:43          3 (const int)
 0:44      textureFetch (global 4-component vector of uint)
 0:44        'g_tTex2dmsu4a' (uniform utexture2DMSArray)
-0:44        'c3' (uniform 3-component vector of int)
+0:44        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:44          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:44          Constant:
+0:44            2 (const uint)
 0:44        Constant:
 0:44          3 (const int)
 0:47      textureFetchOffset (global 4-component vector of float)
 0:47        'g_tTex2dmsf4a' (uniform texture2DMSArray)
-0:47        'c3' (uniform 3-component vector of int)
+0:47        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:47          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:47          Constant:
+0:47            2 (const uint)
 0:47        Constant:
 0:47          3 (const int)
-0:47        'o2' (uniform 2-component vector of int)
+0:47        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:47          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:47          Constant:
+0:47            5 (const uint)
 0:48      textureFetchOffset (global 4-component vector of int)
 0:48        'g_tTex2dmsi4a' (uniform itexture2DMSArray)
-0:48        'c3' (uniform 3-component vector of int)
+0:48        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:48          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:48          Constant:
+0:48            2 (const uint)
 0:48        Constant:
 0:48          3 (const int)
-0:48        'o2' (uniform 2-component vector of int)
+0:48        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:48          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:48          Constant:
+0:48            5 (const uint)
 0:49      textureFetchOffset (global 4-component vector of uint)
 0:49        'g_tTex2dmsu4a' (uniform utexture2DMSArray)
-0:49        'c3' (uniform 3-component vector of int)
+0:49        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:49          Constant:
+0:49            2 (const uint)
 0:49        Constant:
 0:49          3 (const int)
-0:49        'o2' (uniform 2-component vector of int)
+0:49        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:49          Constant:
+0:49            5 (const uint)
 0:51      move second child to first child (temp 4-component vector of float)
 0:51        Color: direct index for structure (temp 4-component vector of float)
 0:51          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
@@ -238,60 +339,65 @@ gl_FragCoord origin is upper left
 0:?     'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:?     'g_tTex2dmsi4a' (uniform itexture2DMSArray)
 0:?     'g_tTex2dmsu4a' (uniform utexture2DMSArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 110
+// Id's are bound by 123
 
                               Capability Shader
                               Capability ImageGatherExtended
                               Capability ImageMSArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 92 96
+                              EntryPoint Fragment 4  "main" 112 116
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "g_tTex2dmsf4"
-                              Name 14  "c2"
-                              Name 21  "g_tTex2dmsi4"
-                              Name 29  "g_tTex2dmsu4"
-                              Name 36  "o2"
-                              Name 49  "g_tTex2dmsf4a"
-                              Name 53  "c3"
-                              Name 58  "g_tTex2dmsi4a"
-                              Name 64  "g_tTex2dmsu4a"
-                              Name 80  "PS_OUTPUT"
-                              MemberName 80(PS_OUTPUT) 0  "Color"
-                              MemberName 80(PS_OUTPUT) 1  "Depth"
-                              Name 82  "psout"
-                              Name 92  "Color"
-                              Name 96  "Depth"
-                              Name 102  "g_sSamp"
-                              Name 104  "c1"
-                              Name 106  "c4"
-                              Name 107  "o1"
-                              Name 108  "o3"
-                              Name 109  "o4"
+                              Name 15  "$Global"
+                              MemberName 15($Global) 0  "c1"
+                              MemberName 15($Global) 1  "c2"
+                              MemberName 15($Global) 2  "c3"
+                              MemberName 15($Global) 3  "c4"
+                              MemberName 15($Global) 4  "o1"
+                              MemberName 15($Global) 5  "o2"
+                              MemberName 15($Global) 6  "o3"
+                              MemberName 15($Global) 7  "o4"
+                              Name 17  ""
+                              Name 27  "g_tTex2dmsi4"
+                              Name 35  "g_tTex2dmsu4"
+                              Name 62  "g_tTex2dmsf4a"
+                              Name 71  "g_tTex2dmsi4a"
+                              Name 78  "g_tTex2dmsu4a"
+                              Name 101  "PS_OUTPUT"
+                              MemberName 101(PS_OUTPUT) 0  "Color"
+                              MemberName 101(PS_OUTPUT) 1  "Depth"
+                              Name 103  "psout"
+                              Name 112  "Color"
+                              Name 116  "Depth"
+                              Name 122  "g_sSamp"
                               Decorate 9(g_tTex2dmsf4) DescriptorSet 0
-                              Decorate 21(g_tTex2dmsi4) DescriptorSet 0
-                              Decorate 29(g_tTex2dmsu4) DescriptorSet 0
-                              Decorate 49(g_tTex2dmsf4a) DescriptorSet 0
-                              Decorate 58(g_tTex2dmsi4a) DescriptorSet 0
-                              Decorate 64(g_tTex2dmsu4a) DescriptorSet 0
-                              Decorate 92(Color) Location 0
-                              Decorate 96(Depth) BuiltIn FragDepth
-                              Decorate 102(g_sSamp) DescriptorSet 0
-                              Decorate 102(g_sSamp) Binding 0
+                              MemberDecorate 15($Global) 0 Offset 0
+                              MemberDecorate 15($Global) 1 Offset 8
+                              MemberDecorate 15($Global) 2 Offset 16
+                              MemberDecorate 15($Global) 3 Offset 32
+                              MemberDecorate 15($Global) 4 Offset 48
+                              MemberDecorate 15($Global) 5 Offset 56
+                              MemberDecorate 15($Global) 6 Offset 64
+                              MemberDecorate 15($Global) 7 Offset 80
+                              Decorate 15($Global) Block
+                              Decorate 17 DescriptorSet 0
+                              Decorate 27(g_tTex2dmsi4) DescriptorSet 0
+                              Decorate 35(g_tTex2dmsu4) DescriptorSet 0
+                              Decorate 62(g_tTex2dmsf4a) DescriptorSet 0
+                              Decorate 71(g_tTex2dmsi4a) DescriptorSet 0
+                              Decorate 78(g_tTex2dmsu4a) DescriptorSet 0
+                              Decorate 112(Color) Location 0
+                              Decorate 116(Depth) BuiltIn FragDepth
+                              Decorate 122(g_sSamp) DescriptorSet 0
+                              Decorate 122(g_sSamp) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -300,108 +406,121 @@ gl_FragCoord origin is upper left
  9(g_tTex2dmsf4):      8(ptr) Variable UniformConstant
               11:             TypeInt 32 1
               12:             TypeVector 11(int) 2
-              13:             TypePointer UniformConstant 12(ivec2)
-          14(c2):     13(ptr) Variable UniformConstant
-              16:     11(int) Constant 3
-              17:             TypeVector 6(float) 4
-              19:             TypeImage 11(int) 2D multi-sampled sampled format:Unknown
-              20:             TypePointer UniformConstant 19
-21(g_tTex2dmsi4):     20(ptr) Variable UniformConstant
-              24:             TypeVector 11(int) 4
-              26:             TypeInt 32 0
-              27:             TypeImage 26(int) 2D multi-sampled sampled format:Unknown
-              28:             TypePointer UniformConstant 27
-29(g_tTex2dmsu4):     28(ptr) Variable UniformConstant
-              32:             TypeVector 26(int) 4
-          36(o2):     13(ptr) Variable UniformConstant
-              47:             TypeImage 6(float) 2D array multi-sampled sampled format:Unknown
-              48:             TypePointer UniformConstant 47
-49(g_tTex2dmsf4a):     48(ptr) Variable UniformConstant
-              51:             TypeVector 11(int) 3
-              52:             TypePointer UniformConstant 51(ivec3)
-          53(c3):     52(ptr) Variable UniformConstant
-              56:             TypeImage 11(int) 2D array multi-sampled sampled format:Unknown
-              57:             TypePointer UniformConstant 56
-58(g_tTex2dmsi4a):     57(ptr) Variable UniformConstant
-              62:             TypeImage 26(int) 2D array multi-sampled sampled format:Unknown
-              63:             TypePointer UniformConstant 62
-64(g_tTex2dmsu4a):     63(ptr) Variable UniformConstant
-   80(PS_OUTPUT):             TypeStruct 17(fvec4) 6(float)
-              81:             TypePointer Function 80(PS_OUTPUT)
-              83:     11(int) Constant 0
-              84:    6(float) Constant 1065353216
-              85:   17(fvec4) ConstantComposite 84 84 84 84
-              86:             TypePointer Function 17(fvec4)
-              88:     11(int) Constant 1
-              89:             TypePointer Function 6(float)
-              91:             TypePointer Output 17(fvec4)
-       92(Color):     91(ptr) Variable Output
-              95:             TypePointer Output 6(float)
-       96(Depth):     95(ptr) Variable Output
-             100:             TypeSampler
-             101:             TypePointer UniformConstant 100
-    102(g_sSamp):    101(ptr) Variable UniformConstant
-             103:             TypePointer UniformConstant 11(int)
-         104(c1):    103(ptr) Variable UniformConstant
-             105:             TypePointer UniformConstant 24(ivec4)
-         106(c4):    105(ptr) Variable UniformConstant
-         107(o1):    103(ptr) Variable UniformConstant
-         108(o3):     52(ptr) Variable UniformConstant
-         109(o4):    105(ptr) Variable UniformConstant
+              13:             TypeVector 11(int) 3
+              14:             TypeVector 11(int) 4
+     15($Global):             TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4)
+              16:             TypePointer Uniform 15($Global)
+              17:     16(ptr) Variable Uniform
+              18:     11(int) Constant 1
+              19:             TypePointer Uniform 12(ivec2)
+              22:     11(int) Constant 3
+              23:             TypeVector 6(float) 4
+              25:             TypeImage 11(int) 2D multi-sampled sampled format:Unknown
+              26:             TypePointer UniformConstant 25
+27(g_tTex2dmsi4):     26(ptr) Variable UniformConstant
+              32:             TypeInt 32 0
+              33:             TypeImage 32(int) 2D multi-sampled sampled format:Unknown
+              34:             TypePointer UniformConstant 33
+35(g_tTex2dmsu4):     34(ptr) Variable UniformConstant
+              39:             TypeVector 32(int) 4
+              44:     11(int) Constant 5
+              60:             TypeImage 6(float) 2D array multi-sampled sampled format:Unknown
+              61:             TypePointer UniformConstant 60
+62(g_tTex2dmsf4a):     61(ptr) Variable UniformConstant
+              64:     11(int) Constant 2
+              65:             TypePointer Uniform 13(ivec3)
+              69:             TypeImage 11(int) 2D array multi-sampled sampled format:Unknown
+              70:             TypePointer UniformConstant 69
+71(g_tTex2dmsi4a):     70(ptr) Variable UniformConstant
+              76:             TypeImage 32(int) 2D array multi-sampled sampled format:Unknown
+              77:             TypePointer UniformConstant 76
+78(g_tTex2dmsu4a):     77(ptr) Variable UniformConstant
+  101(PS_OUTPUT):             TypeStruct 23(fvec4) 6(float)
+             102:             TypePointer Function 101(PS_OUTPUT)
+             104:     11(int) Constant 0
+             105:    6(float) Constant 1065353216
+             106:   23(fvec4) ConstantComposite 105 105 105 105
+             107:             TypePointer Function 23(fvec4)
+             109:             TypePointer Function 6(float)
+             111:             TypePointer Output 23(fvec4)
+      112(Color):    111(ptr) Variable Output
+             115:             TypePointer Output 6(float)
+      116(Depth):    115(ptr) Variable Output
+             120:             TypeSampler
+             121:             TypePointer UniformConstant 120
+    122(g_sSamp):    121(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-       82(psout):     81(ptr) Variable Function
+      103(psout):    102(ptr) Variable Function
               10:           7 Load 9(g_tTex2dmsf4)
-              15:   12(ivec2) Load 14(c2)
-              18:   17(fvec4) ImageFetch 10 15 Sample 16
-              22:          19 Load 21(g_tTex2dmsi4)
-              23:   12(ivec2) Load 14(c2)
-              25:   24(ivec4) ImageFetch 22 23 Sample 16
-              30:          27 Load 29(g_tTex2dmsu4)
-              31:   12(ivec2) Load 14(c2)
-              33:   32(ivec4) ImageFetch 30 31 Sample 16
-              34:           7 Load 9(g_tTex2dmsf4)
-              35:   12(ivec2) Load 14(c2)
-              37:   12(ivec2) Load 36(o2)
-              38:   17(fvec4) ImageFetch 34 35 Offset Sample 37 16
-              39:          19 Load 21(g_tTex2dmsi4)
-              40:   12(ivec2) Load 14(c2)
-              41:   12(ivec2) Load 36(o2)
-              42:   24(ivec4) ImageFetch 39 40 Offset Sample 41 16
-              43:          27 Load 29(g_tTex2dmsu4)
-              44:   12(ivec2) Load 14(c2)
-              45:   12(ivec2) Load 36(o2)
-              46:   32(ivec4) ImageFetch 43 44 Offset Sample 45 16
-              50:          47 Load 49(g_tTex2dmsf4a)
-              54:   51(ivec3) Load 53(c3)
-              55:   17(fvec4) ImageFetch 50 54 Sample 16
-              59:          56 Load 58(g_tTex2dmsi4a)
-              60:   51(ivec3) Load 53(c3)
-              61:   24(ivec4) ImageFetch 59 60 Sample 16
-              65:          62 Load 64(g_tTex2dmsu4a)
-              66:   51(ivec3) Load 53(c3)
-              67:   32(ivec4) ImageFetch 65 66 Sample 16
-              68:          47 Load 49(g_tTex2dmsf4a)
-              69:   51(ivec3) Load 53(c3)
-              70:   12(ivec2) Load 36(o2)
-              71:   17(fvec4) ImageFetch 68 69 Offset Sample 70 16
-              72:          56 Load 58(g_tTex2dmsi4a)
-              73:   51(ivec3) Load 53(c3)
-              74:   12(ivec2) Load 36(o2)
-              75:   24(ivec4) ImageFetch 72 73 Offset Sample 74 16
-              76:          62 Load 64(g_tTex2dmsu4a)
-              77:   51(ivec3) Load 53(c3)
-              78:   12(ivec2) Load 36(o2)
-              79:   32(ivec4) ImageFetch 76 77 Offset Sample 78 16
-              87:     86(ptr) AccessChain 82(psout) 83
-                              Store 87 85
-              90:     89(ptr) AccessChain 82(psout) 88
-                              Store 90 84
-              93:     86(ptr) AccessChain 82(psout) 83
-              94:   17(fvec4) Load 93
-                              Store 92(Color) 94
-              97:     89(ptr) AccessChain 82(psout) 88
-              98:    6(float) Load 97
-                              Store 96(Depth) 98
+              20:     19(ptr) AccessChain 17 18
+              21:   12(ivec2) Load 20
+              24:   23(fvec4) ImageFetch 10 21 Sample 22
+              28:          25 Load 27(g_tTex2dmsi4)
+              29:     19(ptr) AccessChain 17 18
+              30:   12(ivec2) Load 29
+              31:   14(ivec4) ImageFetch 28 30 Sample 22
+              36:          33 Load 35(g_tTex2dmsu4)
+              37:     19(ptr) AccessChain 17 18
+              38:   12(ivec2) Load 37
+              40:   39(ivec4) ImageFetch 36 38 Sample 22
+              41:           7 Load 9(g_tTex2dmsf4)
+              42:     19(ptr) AccessChain 17 18
+              43:   12(ivec2) Load 42
+              45:     19(ptr) AccessChain 17 44
+              46:   12(ivec2) Load 45
+              47:   23(fvec4) ImageFetch 41 43 Offset Sample 46 22
+              48:          25 Load 27(g_tTex2dmsi4)
+              49:     19(ptr) AccessChain 17 18
+              50:   12(ivec2) Load 49
+              51:     19(ptr) AccessChain 17 44
+              52:   12(ivec2) Load 51
+              53:   14(ivec4) ImageFetch 48 50 Offset Sample 52 22
+              54:          33 Load 35(g_tTex2dmsu4)
+              55:     19(ptr) AccessChain 17 18
+              56:   12(ivec2) Load 55
+              57:     19(ptr) AccessChain 17 44
+              58:   12(ivec2) Load 57
+              59:   39(ivec4) ImageFetch 54 56 Offset Sample 58 22
+              63:          60 Load 62(g_tTex2dmsf4a)
+              66:     65(ptr) AccessChain 17 64
+              67:   13(ivec3) Load 66
+              68:   23(fvec4) ImageFetch 63 67 Sample 22
+              72:          69 Load 71(g_tTex2dmsi4a)
+              73:     65(ptr) AccessChain 17 64
+              74:   13(ivec3) Load 73
+              75:   14(ivec4) ImageFetch 72 74 Sample 22
+              79:          76 Load 78(g_tTex2dmsu4a)
+              80:     65(ptr) AccessChain 17 64
+              81:   13(ivec3) Load 80
+              82:   39(ivec4) ImageFetch 79 81 Sample 22
+              83:          60 Load 62(g_tTex2dmsf4a)
+              84:     65(ptr) AccessChain 17 64
+              85:   13(ivec3) Load 84
+              86:     19(ptr) AccessChain 17 44
+              87:   12(ivec2) Load 86
+              88:   23(fvec4) ImageFetch 83 85 Offset Sample 87 22
+              89:          69 Load 71(g_tTex2dmsi4a)
+              90:     65(ptr) AccessChain 17 64
+              91:   13(ivec3) Load 90
+              92:     19(ptr) AccessChain 17 44
+              93:   12(ivec2) Load 92
+              94:   14(ivec4) ImageFetch 89 91 Offset Sample 93 22
+              95:          76 Load 78(g_tTex2dmsu4a)
+              96:     65(ptr) AccessChain 17 64
+              97:   13(ivec3) Load 96
+              98:     19(ptr) AccessChain 17 44
+              99:   12(ivec2) Load 98
+             100:   39(ivec4) ImageFetch 95 97 Offset Sample 99 22
+             108:    107(ptr) AccessChain 103(psout) 104
+                              Store 108 106
+             110:    109(ptr) AccessChain 103(psout) 18
+                              Store 110 105
+             113:    107(ptr) AccessChain 103(psout) 104
+             114:   23(fvec4) Load 113
+                              Store 112(Color) 114
+             117:    109(ptr) AccessChain 103(psout) 18
+             118:    6(float) Load 117
+                              Store 116(Depth) 118
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out
index 372388376..fada58a9c 100644
--- a/Test/baseResults/hlsl.load.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.array.dx10.frag.out
@@ -2,52 +2,73 @@ hlsl.load.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:48  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
 0:52      textureFetch (global 4-component vector of float)
 0:52        'g_tTex1df4a' (uniform texture1DArray)
 0:52        vector swizzle (temp 2-component vector of int)
-0:52          'c3' (uniform 3-component vector of int)
+0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              2 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52            Constant:
 0:52              1 (const int)
 0:52        direct index (temp int)
-0:52          'c3' (uniform 3-component vector of int)
+0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              2 (const uint)
 0:52          Constant:
 0:52            2 (const int)
 0:53      textureFetch (global 4-component vector of int)
 0:53        'g_tTex1di4a' (uniform itexture1DArray)
 0:53        vector swizzle (temp 2-component vector of int)
-0:53          'c3' (uniform 3-component vector of int)
+0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              2 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53            Constant:
 0:53              1 (const int)
 0:53        direct index (temp int)
-0:53          'c3' (uniform 3-component vector of int)
+0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              2 (const uint)
 0:53          Constant:
 0:53            2 (const int)
 0:54      textureFetch (global 4-component vector of uint)
 0:54        'g_tTex1du4a' (uniform utexture1DArray)
 0:54        vector swizzle (temp 2-component vector of int)
-0:54          'c3' (uniform 3-component vector of int)
+0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              2 (const uint)
 0:54          Sequence
 0:54            Constant:
 0:54              0 (const int)
 0:54            Constant:
 0:54              1 (const int)
 0:54        direct index (temp int)
-0:54          'c3' (uniform 3-component vector of int)
+0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              2 (const uint)
 0:54          Constant:
 0:54            2 (const int)
 0:57      textureFetch (global 4-component vector of float)
 0:57        'g_tTex2df4a' (uniform texture2DArray)
 0:57        vector swizzle (temp 3-component vector of int)
-0:57          'c4' (uniform 4-component vector of int)
+0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              3 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
@@ -56,13 +77,19 @@ gl_FragCoord origin is upper left
 0:57            Constant:
 0:57              2 (const int)
 0:57        direct index (temp int)
-0:57          'c4' (uniform 4-component vector of int)
+0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              3 (const uint)
 0:57          Constant:
 0:57            3 (const int)
 0:58      textureFetch (global 4-component vector of int)
 0:58        'g_tTex2di4a' (uniform itexture2DArray)
 0:58        vector swizzle (temp 3-component vector of int)
-0:58          'c4' (uniform 4-component vector of int)
+0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              3 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
@@ -71,13 +98,19 @@ gl_FragCoord origin is upper left
 0:58            Constant:
 0:58              2 (const int)
 0:58        direct index (temp int)
-0:58          'c4' (uniform 4-component vector of int)
+0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              3 (const uint)
 0:58          Constant:
 0:58            3 (const int)
 0:59      textureFetch (global 4-component vector of uint)
 0:59        'g_tTex2du4a' (uniform utexture2DArray)
 0:59        vector swizzle (temp 3-component vector of int)
-0:59          'c4' (uniform 4-component vector of int)
+0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              3 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
@@ -86,7 +119,10 @@ gl_FragCoord origin is upper left
 0:59            Constant:
 0:59              2 (const int)
 0:59        direct index (temp int)
-0:59          'c4' (uniform 4-component vector of int)
+0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              3 (const uint)
 0:59          Constant:
 0:59            3 (const int)
 0:67      move second child to first child (temp 4-component vector of float)
@@ -144,16 +180,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -162,52 +191,73 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:48  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
 0:52      textureFetch (global 4-component vector of float)
 0:52        'g_tTex1df4a' (uniform texture1DArray)
 0:52        vector swizzle (temp 2-component vector of int)
-0:52          'c3' (uniform 3-component vector of int)
+0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              2 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52            Constant:
 0:52              1 (const int)
 0:52        direct index (temp int)
-0:52          'c3' (uniform 3-component vector of int)
+0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              2 (const uint)
 0:52          Constant:
 0:52            2 (const int)
 0:53      textureFetch (global 4-component vector of int)
 0:53        'g_tTex1di4a' (uniform itexture1DArray)
 0:53        vector swizzle (temp 2-component vector of int)
-0:53          'c3' (uniform 3-component vector of int)
+0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              2 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53            Constant:
 0:53              1 (const int)
 0:53        direct index (temp int)
-0:53          'c3' (uniform 3-component vector of int)
+0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              2 (const uint)
 0:53          Constant:
 0:53            2 (const int)
 0:54      textureFetch (global 4-component vector of uint)
 0:54        'g_tTex1du4a' (uniform utexture1DArray)
 0:54        vector swizzle (temp 2-component vector of int)
-0:54          'c3' (uniform 3-component vector of int)
+0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              2 (const uint)
 0:54          Sequence
 0:54            Constant:
 0:54              0 (const int)
 0:54            Constant:
 0:54              1 (const int)
 0:54        direct index (temp int)
-0:54          'c3' (uniform 3-component vector of int)
+0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              2 (const uint)
 0:54          Constant:
 0:54            2 (const int)
 0:57      textureFetch (global 4-component vector of float)
 0:57        'g_tTex2df4a' (uniform texture2DArray)
 0:57        vector swizzle (temp 3-component vector of int)
-0:57          'c4' (uniform 4-component vector of int)
+0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              3 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
@@ -216,13 +266,19 @@ gl_FragCoord origin is upper left
 0:57            Constant:
 0:57              2 (const int)
 0:57        direct index (temp int)
-0:57          'c4' (uniform 4-component vector of int)
+0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              3 (const uint)
 0:57          Constant:
 0:57            3 (const int)
 0:58      textureFetch (global 4-component vector of int)
 0:58        'g_tTex2di4a' (uniform itexture2DArray)
 0:58        vector swizzle (temp 3-component vector of int)
-0:58          'c4' (uniform 4-component vector of int)
+0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              3 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
@@ -231,13 +287,19 @@ gl_FragCoord origin is upper left
 0:58            Constant:
 0:58              2 (const int)
 0:58        direct index (temp int)
-0:58          'c4' (uniform 4-component vector of int)
+0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              3 (const uint)
 0:58          Constant:
 0:58            3 (const int)
 0:59      textureFetch (global 4-component vector of uint)
 0:59        'g_tTex2du4a' (uniform utexture2DArray)
 0:59        vector swizzle (temp 3-component vector of int)
-0:59          'c4' (uniform 4-component vector of int)
+0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              3 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
@@ -246,7 +308,10 @@ gl_FragCoord origin is upper left
 0:59            Constant:
 0:59              2 (const int)
 0:59        direct index (temp int)
-0:59          'c4' (uniform 4-component vector of int)
+0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              3 (const uint)
 0:59          Constant:
 0:59            3 (const int)
 0:67      move second child to first child (temp 4-component vector of float)
@@ -304,91 +369,96 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 150
+// Id's are bound by 152
 
                               Capability Shader
                               Capability Sampled1D
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 87 91
+                              EntryPoint Fragment 4  "main" 96 100
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "g_tTex1df4a"
-                              Name 14  "c3"
-                              Name 27  "g_tTex1di4a"
-                              Name 37  "g_tTex1du4a"
-                              Name 47  "g_tTex2df4a"
-                              Name 50  "c4"
-                              Name 59  "g_tTex2di4a"
-                              Name 68  "g_tTex2du4a"
-                              Name 75  "PS_OUTPUT"
-                              MemberName 75(PS_OUTPUT) 0  "Color"
-                              MemberName 75(PS_OUTPUT) 1  "Depth"
-                              Name 77  "psout"
-                              Name 87  "Color"
-                              Name 91  "Depth"
-                              Name 97  "g_sSamp"
-                              Name 100  "g_tTex1df4"
-                              Name 103  "g_tTex1di4"
-                              Name 106  "g_tTex1du4"
-                              Name 109  "g_tTex2df4"
-                              Name 112  "g_tTex2di4"
-                              Name 115  "g_tTex2du4"
-                              Name 118  "g_tTex3df4"
-                              Name 121  "g_tTex3di4"
-                              Name 124  "g_tTex3du4"
-                              Name 127  "g_tTexcdf4"
-                              Name 130  "g_tTexcdi4"
-                              Name 133  "g_tTexcdu4"
-                              Name 136  "g_tTexcdf4a"
-                              Name 139  "g_tTexcdi4a"
-                              Name 142  "g_tTexcdu4a"
-                              Name 143  "c1"
-                              Name 145  "c2"
-                              Name 146  "o1"
-                              Name 147  "o2"
-                              Name 148  "o3"
-                              Name 149  "o4"
+                              Name 15  "$Global"
+                              MemberName 15($Global) 0  "c1"
+                              MemberName 15($Global) 1  "c2"
+                              MemberName 15($Global) 2  "c3"
+                              MemberName 15($Global) 3  "c4"
+                              MemberName 15($Global) 4  "o1"
+                              MemberName 15($Global) 5  "o2"
+                              MemberName 15($Global) 6  "o3"
+                              MemberName 15($Global) 7  "o4"
+                              Name 17  ""
+                              Name 32  "g_tTex1di4a"
+                              Name 42  "g_tTex1du4a"
+                              Name 53  "g_tTex2df4a"
+                              Name 66  "g_tTex2di4a"
+                              Name 76  "g_tTex2du4a"
+                              Name 84  "PS_OUTPUT"
+                              MemberName 84(PS_OUTPUT) 0  "Color"
+                              MemberName 84(PS_OUTPUT) 1  "Depth"
+                              Name 86  "psout"
+                              Name 96  "Color"
+                              Name 100  "Depth"
+                              Name 106  "g_sSamp"
+                              Name 109  "g_tTex1df4"
+                              Name 112  "g_tTex1di4"
+                              Name 115  "g_tTex1du4"
+                              Name 118  "g_tTex2df4"
+                              Name 121  "g_tTex2di4"
+                              Name 124  "g_tTex2du4"
+                              Name 127  "g_tTex3df4"
+                              Name 130  "g_tTex3di4"
+                              Name 133  "g_tTex3du4"
+                              Name 136  "g_tTexcdf4"
+                              Name 139  "g_tTexcdi4"
+                              Name 142  "g_tTexcdu4"
+                              Name 145  "g_tTexcdf4a"
+                              Name 148  "g_tTexcdi4a"
+                              Name 151  "g_tTexcdu4a"
                               Decorate 9(g_tTex1df4a) DescriptorSet 0
-                              Decorate 27(g_tTex1di4a) DescriptorSet 0
-                              Decorate 37(g_tTex1du4a) DescriptorSet 0
-                              Decorate 47(g_tTex2df4a) DescriptorSet 0
-                              Decorate 59(g_tTex2di4a) DescriptorSet 0
-                              Decorate 68(g_tTex2du4a) DescriptorSet 0
-                              Decorate 87(Color) Location 0
-                              Decorate 91(Depth) BuiltIn FragDepth
-                              Decorate 97(g_sSamp) DescriptorSet 0
-                              Decorate 97(g_sSamp) Binding 0
-                              Decorate 100(g_tTex1df4) DescriptorSet 0
-                              Decorate 100(g_tTex1df4) Binding 0
-                              Decorate 103(g_tTex1di4) DescriptorSet 0
-                              Decorate 106(g_tTex1du4) DescriptorSet 0
-                              Decorate 109(g_tTex2df4) DescriptorSet 0
-                              Decorate 112(g_tTex2di4) DescriptorSet 0
-                              Decorate 115(g_tTex2du4) DescriptorSet 0
-                              Decorate 118(g_tTex3df4) DescriptorSet 0
-                              Decorate 121(g_tTex3di4) DescriptorSet 0
-                              Decorate 124(g_tTex3du4) DescriptorSet 0
-                              Decorate 127(g_tTexcdf4) DescriptorSet 0
-                              Decorate 130(g_tTexcdi4) DescriptorSet 0
-                              Decorate 133(g_tTexcdu4) DescriptorSet 0
-                              Decorate 136(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 139(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 142(g_tTexcdu4a) DescriptorSet 0
+                              MemberDecorate 15($Global) 0 Offset 0
+                              MemberDecorate 15($Global) 1 Offset 8
+                              MemberDecorate 15($Global) 2 Offset 16
+                              MemberDecorate 15($Global) 3 Offset 32
+                              MemberDecorate 15($Global) 4 Offset 48
+                              MemberDecorate 15($Global) 5 Offset 56
+                              MemberDecorate 15($Global) 6 Offset 64
+                              MemberDecorate 15($Global) 7 Offset 80
+                              Decorate 15($Global) Block
+                              Decorate 17 DescriptorSet 0
+                              Decorate 32(g_tTex1di4a) DescriptorSet 0
+                              Decorate 42(g_tTex1du4a) DescriptorSet 0
+                              Decorate 53(g_tTex2df4a) DescriptorSet 0
+                              Decorate 66(g_tTex2di4a) DescriptorSet 0
+                              Decorate 76(g_tTex2du4a) DescriptorSet 0
+                              Decorate 96(Color) Location 0
+                              Decorate 100(Depth) BuiltIn FragDepth
+                              Decorate 106(g_sSamp) DescriptorSet 0
+                              Decorate 106(g_sSamp) Binding 0
+                              Decorate 109(g_tTex1df4) DescriptorSet 0
+                              Decorate 109(g_tTex1df4) Binding 0
+                              Decorate 112(g_tTex1di4) DescriptorSet 0
+                              Decorate 115(g_tTex1du4) DescriptorSet 0
+                              Decorate 118(g_tTex2df4) DescriptorSet 0
+                              Decorate 121(g_tTex2di4) DescriptorSet 0
+                              Decorate 124(g_tTex2du4) DescriptorSet 0
+                              Decorate 127(g_tTex3df4) DescriptorSet 0
+                              Decorate 130(g_tTex3di4) DescriptorSet 0
+                              Decorate 133(g_tTex3du4) DescriptorSet 0
+                              Decorate 136(g_tTexcdf4) DescriptorSet 0
+                              Decorate 139(g_tTexcdi4) DescriptorSet 0
+                              Decorate 142(g_tTexcdu4) DescriptorSet 0
+                              Decorate 145(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 148(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 151(g_tTexcdu4a) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -396,149 +466,151 @@ gl_FragCoord origin is upper left
                8:             TypePointer UniformConstant 7
   9(g_tTex1df4a):      8(ptr) Variable UniformConstant
               11:             TypeInt 32 1
-              12:             TypeVector 11(int) 3
-              13:             TypePointer UniformConstant 12(ivec3)
-          14(c3):     13(ptr) Variable UniformConstant
-              15:             TypeVector 11(int) 2
-              18:             TypeInt 32 0
-              19:     18(int) Constant 2
-              20:             TypePointer UniformConstant 11(int)
-              23:             TypeVector 6(float) 4
-              25:             TypeImage 11(int) 1D array sampled format:Unknown
-              26:             TypePointer UniformConstant 25
- 27(g_tTex1di4a):     26(ptr) Variable UniformConstant
-              33:             TypeVector 11(int) 4
-              35:             TypeImage 18(int) 1D array sampled format:Unknown
-              36:             TypePointer UniformConstant 35
- 37(g_tTex1du4a):     36(ptr) Variable UniformConstant
-              43:             TypeVector 18(int) 4
-              45:             TypeImage 6(float) 2D array sampled format:Unknown
-              46:             TypePointer UniformConstant 45
- 47(g_tTex2df4a):     46(ptr) Variable UniformConstant
-              49:             TypePointer UniformConstant 33(ivec4)
-          50(c4):     49(ptr) Variable UniformConstant
-              53:     18(int) Constant 3
-              57:             TypeImage 11(int) 2D array sampled format:Unknown
-              58:             TypePointer UniformConstant 57
- 59(g_tTex2di4a):     58(ptr) Variable UniformConstant
-              66:             TypeImage 18(int) 2D array sampled format:Unknown
-              67:             TypePointer UniformConstant 66
- 68(g_tTex2du4a):     67(ptr) Variable UniformConstant
-   75(PS_OUTPUT):             TypeStruct 23(fvec4) 6(float)
-              76:             TypePointer Function 75(PS_OUTPUT)
-              78:     11(int) Constant 0
-              79:    6(float) Constant 1065353216
-              80:   23(fvec4) ConstantComposite 79 79 79 79
-              81:             TypePointer Function 23(fvec4)
-              83:     11(int) Constant 1
-              84:             TypePointer Function 6(float)
-              86:             TypePointer Output 23(fvec4)
-       87(Color):     86(ptr) Variable Output
-              90:             TypePointer Output 6(float)
-       91(Depth):     90(ptr) Variable Output
-              95:             TypeSampler
-              96:             TypePointer UniformConstant 95
-     97(g_sSamp):     96(ptr) Variable UniformConstant
-              98:             TypeImage 6(float) 1D sampled format:Unknown
-              99:             TypePointer UniformConstant 98
- 100(g_tTex1df4):     99(ptr) Variable UniformConstant
-             101:             TypeImage 11(int) 1D sampled format:Unknown
-             102:             TypePointer UniformConstant 101
- 103(g_tTex1di4):    102(ptr) Variable UniformConstant
-             104:             TypeImage 18(int) 1D sampled format:Unknown
+              12:             TypeVector 11(int) 2
+              13:             TypeVector 11(int) 3
+              14:             TypeVector 11(int) 4
+     15($Global):             TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4)
+              16:             TypePointer Uniform 15($Global)
+              17:     16(ptr) Variable Uniform
+              18:     11(int) Constant 2
+              19:             TypePointer Uniform 13(ivec3)
+              23:             TypeInt 32 0
+              24:     23(int) Constant 2
+              25:             TypePointer Uniform 11(int)
+              28:             TypeVector 6(float) 4
+              30:             TypeImage 11(int) 1D array sampled format:Unknown
+              31:             TypePointer UniformConstant 30
+ 32(g_tTex1di4a):     31(ptr) Variable UniformConstant
+              40:             TypeImage 23(int) 1D array sampled format:Unknown
+              41:             TypePointer UniformConstant 40
+ 42(g_tTex1du4a):     41(ptr) Variable UniformConstant
+              49:             TypeVector 23(int) 4
+              51:             TypeImage 6(float) 2D array sampled format:Unknown
+              52:             TypePointer UniformConstant 51
+ 53(g_tTex2df4a):     52(ptr) Variable UniformConstant
+              55:     11(int) Constant 3
+              56:             TypePointer Uniform 14(ivec4)
+              60:     23(int) Constant 3
+              64:             TypeImage 11(int) 2D array sampled format:Unknown
+              65:             TypePointer UniformConstant 64
+ 66(g_tTex2di4a):     65(ptr) Variable UniformConstant
+              74:             TypeImage 23(int) 2D array sampled format:Unknown
+              75:             TypePointer UniformConstant 74
+ 76(g_tTex2du4a):     75(ptr) Variable UniformConstant
+   84(PS_OUTPUT):             TypeStruct 28(fvec4) 6(float)
+              85:             TypePointer Function 84(PS_OUTPUT)
+              87:     11(int) Constant 0
+              88:    6(float) Constant 1065353216
+              89:   28(fvec4) ConstantComposite 88 88 88 88
+              90:             TypePointer Function 28(fvec4)
+              92:     11(int) Constant 1
+              93:             TypePointer Function 6(float)
+              95:             TypePointer Output 28(fvec4)
+       96(Color):     95(ptr) Variable Output
+              99:             TypePointer Output 6(float)
+      100(Depth):     99(ptr) Variable Output
+             104:             TypeSampler
              105:             TypePointer UniformConstant 104
- 106(g_tTex1du4):    105(ptr) Variable UniformConstant
-             107:             TypeImage 6(float) 2D sampled format:Unknown
+    106(g_sSamp):    105(ptr) Variable UniformConstant
+             107:             TypeImage 6(float) 1D sampled format:Unknown
              108:             TypePointer UniformConstant 107
- 109(g_tTex2df4):    108(ptr) Variable UniformConstant
-             110:             TypeImage 11(int) 2D sampled format:Unknown
+ 109(g_tTex1df4):    108(ptr) Variable UniformConstant
+             110:             TypeImage 11(int) 1D sampled format:Unknown
              111:             TypePointer UniformConstant 110
- 112(g_tTex2di4):    111(ptr) Variable UniformConstant
-             113:             TypeImage 18(int) 2D sampled format:Unknown
+ 112(g_tTex1di4):    111(ptr) Variable UniformConstant
+             113:             TypeImage 23(int) 1D sampled format:Unknown
              114:             TypePointer UniformConstant 113
- 115(g_tTex2du4):    114(ptr) Variable UniformConstant
-             116:             TypeImage 6(float) 3D sampled format:Unknown
+ 115(g_tTex1du4):    114(ptr) Variable UniformConstant
+             116:             TypeImage 6(float) 2D sampled format:Unknown
              117:             TypePointer UniformConstant 116
- 118(g_tTex3df4):    117(ptr) Variable UniformConstant
-             119:             TypeImage 11(int) 3D sampled format:Unknown
+ 118(g_tTex2df4):    117(ptr) Variable UniformConstant
+             119:             TypeImage 11(int) 2D sampled format:Unknown
              120:             TypePointer UniformConstant 119
- 121(g_tTex3di4):    120(ptr) Variable UniformConstant
-             122:             TypeImage 18(int) 3D sampled format:Unknown
+ 121(g_tTex2di4):    120(ptr) Variable UniformConstant
+             122:             TypeImage 23(int) 2D sampled format:Unknown
              123:             TypePointer UniformConstant 122
- 124(g_tTex3du4):    123(ptr) Variable UniformConstant
-             125:             TypeImage 6(float) Cube sampled format:Unknown
+ 124(g_tTex2du4):    123(ptr) Variable UniformConstant
+             125:             TypeImage 6(float) 3D sampled format:Unknown
              126:             TypePointer UniformConstant 125
- 127(g_tTexcdf4):    126(ptr) Variable UniformConstant
-             128:             TypeImage 11(int) Cube sampled format:Unknown
+ 127(g_tTex3df4):    126(ptr) Variable UniformConstant
+             128:             TypeImage 11(int) 3D sampled format:Unknown
              129:             TypePointer UniformConstant 128
- 130(g_tTexcdi4):    129(ptr) Variable UniformConstant
-             131:             TypeImage 18(int) Cube sampled format:Unknown
+ 130(g_tTex3di4):    129(ptr) Variable UniformConstant
+             131:             TypeImage 23(int) 3D sampled format:Unknown
              132:             TypePointer UniformConstant 131
- 133(g_tTexcdu4):    132(ptr) Variable UniformConstant
-             134:             TypeImage 6(float) Cube array sampled format:Unknown
+ 133(g_tTex3du4):    132(ptr) Variable UniformConstant
+             134:             TypeImage 6(float) Cube sampled format:Unknown
              135:             TypePointer UniformConstant 134
-136(g_tTexcdf4a):    135(ptr) Variable UniformConstant
-             137:             TypeImage 11(int) Cube array sampled format:Unknown
+ 136(g_tTexcdf4):    135(ptr) Variable UniformConstant
+             137:             TypeImage 11(int) Cube sampled format:Unknown
              138:             TypePointer UniformConstant 137
-139(g_tTexcdi4a):    138(ptr) Variable UniformConstant
-             140:             TypeImage 18(int) Cube array sampled format:Unknown
+ 139(g_tTexcdi4):    138(ptr) Variable UniformConstant
+             140:             TypeImage 23(int) Cube sampled format:Unknown
              141:             TypePointer UniformConstant 140
-142(g_tTexcdu4a):    141(ptr) Variable UniformConstant
-         143(c1):     20(ptr) Variable UniformConstant
-             144:             TypePointer UniformConstant 15(ivec2)
-         145(c2):    144(ptr) Variable UniformConstant
-         146(o1):     20(ptr) Variable UniformConstant
-         147(o2):    144(ptr) Variable UniformConstant
-         148(o3):     13(ptr) Variable UniformConstant
-         149(o4):     49(ptr) Variable UniformConstant
+ 142(g_tTexcdu4):    141(ptr) Variable UniformConstant
+             143:             TypeImage 6(float) Cube array sampled format:Unknown
+             144:             TypePointer UniformConstant 143
+145(g_tTexcdf4a):    144(ptr) Variable UniformConstant
+             146:             TypeImage 11(int) Cube array sampled format:Unknown
+             147:             TypePointer UniformConstant 146
+148(g_tTexcdi4a):    147(ptr) Variable UniformConstant
+             149:             TypeImage 23(int) Cube array sampled format:Unknown
+             150:             TypePointer UniformConstant 149
+151(g_tTexcdu4a):    150(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-       77(psout):     76(ptr) Variable Function
+       86(psout):     85(ptr) Variable Function
               10:           7 Load 9(g_tTex1df4a)
-              16:   12(ivec3) Load 14(c3)
-              17:   15(ivec2) VectorShuffle 16 16 0 1
-              21:     20(ptr) AccessChain 14(c3) 19
-              22:     11(int) Load 21
-              24:   23(fvec4) ImageFetch 10 17 Lod 22
-              28:          25 Load 27(g_tTex1di4a)
-              29:   12(ivec3) Load 14(c3)
-              30:   15(ivec2) VectorShuffle 29 29 0 1
-              31:     20(ptr) AccessChain 14(c3) 19
-              32:     11(int) Load 31
-              34:   33(ivec4) ImageFetch 28 30 Lod 32
-              38:          35 Load 37(g_tTex1du4a)
-              39:   12(ivec3) Load 14(c3)
-              40:   15(ivec2) VectorShuffle 39 39 0 1
-              41:     20(ptr) AccessChain 14(c3) 19
-              42:     11(int) Load 41
-              44:   43(ivec4) ImageFetch 38 40 Lod 42
-              48:          45 Load 47(g_tTex2df4a)
-              51:   33(ivec4) Load 50(c4)
-              52:   12(ivec3) VectorShuffle 51 51 0 1 2
-              54:     20(ptr) AccessChain 50(c4) 53
-              55:     11(int) Load 54
-              56:   23(fvec4) ImageFetch 48 52 Lod 55
-              60:          57 Load 59(g_tTex2di4a)
-              61:   33(ivec4) Load 50(c4)
-              62:   12(ivec3) VectorShuffle 61 61 0 1 2
-              63:     20(ptr) AccessChain 50(c4) 53
-              64:     11(int) Load 63
-              65:   33(ivec4) ImageFetch 60 62 Lod 64
-              69:          66 Load 68(g_tTex2du4a)
-              70:   33(ivec4) Load 50(c4)
-              71:   12(ivec3) VectorShuffle 70 70 0 1 2
-              72:     20(ptr) AccessChain 50(c4) 53
-              73:     11(int) Load 72
-              74:   43(ivec4) ImageFetch 69 71 Lod 73
-              82:     81(ptr) AccessChain 77(psout) 78
-                              Store 82 80
-              85:     84(ptr) AccessChain 77(psout) 83
-                              Store 85 79
-              88:     81(ptr) AccessChain 77(psout) 78
-              89:   23(fvec4) Load 88
-                              Store 87(Color) 89
-              92:     84(ptr) AccessChain 77(psout) 83
-              93:    6(float) Load 92
-                              Store 91(Depth) 93
+              20:     19(ptr) AccessChain 17 18
+              21:   13(ivec3) Load 20
+              22:   12(ivec2) VectorShuffle 21 21 0 1
+              26:     25(ptr) AccessChain 17 18 24
+              27:     11(int) Load 26
+              29:   28(fvec4) ImageFetch 10 22 Lod 27
+              33:          30 Load 32(g_tTex1di4a)
+              34:     19(ptr) AccessChain 17 18
+              35:   13(ivec3) Load 34
+              36:   12(ivec2) VectorShuffle 35 35 0 1
+              37:     25(ptr) AccessChain 17 18 24
+              38:     11(int) Load 37
+              39:   14(ivec4) ImageFetch 33 36 Lod 38
+              43:          40 Load 42(g_tTex1du4a)
+              44:     19(ptr) AccessChain 17 18
+              45:   13(ivec3) Load 44
+              46:   12(ivec2) VectorShuffle 45 45 0 1
+              47:     25(ptr) AccessChain 17 18 24
+              48:     11(int) Load 47
+              50:   49(ivec4) ImageFetch 43 46 Lod 48
+              54:          51 Load 53(g_tTex2df4a)
+              57:     56(ptr) AccessChain 17 55
+              58:   14(ivec4) Load 57
+              59:   13(ivec3) VectorShuffle 58 58 0 1 2
+              61:     25(ptr) AccessChain 17 55 60
+              62:     11(int) Load 61
+              63:   28(fvec4) ImageFetch 54 59 Lod 62
+              67:          64 Load 66(g_tTex2di4a)
+              68:     56(ptr) AccessChain 17 55
+              69:   14(ivec4) Load 68
+              70:   13(ivec3) VectorShuffle 69 69 0 1 2
+              71:     25(ptr) AccessChain 17 55 60
+              72:     11(int) Load 71
+              73:   14(ivec4) ImageFetch 67 70 Lod 72
+              77:          74 Load 76(g_tTex2du4a)
+              78:     56(ptr) AccessChain 17 55
+              79:   14(ivec4) Load 78
+              80:   13(ivec3) VectorShuffle 79 79 0 1 2
+              81:     25(ptr) AccessChain 17 55 60
+              82:     11(int) Load 81
+              83:   49(ivec4) ImageFetch 77 80 Lod 82
+              91:     90(ptr) AccessChain 86(psout) 87
+                              Store 91 89
+              94:     93(ptr) AccessChain 86(psout) 92
+                              Store 94 88
+              97:     90(ptr) AccessChain 86(psout) 87
+              98:   28(fvec4) Load 97
+                              Store 96(Color) 98
+             101:     93(ptr) AccessChain 86(psout) 92
+             102:    6(float) Load 101
+                              Store 100(Depth) 102
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out
index 41d44eee8..20b7456d0 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out
@@ -2,85 +2,124 @@ hlsl.load.basic.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:48  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
 0:52      textureFetch (global 4-component vector of float)
 0:52        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:52        vector swizzle (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52        direct index (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
 0:53      textureFetch (global 4-component vector of int)
 0:53        'g_tTex1di4' (uniform itexture1D)
 0:53        vector swizzle (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53        direct index (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
 0:54      textureFetch (global 4-component vector of uint)
 0:54        'g_tTex1du4' (uniform utexture1D)
 0:54        vector swizzle (temp int)
-0:54          'c2' (uniform 2-component vector of int)
+0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              1 (const uint)
 0:54          Sequence
 0:54            Constant:
 0:54              0 (const int)
 0:54        direct index (temp int)
-0:54          'c2' (uniform 2-component vector of int)
+0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              1 (const uint)
 0:54          Constant:
 0:54            1 (const int)
 0:57      textureFetch (global 4-component vector of float)
 0:57        'g_tTex2df4' (uniform texture2D)
 0:57        vector swizzle (temp 2-component vector of int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
 0:57            Constant:
 0:57              1 (const int)
 0:57        direct index (temp int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
 0:58      textureFetch (global 4-component vector of int)
 0:58        'g_tTex2di4' (uniform itexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
 0:58            Constant:
 0:58              1 (const int)
 0:58        direct index (temp int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
 0:59      textureFetch (global 4-component vector of uint)
 0:59        'g_tTex2du4' (uniform utexture2D)
 0:59        vector swizzle (temp 2-component vector of int)
-0:59          'c3' (uniform 3-component vector of int)
+0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              2 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
 0:59            Constant:
 0:59              1 (const int)
 0:59        direct index (temp int)
-0:59          'c3' (uniform 3-component vector of int)
+0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              2 (const uint)
 0:59          Constant:
 0:59            2 (const int)
 0:62      textureFetch (global 4-component vector of float)
 0:62        'g_tTex3df4' (uniform texture3D)
 0:62        vector swizzle (temp 3-component vector of int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Sequence
 0:62            Constant:
 0:62              0 (const int)
@@ -89,13 +128,19 @@ gl_FragCoord origin is upper left
 0:62            Constant:
 0:62              2 (const int)
 0:62        direct index (temp int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
 0:63      textureFetch (global 4-component vector of int)
 0:63        'g_tTex3di4' (uniform itexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Sequence
 0:63            Constant:
 0:63              0 (const int)
@@ -104,13 +149,19 @@ gl_FragCoord origin is upper left
 0:63            Constant:
 0:63              2 (const int)
 0:63        direct index (temp int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Constant:
 0:63            3 (const int)
 0:64      textureFetch (global 4-component vector of uint)
 0:64        'g_tTex3du4' (uniform utexture3D)
 0:64        vector swizzle (temp 3-component vector of int)
-0:64          'c4' (uniform 4-component vector of int)
+0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:64            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64            Constant:
+0:64              3 (const uint)
 0:64          Sequence
 0:64            Constant:
 0:64              0 (const int)
@@ -119,7 +170,10 @@ gl_FragCoord origin is upper left
 0:64            Constant:
 0:64              2 (const int)
 0:64        direct index (temp int)
-0:64          'c4' (uniform 4-component vector of int)
+0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:64            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64            Constant:
+0:64              3 (const uint)
 0:64          Constant:
 0:64            3 (const int)
 0:72      move second child to first child (temp 4-component vector of float)
@@ -177,16 +231,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -195,85 +242,124 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:48  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
 0:52      textureFetch (global 4-component vector of float)
 0:52        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:52        vector swizzle (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52        direct index (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
 0:53      textureFetch (global 4-component vector of int)
 0:53        'g_tTex1di4' (uniform itexture1D)
 0:53        vector swizzle (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53        direct index (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
 0:54      textureFetch (global 4-component vector of uint)
 0:54        'g_tTex1du4' (uniform utexture1D)
 0:54        vector swizzle (temp int)
-0:54          'c2' (uniform 2-component vector of int)
+0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              1 (const uint)
 0:54          Sequence
 0:54            Constant:
 0:54              0 (const int)
 0:54        direct index (temp int)
-0:54          'c2' (uniform 2-component vector of int)
+0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              1 (const uint)
 0:54          Constant:
 0:54            1 (const int)
 0:57      textureFetch (global 4-component vector of float)
 0:57        'g_tTex2df4' (uniform texture2D)
 0:57        vector swizzle (temp 2-component vector of int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
 0:57            Constant:
 0:57              1 (const int)
 0:57        direct index (temp int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
 0:58      textureFetch (global 4-component vector of int)
 0:58        'g_tTex2di4' (uniform itexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
 0:58            Constant:
 0:58              1 (const int)
 0:58        direct index (temp int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
 0:59      textureFetch (global 4-component vector of uint)
 0:59        'g_tTex2du4' (uniform utexture2D)
 0:59        vector swizzle (temp 2-component vector of int)
-0:59          'c3' (uniform 3-component vector of int)
+0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              2 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
 0:59            Constant:
 0:59              1 (const int)
 0:59        direct index (temp int)
-0:59          'c3' (uniform 3-component vector of int)
+0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              2 (const uint)
 0:59          Constant:
 0:59            2 (const int)
 0:62      textureFetch (global 4-component vector of float)
 0:62        'g_tTex3df4' (uniform texture3D)
 0:62        vector swizzle (temp 3-component vector of int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Sequence
 0:62            Constant:
 0:62              0 (const int)
@@ -282,13 +368,19 @@ gl_FragCoord origin is upper left
 0:62            Constant:
 0:62              2 (const int)
 0:62        direct index (temp int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
 0:63      textureFetch (global 4-component vector of int)
 0:63        'g_tTex3di4' (uniform itexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Sequence
 0:63            Constant:
 0:63              0 (const int)
@@ -297,13 +389,19 @@ gl_FragCoord origin is upper left
 0:63            Constant:
 0:63              2 (const int)
 0:63        direct index (temp int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Constant:
 0:63            3 (const int)
 0:64      textureFetch (global 4-component vector of uint)
 0:64        'g_tTex3du4' (uniform utexture3D)
 0:64        vector swizzle (temp 3-component vector of int)
-0:64          'c4' (uniform 4-component vector of int)
+0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:64            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64            Constant:
+0:64              3 (const uint)
 0:64          Sequence
 0:64            Constant:
 0:64              0 (const int)
@@ -312,7 +410,10 @@ gl_FragCoord origin is upper left
 0:64            Constant:
 0:64              2 (const int)
 0:64        direct index (temp int)
-0:64          'c4' (uniform 4-component vector of int)
+0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:64            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64            Constant:
+0:64              3 (const uint)
 0:64          Constant:
 0:64            3 (const int)
 0:72      move second child to first child (temp 4-component vector of float)
@@ -370,91 +471,96 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 170
+// Id's are bound by 172
 
                               Capability Shader
                               Capability Sampled1D
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 118 122
+                              EntryPoint Fragment 4  "main" 125 129
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "g_tTex1df4"
-                              Name 14  "c2"
-                              Name 27  "g_tTex1di4"
-                              Name 37  "g_tTex1du4"
-                              Name 47  "g_tTex2df4"
-                              Name 51  "c3"
-                              Name 60  "g_tTex2di4"
-                              Name 69  "g_tTex2du4"
-                              Name 78  "g_tTex3df4"
-                              Name 81  "c4"
-                              Name 90  "g_tTex3di4"
-                              Name 99  "g_tTex3du4"
-                              Name 106  "PS_OUTPUT"
-                              MemberName 106(PS_OUTPUT) 0  "Color"
-                              MemberName 106(PS_OUTPUT) 1  "Depth"
-                              Name 108  "psout"
-                              Name 118  "Color"
-                              Name 122  "Depth"
-                              Name 128  "g_sSamp"
-                              Name 131  "g_tTexcdf4"
-                              Name 134  "g_tTexcdi4"
-                              Name 137  "g_tTexcdu4"
-                              Name 140  "g_tTex1df4a"
-                              Name 143  "g_tTex1di4a"
-                              Name 146  "g_tTex1du4a"
-                              Name 149  "g_tTex2df4a"
-                              Name 152  "g_tTex2di4a"
-                              Name 155  "g_tTex2du4a"
-                              Name 158  "g_tTexcdf4a"
-                              Name 161  "g_tTexcdi4a"
-                              Name 164  "g_tTexcdu4a"
-                              Name 165  "c1"
-                              Name 166  "o1"
-                              Name 167  "o2"
-                              Name 168  "o3"
-                              Name 169  "o4"
+                              Name 15  "$Global"
+                              MemberName 15($Global) 0  "c1"
+                              MemberName 15($Global) 1  "c2"
+                              MemberName 15($Global) 2  "c3"
+                              MemberName 15($Global) 3  "c4"
+                              MemberName 15($Global) 4  "o1"
+                              MemberName 15($Global) 5  "o2"
+                              MemberName 15($Global) 6  "o3"
+                              MemberName 15($Global) 7  "o4"
+                              Name 17  ""
+                              Name 31  "g_tTex1di4"
+                              Name 40  "g_tTex1du4"
+                              Name 50  "g_tTex2df4"
+                              Name 63  "g_tTex2di4"
+                              Name 73  "g_tTex2du4"
+                              Name 83  "g_tTex3df4"
+                              Name 96  "g_tTex3di4"
+                              Name 106  "g_tTex3du4"
+                              Name 114  "PS_OUTPUT"
+                              MemberName 114(PS_OUTPUT) 0  "Color"
+                              MemberName 114(PS_OUTPUT) 1  "Depth"
+                              Name 116  "psout"
+                              Name 125  "Color"
+                              Name 129  "Depth"
+                              Name 135  "g_sSamp"
+                              Name 138  "g_tTexcdf4"
+                              Name 141  "g_tTexcdi4"
+                              Name 144  "g_tTexcdu4"
+                              Name 147  "g_tTex1df4a"
+                              Name 150  "g_tTex1di4a"
+                              Name 153  "g_tTex1du4a"
+                              Name 156  "g_tTex2df4a"
+                              Name 159  "g_tTex2di4a"
+                              Name 162  "g_tTex2du4a"
+                              Name 165  "g_tTexcdf4a"
+                              Name 168  "g_tTexcdi4a"
+                              Name 171  "g_tTexcdu4a"
                               Decorate 9(g_tTex1df4) DescriptorSet 0
                               Decorate 9(g_tTex1df4) Binding 0
-                              Decorate 27(g_tTex1di4) DescriptorSet 0
-                              Decorate 37(g_tTex1du4) DescriptorSet 0
-                              Decorate 47(g_tTex2df4) DescriptorSet 0
-                              Decorate 60(g_tTex2di4) DescriptorSet 0
-                              Decorate 69(g_tTex2du4) DescriptorSet 0
-                              Decorate 78(g_tTex3df4) DescriptorSet 0
-                              Decorate 90(g_tTex3di4) DescriptorSet 0
-                              Decorate 99(g_tTex3du4) DescriptorSet 0
-                              Decorate 118(Color) Location 0
-                              Decorate 122(Depth) BuiltIn FragDepth
-                              Decorate 128(g_sSamp) DescriptorSet 0
-                              Decorate 128(g_sSamp) Binding 0
-                              Decorate 131(g_tTexcdf4) DescriptorSet 0
-                              Decorate 134(g_tTexcdi4) DescriptorSet 0
-                              Decorate 137(g_tTexcdu4) DescriptorSet 0
-                              Decorate 140(g_tTex1df4a) DescriptorSet 0
-                              Decorate 143(g_tTex1di4a) DescriptorSet 0
-                              Decorate 146(g_tTex1du4a) DescriptorSet 0
-                              Decorate 149(g_tTex2df4a) DescriptorSet 0
-                              Decorate 152(g_tTex2di4a) DescriptorSet 0
-                              Decorate 155(g_tTex2du4a) DescriptorSet 0
-                              Decorate 158(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 161(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 164(g_tTexcdu4a) DescriptorSet 0
+                              MemberDecorate 15($Global) 0 Offset 0
+                              MemberDecorate 15($Global) 1 Offset 8
+                              MemberDecorate 15($Global) 2 Offset 16
+                              MemberDecorate 15($Global) 3 Offset 32
+                              MemberDecorate 15($Global) 4 Offset 48
+                              MemberDecorate 15($Global) 5 Offset 56
+                              MemberDecorate 15($Global) 6 Offset 64
+                              MemberDecorate 15($Global) 7 Offset 80
+                              Decorate 15($Global) Block
+                              Decorate 17 DescriptorSet 0
+                              Decorate 31(g_tTex1di4) DescriptorSet 0
+                              Decorate 40(g_tTex1du4) DescriptorSet 0
+                              Decorate 50(g_tTex2df4) DescriptorSet 0
+                              Decorate 63(g_tTex2di4) DescriptorSet 0
+                              Decorate 73(g_tTex2du4) DescriptorSet 0
+                              Decorate 83(g_tTex3df4) DescriptorSet 0
+                              Decorate 96(g_tTex3di4) DescriptorSet 0
+                              Decorate 106(g_tTex3du4) DescriptorSet 0
+                              Decorate 125(Color) Location 0
+                              Decorate 129(Depth) BuiltIn FragDepth
+                              Decorate 135(g_sSamp) DescriptorSet 0
+                              Decorate 135(g_sSamp) Binding 0
+                              Decorate 138(g_tTexcdf4) DescriptorSet 0
+                              Decorate 141(g_tTexcdi4) DescriptorSet 0
+                              Decorate 144(g_tTexcdu4) DescriptorSet 0
+                              Decorate 147(g_tTex1df4a) DescriptorSet 0
+                              Decorate 150(g_tTex1di4a) DescriptorSet 0
+                              Decorate 153(g_tTex1du4a) DescriptorSet 0
+                              Decorate 156(g_tTex2df4a) DescriptorSet 0
+                              Decorate 159(g_tTex2di4a) DescriptorSet 0
+                              Decorate 162(g_tTex2du4a) DescriptorSet 0
+                              Decorate 165(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 168(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 171(g_tTexcdu4a) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -463,168 +569,170 @@ gl_FragCoord origin is upper left
    9(g_tTex1df4):      8(ptr) Variable UniformConstant
               11:             TypeInt 32 1
               12:             TypeVector 11(int) 2
-              13:             TypePointer UniformConstant 12(ivec2)
-          14(c2):     13(ptr) Variable UniformConstant
-              15:             TypeInt 32 0
-              16:     15(int) Constant 0
-              17:             TypePointer UniformConstant 11(int)
-              20:     15(int) Constant 1
-              23:             TypeVector 6(float) 4
-              25:             TypeImage 11(int) 1D sampled format:Unknown
-              26:             TypePointer UniformConstant 25
-  27(g_tTex1di4):     26(ptr) Variable UniformConstant
-              33:             TypeVector 11(int) 4
-              35:             TypeImage 15(int) 1D sampled format:Unknown
-              36:             TypePointer UniformConstant 35
-  37(g_tTex1du4):     36(ptr) Variable UniformConstant
-              43:             TypeVector 15(int) 4
-              45:             TypeImage 6(float) 2D sampled format:Unknown
-              46:             TypePointer UniformConstant 45
-  47(g_tTex2df4):     46(ptr) Variable UniformConstant
-              49:             TypeVector 11(int) 3
-              50:             TypePointer UniformConstant 49(ivec3)
-          51(c3):     50(ptr) Variable UniformConstant
-              54:     15(int) Constant 2
-              58:             TypeImage 11(int) 2D sampled format:Unknown
-              59:             TypePointer UniformConstant 58
-  60(g_tTex2di4):     59(ptr) Variable UniformConstant
-              67:             TypeImage 15(int) 2D sampled format:Unknown
-              68:             TypePointer UniformConstant 67
-  69(g_tTex2du4):     68(ptr) Variable UniformConstant
-              76:             TypeImage 6(float) 3D sampled format:Unknown
-              77:             TypePointer UniformConstant 76
-  78(g_tTex3df4):     77(ptr) Variable UniformConstant
-              80:             TypePointer UniformConstant 33(ivec4)
-          81(c4):     80(ptr) Variable UniformConstant
-              84:     15(int) Constant 3
-              88:             TypeImage 11(int) 3D sampled format:Unknown
-              89:             TypePointer UniformConstant 88
-  90(g_tTex3di4):     89(ptr) Variable UniformConstant
-              97:             TypeImage 15(int) 3D sampled format:Unknown
-              98:             TypePointer UniformConstant 97
-  99(g_tTex3du4):     98(ptr) Variable UniformConstant
-  106(PS_OUTPUT):             TypeStruct 23(fvec4) 6(float)
-             107:             TypePointer Function 106(PS_OUTPUT)
-             109:     11(int) Constant 0
-             110:    6(float) Constant 1065353216
-             111:   23(fvec4) ConstantComposite 110 110 110 110
-             112:             TypePointer Function 23(fvec4)
-             114:     11(int) Constant 1
-             115:             TypePointer Function 6(float)
-             117:             TypePointer Output 23(fvec4)
-      118(Color):    117(ptr) Variable Output
-             121:             TypePointer Output 6(float)
-      122(Depth):    121(ptr) Variable Output
-             126:             TypeSampler
-             127:             TypePointer UniformConstant 126
-    128(g_sSamp):    127(ptr) Variable UniformConstant
-             129:             TypeImage 6(float) Cube sampled format:Unknown
-             130:             TypePointer UniformConstant 129
- 131(g_tTexcdf4):    130(ptr) Variable UniformConstant
-             132:             TypeImage 11(int) Cube sampled format:Unknown
-             133:             TypePointer UniformConstant 132
- 134(g_tTexcdi4):    133(ptr) Variable UniformConstant
-             135:             TypeImage 15(int) Cube sampled format:Unknown
-             136:             TypePointer UniformConstant 135
- 137(g_tTexcdu4):    136(ptr) Variable UniformConstant
-             138:             TypeImage 6(float) 1D array sampled format:Unknown
-             139:             TypePointer UniformConstant 138
-140(g_tTex1df4a):    139(ptr) Variable UniformConstant
-             141:             TypeImage 11(int) 1D array sampled format:Unknown
-             142:             TypePointer UniformConstant 141
-143(g_tTex1di4a):    142(ptr) Variable UniformConstant
-             144:             TypeImage 15(int) 1D array sampled format:Unknown
-             145:             TypePointer UniformConstant 144
-146(g_tTex1du4a):    145(ptr) Variable UniformConstant
-             147:             TypeImage 6(float) 2D array sampled format:Unknown
-             148:             TypePointer UniformConstant 147
-149(g_tTex2df4a):    148(ptr) Variable UniformConstant
-             150:             TypeImage 11(int) 2D array sampled format:Unknown
-             151:             TypePointer UniformConstant 150
-152(g_tTex2di4a):    151(ptr) Variable UniformConstant
-             153:             TypeImage 15(int) 2D array sampled format:Unknown
-             154:             TypePointer UniformConstant 153
-155(g_tTex2du4a):    154(ptr) Variable UniformConstant
-             156:             TypeImage 6(float) Cube array sampled format:Unknown
-             157:             TypePointer UniformConstant 156
-158(g_tTexcdf4a):    157(ptr) Variable UniformConstant
-             159:             TypeImage 11(int) Cube array sampled format:Unknown
-             160:             TypePointer UniformConstant 159
-161(g_tTexcdi4a):    160(ptr) Variable UniformConstant
-             162:             TypeImage 15(int) Cube array sampled format:Unknown
-             163:             TypePointer UniformConstant 162
-164(g_tTexcdu4a):    163(ptr) Variable UniformConstant
-         165(c1):     17(ptr) Variable UniformConstant
-         166(o1):     17(ptr) Variable UniformConstant
-         167(o2):     13(ptr) Variable UniformConstant
-         168(o3):     50(ptr) Variable UniformConstant
-         169(o4):     80(ptr) Variable UniformConstant
+              13:             TypeVector 11(int) 3
+              14:             TypeVector 11(int) 4
+     15($Global):             TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4)
+              16:             TypePointer Uniform 15($Global)
+              17:     16(ptr) Variable Uniform
+              18:     11(int) Constant 1
+              19:             TypeInt 32 0
+              20:     19(int) Constant 0
+              21:             TypePointer Uniform 11(int)
+              24:     19(int) Constant 1
+              27:             TypeVector 6(float) 4
+              29:             TypeImage 11(int) 1D sampled format:Unknown
+              30:             TypePointer UniformConstant 29
+  31(g_tTex1di4):     30(ptr) Variable UniformConstant
+              38:             TypeImage 19(int) 1D sampled format:Unknown
+              39:             TypePointer UniformConstant 38
+  40(g_tTex1du4):     39(ptr) Variable UniformConstant
+              46:             TypeVector 19(int) 4
+              48:             TypeImage 6(float) 2D sampled format:Unknown
+              49:             TypePointer UniformConstant 48
+  50(g_tTex2df4):     49(ptr) Variable UniformConstant
+              52:     11(int) Constant 2
+              53:             TypePointer Uniform 13(ivec3)
+              57:     19(int) Constant 2
+              61:             TypeImage 11(int) 2D sampled format:Unknown
+              62:             TypePointer UniformConstant 61
+  63(g_tTex2di4):     62(ptr) Variable UniformConstant
+              71:             TypeImage 19(int) 2D sampled format:Unknown
+              72:             TypePointer UniformConstant 71
+  73(g_tTex2du4):     72(ptr) Variable UniformConstant
+              81:             TypeImage 6(float) 3D sampled format:Unknown
+              82:             TypePointer UniformConstant 81
+  83(g_tTex3df4):     82(ptr) Variable UniformConstant
+              85:     11(int) Constant 3
+              86:             TypePointer Uniform 14(ivec4)
+              90:     19(int) Constant 3
+              94:             TypeImage 11(int) 3D sampled format:Unknown
+              95:             TypePointer UniformConstant 94
+  96(g_tTex3di4):     95(ptr) Variable UniformConstant
+             104:             TypeImage 19(int) 3D sampled format:Unknown
+             105:             TypePointer UniformConstant 104
+ 106(g_tTex3du4):    105(ptr) Variable UniformConstant
+  114(PS_OUTPUT):             TypeStruct 27(fvec4) 6(float)
+             115:             TypePointer Function 114(PS_OUTPUT)
+             117:     11(int) Constant 0
+             118:    6(float) Constant 1065353216
+             119:   27(fvec4) ConstantComposite 118 118 118 118
+             120:             TypePointer Function 27(fvec4)
+             122:             TypePointer Function 6(float)
+             124:             TypePointer Output 27(fvec4)
+      125(Color):    124(ptr) Variable Output
+             128:             TypePointer Output 6(float)
+      129(Depth):    128(ptr) Variable Output
+             133:             TypeSampler
+             134:             TypePointer UniformConstant 133
+    135(g_sSamp):    134(ptr) Variable UniformConstant
+             136:             TypeImage 6(float) Cube sampled format:Unknown
+             137:             TypePointer UniformConstant 136
+ 138(g_tTexcdf4):    137(ptr) Variable UniformConstant
+             139:             TypeImage 11(int) Cube sampled format:Unknown
+             140:             TypePointer UniformConstant 139
+ 141(g_tTexcdi4):    140(ptr) Variable UniformConstant
+             142:             TypeImage 19(int) Cube sampled format:Unknown
+             143:             TypePointer UniformConstant 142
+ 144(g_tTexcdu4):    143(ptr) Variable UniformConstant
+             145:             TypeImage 6(float) 1D array sampled format:Unknown
+             146:             TypePointer UniformConstant 145
+147(g_tTex1df4a):    146(ptr) Variable UniformConstant
+             148:             TypeImage 11(int) 1D array sampled format:Unknown
+             149:             TypePointer UniformConstant 148
+150(g_tTex1di4a):    149(ptr) Variable UniformConstant
+             151:             TypeImage 19(int) 1D array sampled format:Unknown
+             152:             TypePointer UniformConstant 151
+153(g_tTex1du4a):    152(ptr) Variable UniformConstant
+             154:             TypeImage 6(float) 2D array sampled format:Unknown
+             155:             TypePointer UniformConstant 154
+156(g_tTex2df4a):    155(ptr) Variable UniformConstant
+             157:             TypeImage 11(int) 2D array sampled format:Unknown
+             158:             TypePointer UniformConstant 157
+159(g_tTex2di4a):    158(ptr) Variable UniformConstant
+             160:             TypeImage 19(int) 2D array sampled format:Unknown
+             161:             TypePointer UniformConstant 160
+162(g_tTex2du4a):    161(ptr) Variable UniformConstant
+             163:             TypeImage 6(float) Cube array sampled format:Unknown
+             164:             TypePointer UniformConstant 163
+165(g_tTexcdf4a):    164(ptr) Variable UniformConstant
+             166:             TypeImage 11(int) Cube array sampled format:Unknown
+             167:             TypePointer UniformConstant 166
+168(g_tTexcdi4a):    167(ptr) Variable UniformConstant
+             169:             TypeImage 19(int) Cube array sampled format:Unknown
+             170:             TypePointer UniformConstant 169
+171(g_tTexcdu4a):    170(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-      108(psout):    107(ptr) Variable Function
+      116(psout):    115(ptr) Variable Function
               10:           7 Load 9(g_tTex1df4)
-              18:     17(ptr) AccessChain 14(c2) 16
-              19:     11(int) Load 18
-              21:     17(ptr) AccessChain 14(c2) 20
-              22:     11(int) Load 21
-              24:   23(fvec4) ImageFetch 10 19 Lod 22
-              28:          25 Load 27(g_tTex1di4)
-              29:     17(ptr) AccessChain 14(c2) 16
-              30:     11(int) Load 29
-              31:     17(ptr) AccessChain 14(c2) 20
-              32:     11(int) Load 31
-              34:   33(ivec4) ImageFetch 28 30 Lod 32
-              38:          35 Load 37(g_tTex1du4)
-              39:     17(ptr) AccessChain 14(c2) 16
-              40:     11(int) Load 39
-              41:     17(ptr) AccessChain 14(c2) 20
-              42:     11(int) Load 41
-              44:   43(ivec4) ImageFetch 38 40 Lod 42
-              48:          45 Load 47(g_tTex2df4)
-              52:   49(ivec3) Load 51(c3)
-              53:   12(ivec2) VectorShuffle 52 52 0 1
-              55:     17(ptr) AccessChain 51(c3) 54
-              56:     11(int) Load 55
-              57:   23(fvec4) ImageFetch 48 53 Lod 56
-              61:          58 Load 60(g_tTex2di4)
-              62:   49(ivec3) Load 51(c3)
-              63:   12(ivec2) VectorShuffle 62 62 0 1
-              64:     17(ptr) AccessChain 51(c3) 54
-              65:     11(int) Load 64
-              66:   33(ivec4) ImageFetch 61 63 Lod 65
-              70:          67 Load 69(g_tTex2du4)
-              71:   49(ivec3) Load 51(c3)
-              72:   12(ivec2) VectorShuffle 71 71 0 1
-              73:     17(ptr) AccessChain 51(c3) 54
-              74:     11(int) Load 73
-              75:   43(ivec4) ImageFetch 70 72 Lod 74
-              79:          76 Load 78(g_tTex3df4)
-              82:   33(ivec4) Load 81(c4)
-              83:   49(ivec3) VectorShuffle 82 82 0 1 2
-              85:     17(ptr) AccessChain 81(c4) 84
-              86:     11(int) Load 85
-              87:   23(fvec4) ImageFetch 79 83 Lod 86
-              91:          88 Load 90(g_tTex3di4)
-              92:   33(ivec4) Load 81(c4)
-              93:   49(ivec3) VectorShuffle 92 92 0 1 2
-              94:     17(ptr) AccessChain 81(c4) 84
-              95:     11(int) Load 94
-              96:   33(ivec4) ImageFetch 91 93 Lod 95
-             100:          97 Load 99(g_tTex3du4)
-             101:   33(ivec4) Load 81(c4)
-             102:   49(ivec3) VectorShuffle 101 101 0 1 2
-             103:     17(ptr) AccessChain 81(c4) 84
-             104:     11(int) Load 103
-             105:   43(ivec4) ImageFetch 100 102 Lod 104
-             113:    112(ptr) AccessChain 108(psout) 109
-                              Store 113 111
-             116:    115(ptr) AccessChain 108(psout) 114
-                              Store 116 110
-             119:    112(ptr) AccessChain 108(psout) 109
-             120:   23(fvec4) Load 119
-                              Store 118(Color) 120
-             123:    115(ptr) AccessChain 108(psout) 114
-             124:    6(float) Load 123
-                              Store 122(Depth) 124
+              22:     21(ptr) AccessChain 17 18 20
+              23:     11(int) Load 22
+              25:     21(ptr) AccessChain 17 18 24
+              26:     11(int) Load 25
+              28:   27(fvec4) ImageFetch 10 23 Lod 26
+              32:          29 Load 31(g_tTex1di4)
+              33:     21(ptr) AccessChain 17 18 20
+              34:     11(int) Load 33
+              35:     21(ptr) AccessChain 17 18 24
+              36:     11(int) Load 35
+              37:   14(ivec4) ImageFetch 32 34 Lod 36
+              41:          38 Load 40(g_tTex1du4)
+              42:     21(ptr) AccessChain 17 18 20
+              43:     11(int) Load 42
+              44:     21(ptr) AccessChain 17 18 24
+              45:     11(int) Load 44
+              47:   46(ivec4) ImageFetch 41 43 Lod 45
+              51:          48 Load 50(g_tTex2df4)
+              54:     53(ptr) AccessChain 17 52
+              55:   13(ivec3) Load 54
+              56:   12(ivec2) VectorShuffle 55 55 0 1
+              58:     21(ptr) AccessChain 17 52 57
+              59:     11(int) Load 58
+              60:   27(fvec4) ImageFetch 51 56 Lod 59
+              64:          61 Load 63(g_tTex2di4)
+              65:     53(ptr) AccessChain 17 52
+              66:   13(ivec3) Load 65
+              67:   12(ivec2) VectorShuffle 66 66 0 1
+              68:     21(ptr) AccessChain 17 52 57
+              69:     11(int) Load 68
+              70:   14(ivec4) ImageFetch 64 67 Lod 69
+              74:          71 Load 73(g_tTex2du4)
+              75:     53(ptr) AccessChain 17 52
+              76:   13(ivec3) Load 75
+              77:   12(ivec2) VectorShuffle 76 76 0 1
+              78:     21(ptr) AccessChain 17 52 57
+              79:     11(int) Load 78
+              80:   46(ivec4) ImageFetch 74 77 Lod 79
+              84:          81 Load 83(g_tTex3df4)
+              87:     86(ptr) AccessChain 17 85
+              88:   14(ivec4) Load 87
+              89:   13(ivec3) VectorShuffle 88 88 0 1 2
+              91:     21(ptr) AccessChain 17 85 90
+              92:     11(int) Load 91
+              93:   27(fvec4) ImageFetch 84 89 Lod 92
+              97:          94 Load 96(g_tTex3di4)
+              98:     86(ptr) AccessChain 17 85
+              99:   14(ivec4) Load 98
+             100:   13(ivec3) VectorShuffle 99 99 0 1 2
+             101:     21(ptr) AccessChain 17 85 90
+             102:     11(int) Load 101
+             103:   14(ivec4) ImageFetch 97 100 Lod 102
+             107:         104 Load 106(g_tTex3du4)
+             108:     86(ptr) AccessChain 17 85
+             109:   14(ivec4) Load 108
+             110:   13(ivec3) VectorShuffle 109 109 0 1 2
+             111:     21(ptr) AccessChain 17 85 90
+             112:     11(int) Load 111
+             113:   46(ivec4) ImageFetch 107 110 Lod 112
+             121:    120(ptr) AccessChain 116(psout) 117
+                              Store 121 119
+             123:    122(ptr) AccessChain 116(psout) 18
+                              Store 123 118
+             126:    120(ptr) AccessChain 116(psout) 117
+             127:   27(fvec4) Load 126
+                              Store 125(Color) 127
+             130:    122(ptr) AccessChain 116(psout) 18
+             131:    6(float) Load 130
+                              Store 129(Depth) 131
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out
index 62e6128d1..4e1efadba 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out
@@ -1,85 +1,124 @@
 hlsl.load.basic.dx10.vert
 Shader version: 450
 0:? Sequence
-0:47  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:47  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:47    Function Parameters: 
 0:?     Sequence
 0:51      textureFetch (global 4-component vector of float)
 0:51        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:51        vector swizzle (temp int)
-0:51          'c2' (uniform 2-component vector of int)
+0:51          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:51            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51            Constant:
+0:51              1 (const uint)
 0:51          Sequence
 0:51            Constant:
 0:51              0 (const int)
 0:51        direct index (temp int)
-0:51          'c2' (uniform 2-component vector of int)
+0:51          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:51            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51            Constant:
+0:51              1 (const uint)
 0:51          Constant:
 0:51            1 (const int)
 0:52      textureFetch (global 4-component vector of int)
 0:52        'g_tTex1di4' (uniform itexture1D)
 0:52        vector swizzle (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52        direct index (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
 0:53      textureFetch (global 4-component vector of uint)
 0:53        'g_tTex1du4' (uniform utexture1D)
 0:53        vector swizzle (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53        direct index (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
 0:56      textureFetch (global 4-component vector of float)
 0:56        'g_tTex2df4' (uniform texture2D)
 0:56        vector swizzle (temp 2-component vector of int)
-0:56          'c3' (uniform 3-component vector of int)
+0:56          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:56            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56            Constant:
+0:56              2 (const uint)
 0:56          Sequence
 0:56            Constant:
 0:56              0 (const int)
 0:56            Constant:
 0:56              1 (const int)
 0:56        direct index (temp int)
-0:56          'c3' (uniform 3-component vector of int)
+0:56          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:56            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56            Constant:
+0:56              2 (const uint)
 0:56          Constant:
 0:56            2 (const int)
 0:57      textureFetch (global 4-component vector of int)
 0:57        'g_tTex2di4' (uniform itexture2D)
 0:57        vector swizzle (temp 2-component vector of int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
 0:57            Constant:
 0:57              1 (const int)
 0:57        direct index (temp int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
 0:58      textureFetch (global 4-component vector of uint)
 0:58        'g_tTex2du4' (uniform utexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
 0:58            Constant:
 0:58              1 (const int)
 0:58        direct index (temp int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
 0:61      textureFetch (global 4-component vector of float)
 0:61        'g_tTex3df4' (uniform texture3D)
 0:61        vector swizzle (temp 3-component vector of int)
-0:61          'c4' (uniform 4-component vector of int)
+0:61          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:61            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61            Constant:
+0:61              3 (const uint)
 0:61          Sequence
 0:61            Constant:
 0:61              0 (const int)
@@ -88,13 +127,19 @@ Shader version: 450
 0:61            Constant:
 0:61              2 (const int)
 0:61        direct index (temp int)
-0:61          'c4' (uniform 4-component vector of int)
+0:61          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:61            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61            Constant:
+0:61              3 (const uint)
 0:61          Constant:
 0:61            3 (const int)
 0:62      textureFetch (global 4-component vector of int)
 0:62        'g_tTex3di4' (uniform itexture3D)
 0:62        vector swizzle (temp 3-component vector of int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Sequence
 0:62            Constant:
 0:62              0 (const int)
@@ -103,13 +148,19 @@ Shader version: 450
 0:62            Constant:
 0:62              2 (const int)
 0:62        direct index (temp int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
 0:63      textureFetch (global 4-component vector of uint)
 0:63        'g_tTex3du4' (uniform utexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Sequence
 0:63            Constant:
 0:63              0 (const int)
@@ -118,7 +169,10 @@ Shader version: 450
 0:63            Constant:
 0:63              2 (const int)
 0:63        direct index (temp int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Constant:
 0:63            3 (const int)
 0:67      move second child to first child (temp 4-component vector of float)
@@ -163,15 +217,8 @@ Shader version: 450
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Pos' (out 4-component vector of float Position)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked vertex stage:
@@ -179,85 +226,124 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:47  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:47  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:47    Function Parameters: 
 0:?     Sequence
 0:51      textureFetch (global 4-component vector of float)
 0:51        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:51        vector swizzle (temp int)
-0:51          'c2' (uniform 2-component vector of int)
+0:51          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:51            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51            Constant:
+0:51              1 (const uint)
 0:51          Sequence
 0:51            Constant:
 0:51              0 (const int)
 0:51        direct index (temp int)
-0:51          'c2' (uniform 2-component vector of int)
+0:51          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:51            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51            Constant:
+0:51              1 (const uint)
 0:51          Constant:
 0:51            1 (const int)
 0:52      textureFetch (global 4-component vector of int)
 0:52        'g_tTex1di4' (uniform itexture1D)
 0:52        vector swizzle (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52        direct index (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
 0:53      textureFetch (global 4-component vector of uint)
 0:53        'g_tTex1du4' (uniform utexture1D)
 0:53        vector swizzle (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53        direct index (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
 0:56      textureFetch (global 4-component vector of float)
 0:56        'g_tTex2df4' (uniform texture2D)
 0:56        vector swizzle (temp 2-component vector of int)
-0:56          'c3' (uniform 3-component vector of int)
+0:56          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:56            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56            Constant:
+0:56              2 (const uint)
 0:56          Sequence
 0:56            Constant:
 0:56              0 (const int)
 0:56            Constant:
 0:56              1 (const int)
 0:56        direct index (temp int)
-0:56          'c3' (uniform 3-component vector of int)
+0:56          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:56            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56            Constant:
+0:56              2 (const uint)
 0:56          Constant:
 0:56            2 (const int)
 0:57      textureFetch (global 4-component vector of int)
 0:57        'g_tTex2di4' (uniform itexture2D)
 0:57        vector swizzle (temp 2-component vector of int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
 0:57            Constant:
 0:57              1 (const int)
 0:57        direct index (temp int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
 0:58      textureFetch (global 4-component vector of uint)
 0:58        'g_tTex2du4' (uniform utexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
 0:58            Constant:
 0:58              1 (const int)
 0:58        direct index (temp int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
 0:61      textureFetch (global 4-component vector of float)
 0:61        'g_tTex3df4' (uniform texture3D)
 0:61        vector swizzle (temp 3-component vector of int)
-0:61          'c4' (uniform 4-component vector of int)
+0:61          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:61            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61            Constant:
+0:61              3 (const uint)
 0:61          Sequence
 0:61            Constant:
 0:61              0 (const int)
@@ -266,13 +352,19 @@ Shader version: 450
 0:61            Constant:
 0:61              2 (const int)
 0:61        direct index (temp int)
-0:61          'c4' (uniform 4-component vector of int)
+0:61          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:61            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61            Constant:
+0:61              3 (const uint)
 0:61          Constant:
 0:61            3 (const int)
 0:62      textureFetch (global 4-component vector of int)
 0:62        'g_tTex3di4' (uniform itexture3D)
 0:62        vector swizzle (temp 3-component vector of int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Sequence
 0:62            Constant:
 0:62              0 (const int)
@@ -281,13 +373,19 @@ Shader version: 450
 0:62            Constant:
 0:62              2 (const int)
 0:62        direct index (temp int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
 0:63      textureFetch (global 4-component vector of uint)
 0:63        'g_tTex3du4' (uniform utexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Sequence
 0:63            Constant:
 0:63              0 (const int)
@@ -296,7 +394,10 @@ Shader version: 450
 0:63            Constant:
 0:63              2 (const int)
 0:63        direct index (temp int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Constant:
 0:63            3 (const int)
 0:67      move second child to first child (temp 4-component vector of float)
@@ -341,86 +442,91 @@ Shader version: 450
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Pos' (out 4-component vector of float Position)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 163
+// Id's are bound by 166
 
                               Capability Shader
                               Capability Sampled1D
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 115
+                              EntryPoint Vertex 4  "main" 123
                               Name 4  "main"
                               Name 9  "g_tTex1df4"
-                              Name 14  "c2"
-                              Name 27  "g_tTex1di4"
-                              Name 37  "g_tTex1du4"
-                              Name 47  "g_tTex2df4"
-                              Name 51  "c3"
-                              Name 60  "g_tTex2di4"
-                              Name 69  "g_tTex2du4"
-                              Name 78  "g_tTex3df4"
-                              Name 81  "c4"
-                              Name 90  "g_tTex3di4"
-                              Name 99  "g_tTex3du4"
-                              Name 106  "VS_OUTPUT"
-                              MemberName 106(VS_OUTPUT) 0  "Pos"
-                              Name 108  "vsout"
-                              Name 115  "Pos"
-                              Name 121  "g_sSamp"
-                              Name 124  "g_tTexcdf4"
-                              Name 127  "g_tTexcdi4"
-                              Name 130  "g_tTexcdu4"
-                              Name 133  "g_tTex1df4a"
-                              Name 136  "g_tTex1di4a"
-                              Name 139  "g_tTex1du4a"
-                              Name 142  "g_tTex2df4a"
-                              Name 145  "g_tTex2di4a"
-                              Name 148  "g_tTex2du4a"
-                              Name 151  "g_tTexcdf4a"
-                              Name 154  "g_tTexcdi4a"
-                              Name 157  "g_tTexcdu4a"
-                              Name 158  "c1"
-                              Name 159  "o1"
-                              Name 160  "o2"
-                              Name 161  "o3"
-                              Name 162  "o4"
+                              Name 15  "$Global"
+                              MemberName 15($Global) 0  "c1"
+                              MemberName 15($Global) 1  "c2"
+                              MemberName 15($Global) 2  "c3"
+                              MemberName 15($Global) 3  "c4"
+                              MemberName 15($Global) 4  "o1"
+                              MemberName 15($Global) 5  "o2"
+                              MemberName 15($Global) 6  "o3"
+                              MemberName 15($Global) 7  "o4"
+                              Name 17  ""
+                              Name 31  "g_tTex1di4"
+                              Name 40  "g_tTex1du4"
+                              Name 50  "g_tTex2df4"
+                              Name 63  "g_tTex2di4"
+                              Name 73  "g_tTex2du4"
+                              Name 83  "g_tTex3df4"
+                              Name 96  "g_tTex3di4"
+                              Name 106  "g_tTex3du4"
+                              Name 114  "VS_OUTPUT"
+                              MemberName 114(VS_OUTPUT) 0  "Pos"
+                              Name 116  "vsout"
+                              Name 123  "Pos"
+                              Name 129  "g_sSamp"
+                              Name 132  "g_tTexcdf4"
+                              Name 135  "g_tTexcdi4"
+                              Name 138  "g_tTexcdu4"
+                              Name 141  "g_tTex1df4a"
+                              Name 144  "g_tTex1di4a"
+                              Name 147  "g_tTex1du4a"
+                              Name 150  "g_tTex2df4a"
+                              Name 153  "g_tTex2di4a"
+                              Name 156  "g_tTex2du4a"
+                              Name 159  "g_tTexcdf4a"
+                              Name 162  "g_tTexcdi4a"
+                              Name 165  "g_tTexcdu4a"
                               Decorate 9(g_tTex1df4) DescriptorSet 0
                               Decorate 9(g_tTex1df4) Binding 0
-                              Decorate 27(g_tTex1di4) DescriptorSet 0
-                              Decorate 37(g_tTex1du4) DescriptorSet 0
-                              Decorate 47(g_tTex2df4) DescriptorSet 0
-                              Decorate 60(g_tTex2di4) DescriptorSet 0
-                              Decorate 69(g_tTex2du4) DescriptorSet 0
-                              Decorate 78(g_tTex3df4) DescriptorSet 0
-                              Decorate 90(g_tTex3di4) DescriptorSet 0
-                              Decorate 99(g_tTex3du4) DescriptorSet 0
-                              Decorate 115(Pos) BuiltIn Position
-                              Decorate 121(g_sSamp) DescriptorSet 0
-                              Decorate 121(g_sSamp) Binding 0
-                              Decorate 124(g_tTexcdf4) DescriptorSet 0
-                              Decorate 127(g_tTexcdi4) DescriptorSet 0
-                              Decorate 130(g_tTexcdu4) DescriptorSet 0
-                              Decorate 133(g_tTex1df4a) DescriptorSet 0
-                              Decorate 136(g_tTex1di4a) DescriptorSet 0
-                              Decorate 139(g_tTex1du4a) DescriptorSet 0
-                              Decorate 142(g_tTex2df4a) DescriptorSet 0
-                              Decorate 145(g_tTex2di4a) DescriptorSet 0
-                              Decorate 148(g_tTex2du4a) DescriptorSet 0
-                              Decorate 151(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 154(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 157(g_tTexcdu4a) DescriptorSet 0
+                              MemberDecorate 15($Global) 0 Offset 0
+                              MemberDecorate 15($Global) 1 Offset 8
+                              MemberDecorate 15($Global) 2 Offset 16
+                              MemberDecorate 15($Global) 3 Offset 32
+                              MemberDecorate 15($Global) 4 Offset 48
+                              MemberDecorate 15($Global) 5 Offset 56
+                              MemberDecorate 15($Global) 6 Offset 64
+                              MemberDecorate 15($Global) 7 Offset 80
+                              Decorate 15($Global) Block
+                              Decorate 17 DescriptorSet 0
+                              Decorate 31(g_tTex1di4) DescriptorSet 0
+                              Decorate 40(g_tTex1du4) DescriptorSet 0
+                              Decorate 50(g_tTex2df4) DescriptorSet 0
+                              Decorate 63(g_tTex2di4) DescriptorSet 0
+                              Decorate 73(g_tTex2du4) DescriptorSet 0
+                              Decorate 83(g_tTex3df4) DescriptorSet 0
+                              Decorate 96(g_tTex3di4) DescriptorSet 0
+                              Decorate 106(g_tTex3du4) DescriptorSet 0
+                              Decorate 123(Pos) BuiltIn Position
+                              Decorate 129(g_sSamp) DescriptorSet 0
+                              Decorate 129(g_sSamp) Binding 0
+                              Decorate 132(g_tTexcdf4) DescriptorSet 0
+                              Decorate 135(g_tTexcdi4) DescriptorSet 0
+                              Decorate 138(g_tTexcdu4) DescriptorSet 0
+                              Decorate 141(g_tTex1df4a) DescriptorSet 0
+                              Decorate 144(g_tTex1di4a) DescriptorSet 0
+                              Decorate 147(g_tTex1du4a) DescriptorSet 0
+                              Decorate 150(g_tTex2df4a) DescriptorSet 0
+                              Decorate 153(g_tTex2di4a) DescriptorSet 0
+                              Decorate 156(g_tTex2du4a) DescriptorSet 0
+                              Decorate 159(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 162(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 165(g_tTexcdu4a) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -429,159 +535,162 @@ Shader version: 450
    9(g_tTex1df4):      8(ptr) Variable UniformConstant
               11:             TypeInt 32 1
               12:             TypeVector 11(int) 2
-              13:             TypePointer UniformConstant 12(ivec2)
-          14(c2):     13(ptr) Variable UniformConstant
-              15:             TypeInt 32 0
-              16:     15(int) Constant 0
-              17:             TypePointer UniformConstant 11(int)
-              20:     15(int) Constant 1
-              23:             TypeVector 6(float) 4
-              25:             TypeImage 11(int) 1D sampled format:Unknown
-              26:             TypePointer UniformConstant 25
-  27(g_tTex1di4):     26(ptr) Variable UniformConstant
-              33:             TypeVector 11(int) 4
-              35:             TypeImage 15(int) 1D sampled format:Unknown
-              36:             TypePointer UniformConstant 35
-  37(g_tTex1du4):     36(ptr) Variable UniformConstant
-              43:             TypeVector 15(int) 4
-              45:             TypeImage 6(float) 2D sampled format:Unknown
-              46:             TypePointer UniformConstant 45
-  47(g_tTex2df4):     46(ptr) Variable UniformConstant
-              49:             TypeVector 11(int) 3
-              50:             TypePointer UniformConstant 49(ivec3)
-          51(c3):     50(ptr) Variable UniformConstant
-              54:     15(int) Constant 2
-              58:             TypeImage 11(int) 2D sampled format:Unknown
-              59:             TypePointer UniformConstant 58
-  60(g_tTex2di4):     59(ptr) Variable UniformConstant
-              67:             TypeImage 15(int) 2D sampled format:Unknown
-              68:             TypePointer UniformConstant 67
-  69(g_tTex2du4):     68(ptr) Variable UniformConstant
-              76:             TypeImage 6(float) 3D sampled format:Unknown
-              77:             TypePointer UniformConstant 76
-  78(g_tTex3df4):     77(ptr) Variable UniformConstant
-              80:             TypePointer UniformConstant 33(ivec4)
-          81(c4):     80(ptr) Variable UniformConstant
-              84:     15(int) Constant 3
-              88:             TypeImage 11(int) 3D sampled format:Unknown
-              89:             TypePointer UniformConstant 88
-  90(g_tTex3di4):     89(ptr) Variable UniformConstant
-              97:             TypeImage 15(int) 3D sampled format:Unknown
-              98:             TypePointer UniformConstant 97
-  99(g_tTex3du4):     98(ptr) Variable UniformConstant
-  106(VS_OUTPUT):             TypeStruct 23(fvec4)
-             107:             TypePointer Function 106(VS_OUTPUT)
-             109:     11(int) Constant 0
-             110:    6(float) Constant 0
-             111:   23(fvec4) ConstantComposite 110 110 110 110
-             112:             TypePointer Function 23(fvec4)
-             114:             TypePointer Output 23(fvec4)
-        115(Pos):    114(ptr) Variable Output
-             119:             TypeSampler
-             120:             TypePointer UniformConstant 119
-    121(g_sSamp):    120(ptr) Variable UniformConstant
-             122:             TypeImage 6(float) Cube sampled format:Unknown
-             123:             TypePointer UniformConstant 122
- 124(g_tTexcdf4):    123(ptr) Variable UniformConstant
-             125:             TypeImage 11(int) Cube sampled format:Unknown
-             126:             TypePointer UniformConstant 125
- 127(g_tTexcdi4):    126(ptr) Variable UniformConstant
-             128:             TypeImage 15(int) Cube sampled format:Unknown
-             129:             TypePointer UniformConstant 128
- 130(g_tTexcdu4):    129(ptr) Variable UniformConstant
-             131:             TypeImage 6(float) 1D array sampled format:Unknown
-             132:             TypePointer UniformConstant 131
-133(g_tTex1df4a):    132(ptr) Variable UniformConstant
-             134:             TypeImage 11(int) 1D array sampled format:Unknown
-             135:             TypePointer UniformConstant 134
-136(g_tTex1di4a):    135(ptr) Variable UniformConstant
-             137:             TypeImage 15(int) 1D array sampled format:Unknown
-             138:             TypePointer UniformConstant 137
-139(g_tTex1du4a):    138(ptr) Variable UniformConstant
-             140:             TypeImage 6(float) 2D array sampled format:Unknown
-             141:             TypePointer UniformConstant 140
-142(g_tTex2df4a):    141(ptr) Variable UniformConstant
-             143:             TypeImage 11(int) 2D array sampled format:Unknown
-             144:             TypePointer UniformConstant 143
-145(g_tTex2di4a):    144(ptr) Variable UniformConstant
-             146:             TypeImage 15(int) 2D array sampled format:Unknown
-             147:             TypePointer UniformConstant 146
-148(g_tTex2du4a):    147(ptr) Variable UniformConstant
-             149:             TypeImage 6(float) Cube array sampled format:Unknown
-             150:             TypePointer UniformConstant 149
-151(g_tTexcdf4a):    150(ptr) Variable UniformConstant
-             152:             TypeImage 11(int) Cube array sampled format:Unknown
-             153:             TypePointer UniformConstant 152
-154(g_tTexcdi4a):    153(ptr) Variable UniformConstant
-             155:             TypeImage 15(int) Cube array sampled format:Unknown
-             156:             TypePointer UniformConstant 155
-157(g_tTexcdu4a):    156(ptr) Variable UniformConstant
-         158(c1):     17(ptr) Variable UniformConstant
-         159(o1):     17(ptr) Variable UniformConstant
-         160(o2):     13(ptr) Variable UniformConstant
-         161(o3):     50(ptr) Variable UniformConstant
-         162(o4):     80(ptr) Variable UniformConstant
+              13:             TypeVector 11(int) 3
+              14:             TypeVector 11(int) 4
+     15($Global):             TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4)
+              16:             TypePointer Uniform 15($Global)
+              17:     16(ptr) Variable Uniform
+              18:     11(int) Constant 1
+              19:             TypeInt 32 0
+              20:     19(int) Constant 0
+              21:             TypePointer Uniform 11(int)
+              24:     19(int) Constant 1
+              27:             TypeVector 6(float) 4
+              29:             TypeImage 11(int) 1D sampled format:Unknown
+              30:             TypePointer UniformConstant 29
+  31(g_tTex1di4):     30(ptr) Variable UniformConstant
+              38:             TypeImage 19(int) 1D sampled format:Unknown
+              39:             TypePointer UniformConstant 38
+  40(g_tTex1du4):     39(ptr) Variable UniformConstant
+              46:             TypeVector 19(int) 4
+              48:             TypeImage 6(float) 2D sampled format:Unknown
+              49:             TypePointer UniformConstant 48
+  50(g_tTex2df4):     49(ptr) Variable UniformConstant
+              52:     11(int) Constant 2
+              53:             TypePointer Uniform 13(ivec3)
+              57:     19(int) Constant 2
+              61:             TypeImage 11(int) 2D sampled format:Unknown
+              62:             TypePointer UniformConstant 61
+  63(g_tTex2di4):     62(ptr) Variable UniformConstant
+              71:             TypeImage 19(int) 2D sampled format:Unknown
+              72:             TypePointer UniformConstant 71
+  73(g_tTex2du4):     72(ptr) Variable UniformConstant
+              81:             TypeImage 6(float) 3D sampled format:Unknown
+              82:             TypePointer UniformConstant 81
+  83(g_tTex3df4):     82(ptr) Variable UniformConstant
+              85:     11(int) Constant 3
+              86:             TypePointer Uniform 14(ivec4)
+              90:     19(int) Constant 3
+              94:             TypeImage 11(int) 3D sampled format:Unknown
+              95:             TypePointer UniformConstant 94
+  96(g_tTex3di4):     95(ptr) Variable UniformConstant
+             104:             TypeImage 19(int) 3D sampled format:Unknown
+             105:             TypePointer UniformConstant 104
+ 106(g_tTex3du4):    105(ptr) Variable UniformConstant
+  114(VS_OUTPUT):             TypeStruct 27(fvec4)
+             115:             TypePointer Function 114(VS_OUTPUT)
+             117:     11(int) Constant 0
+             118:    6(float) Constant 0
+             119:   27(fvec4) ConstantComposite 118 118 118 118
+             120:             TypePointer Function 27(fvec4)
+             122:             TypePointer Output 27(fvec4)
+        123(Pos):    122(ptr) Variable Output
+             127:             TypeSampler
+             128:             TypePointer UniformConstant 127
+    129(g_sSamp):    128(ptr) Variable UniformConstant
+             130:             TypeImage 6(float) Cube sampled format:Unknown
+             131:             TypePointer UniformConstant 130
+ 132(g_tTexcdf4):    131(ptr) Variable UniformConstant
+             133:             TypeImage 11(int) Cube sampled format:Unknown
+             134:             TypePointer UniformConstant 133
+ 135(g_tTexcdi4):    134(ptr) Variable UniformConstant
+             136:             TypeImage 19(int) Cube sampled format:Unknown
+             137:             TypePointer UniformConstant 136
+ 138(g_tTexcdu4):    137(ptr) Variable UniformConstant
+             139:             TypeImage 6(float) 1D array sampled format:Unknown
+             140:             TypePointer UniformConstant 139
+141(g_tTex1df4a):    140(ptr) Variable UniformConstant
+             142:             TypeImage 11(int) 1D array sampled format:Unknown
+             143:             TypePointer UniformConstant 142
+144(g_tTex1di4a):    143(ptr) Variable UniformConstant
+             145:             TypeImage 19(int) 1D array sampled format:Unknown
+             146:             TypePointer UniformConstant 145
+147(g_tTex1du4a):    146(ptr) Variable UniformConstant
+             148:             TypeImage 6(float) 2D array sampled format:Unknown
+             149:             TypePointer UniformConstant 148
+150(g_tTex2df4a):    149(ptr) Variable UniformConstant
+             151:             TypeImage 11(int) 2D array sampled format:Unknown
+             152:             TypePointer UniformConstant 151
+153(g_tTex2di4a):    152(ptr) Variable UniformConstant
+             154:             TypeImage 19(int) 2D array sampled format:Unknown
+             155:             TypePointer UniformConstant 154
+156(g_tTex2du4a):    155(ptr) Variable UniformConstant
+             157:             TypeImage 6(float) Cube array sampled format:Unknown
+             158:             TypePointer UniformConstant 157
+159(g_tTexcdf4a):    158(ptr) Variable UniformConstant
+             160:             TypeImage 11(int) Cube array sampled format:Unknown
+             161:             TypePointer UniformConstant 160
+162(g_tTexcdi4a):    161(ptr) Variable UniformConstant
+             163:             TypeImage 19(int) Cube array sampled format:Unknown
+             164:             TypePointer UniformConstant 163
+165(g_tTexcdu4a):    164(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-      108(vsout):    107(ptr) Variable Function
+      116(vsout):    115(ptr) Variable Function
               10:           7 Load 9(g_tTex1df4)
-              18:     17(ptr) AccessChain 14(c2) 16
-              19:     11(int) Load 18
-              21:     17(ptr) AccessChain 14(c2) 20
-              22:     11(int) Load 21
-              24:   23(fvec4) ImageFetch 10 19 Lod 22
-              28:          25 Load 27(g_tTex1di4)
-              29:     17(ptr) AccessChain 14(c2) 16
-              30:     11(int) Load 29
-              31:     17(ptr) AccessChain 14(c2) 20
-              32:     11(int) Load 31
-              34:   33(ivec4) ImageFetch 28 30 Lod 32
-              38:          35 Load 37(g_tTex1du4)
-              39:     17(ptr) AccessChain 14(c2) 16
-              40:     11(int) Load 39
-              41:     17(ptr) AccessChain 14(c2) 20
-              42:     11(int) Load 41
-              44:   43(ivec4) ImageFetch 38 40 Lod 42
-              48:          45 Load 47(g_tTex2df4)
-              52:   49(ivec3) Load 51(c3)
-              53:   12(ivec2) VectorShuffle 52 52 0 1
-              55:     17(ptr) AccessChain 51(c3) 54
-              56:     11(int) Load 55
-              57:   23(fvec4) ImageFetch 48 53 Lod 56
-              61:          58 Load 60(g_tTex2di4)
-              62:   49(ivec3) Load 51(c3)
-              63:   12(ivec2) VectorShuffle 62 62 0 1
-              64:     17(ptr) AccessChain 51(c3) 54
-              65:     11(int) Load 64
-              66:   33(ivec4) ImageFetch 61 63 Lod 65
-              70:          67 Load 69(g_tTex2du4)
-              71:   49(ivec3) Load 51(c3)
-              72:   12(ivec2) VectorShuffle 71 71 0 1
-              73:     17(ptr) AccessChain 51(c3) 54
-              74:     11(int) Load 73
-              75:   43(ivec4) ImageFetch 70 72 Lod 74
-              79:          76 Load 78(g_tTex3df4)
-              82:   33(ivec4) Load 81(c4)
-              83:   49(ivec3) VectorShuffle 82 82 0 1 2
-              85:     17(ptr) AccessChain 81(c4) 84
-              86:     11(int) Load 85
-              87:   23(fvec4) ImageFetch 79 83 Lod 86
-              91:          88 Load 90(g_tTex3di4)
-              92:   33(ivec4) Load 81(c4)
-              93:   49(ivec3) VectorShuffle 92 92 0 1 2
-              94:     17(ptr) AccessChain 81(c4) 84
-              95:     11(int) Load 94
-              96:   33(ivec4) ImageFetch 91 93 Lod 95
-             100:          97 Load 99(g_tTex3du4)
-             101:   33(ivec4) Load 81(c4)
-             102:   49(ivec3) VectorShuffle 101 101 0 1 2
-             103:     17(ptr) AccessChain 81(c4) 84
-             104:     11(int) Load 103
-             105:   43(ivec4) ImageFetch 100 102 Lod 104
-             113:    112(ptr) AccessChain 108(vsout) 109
-                              Store 113 111
-             116:    112(ptr) AccessChain 108(vsout) 109
-             117:   23(fvec4) Load 116
-                              Store 115(Pos) 117
+              22:     21(ptr) AccessChain 17 18 20
+              23:     11(int) Load 22
+              25:     21(ptr) AccessChain 17 18 24
+              26:     11(int) Load 25
+              28:   27(fvec4) ImageFetch 10 23 Lod 26
+              32:          29 Load 31(g_tTex1di4)
+              33:     21(ptr) AccessChain 17 18 20
+              34:     11(int) Load 33
+              35:     21(ptr) AccessChain 17 18 24
+              36:     11(int) Load 35
+              37:   14(ivec4) ImageFetch 32 34 Lod 36
+              41:          38 Load 40(g_tTex1du4)
+              42:     21(ptr) AccessChain 17 18 20
+              43:     11(int) Load 42
+              44:     21(ptr) AccessChain 17 18 24
+              45:     11(int) Load 44
+              47:   46(ivec4) ImageFetch 41 43 Lod 45
+              51:          48 Load 50(g_tTex2df4)
+              54:     53(ptr) AccessChain 17 52
+              55:   13(ivec3) Load 54
+              56:   12(ivec2) VectorShuffle 55 55 0 1
+              58:     21(ptr) AccessChain 17 52 57
+              59:     11(int) Load 58
+              60:   27(fvec4) ImageFetch 51 56 Lod 59
+              64:          61 Load 63(g_tTex2di4)
+              65:     53(ptr) AccessChain 17 52
+              66:   13(ivec3) Load 65
+              67:   12(ivec2) VectorShuffle 66 66 0 1
+              68:     21(ptr) AccessChain 17 52 57
+              69:     11(int) Load 68
+              70:   14(ivec4) ImageFetch 64 67 Lod 69
+              74:          71 Load 73(g_tTex2du4)
+              75:     53(ptr) AccessChain 17 52
+              76:   13(ivec3) Load 75
+              77:   12(ivec2) VectorShuffle 76 76 0 1
+              78:     21(ptr) AccessChain 17 52 57
+              79:     11(int) Load 78
+              80:   46(ivec4) ImageFetch 74 77 Lod 79
+              84:          81 Load 83(g_tTex3df4)
+              87:     86(ptr) AccessChain 17 85
+              88:   14(ivec4) Load 87
+              89:   13(ivec3) VectorShuffle 88 88 0 1 2
+              91:     21(ptr) AccessChain 17 85 90
+              92:     11(int) Load 91
+              93:   27(fvec4) ImageFetch 84 89 Lod 92
+              97:          94 Load 96(g_tTex3di4)
+              98:     86(ptr) AccessChain 17 85
+              99:   14(ivec4) Load 98
+             100:   13(ivec3) VectorShuffle 99 99 0 1 2
+             101:     21(ptr) AccessChain 17 85 90
+             102:     11(int) Load 101
+             103:   14(ivec4) ImageFetch 97 100 Lod 102
+             107:         104 Load 106(g_tTex3du4)
+             108:     86(ptr) AccessChain 17 85
+             109:   14(ivec4) Load 108
+             110:   13(ivec3) VectorShuffle 109 109 0 1 2
+             111:     21(ptr) AccessChain 17 85 90
+             112:     11(int) Load 111
+             113:   46(ivec4) ImageFetch 107 110 Lod 112
+             121:    120(ptr) AccessChain 116(vsout) 117
+                              Store 121 119
+             124:    120(ptr) AccessChain 116(vsout) 117
+             125:   27(fvec4) Load 124
+                              Store 123(Pos) 125
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
index 012af8687..ea1b5df35 100644
--- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.load.buffer.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:28      Sequence
@@ -10,19 +10,28 @@ gl_FragCoord origin is upper left
 0:28          'r00' (temp 4-component vector of float)
 0:28          textureFetch (global 4-component vector of float)
 0:28            'g_tTexbf4' (uniform samplerBuffer)
-0:28            'c1' (uniform int)
+0:28            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:28              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:28              Constant:
+0:28                0 (const uint)
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of int)
 0:29          'r01' (temp 4-component vector of int)
 0:29          textureFetch (global 4-component vector of int)
 0:29            'g_tTexbi4' (uniform isamplerBuffer)
-0:29            'c1' (uniform int)
+0:29            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:29              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:29              Constant:
+0:29                0 (const uint)
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of uint)
 0:30          'r02' (temp 4-component vector of uint)
 0:30          textureFetch (global 4-component vector of uint)
 0:30            'g_tTexbu4' (uniform usamplerBuffer)
-0:30            'c1' (uniform int)
+0:30            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:30              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:30              Constant:
+0:30                0 (const uint)
 0:34      move second child to first child (temp 4-component vector of float)
 0:34        Color: direct index for structure (temp 4-component vector of float)
 0:34          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
@@ -60,16 +69,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexbf4' (uniform samplerBuffer)
 0:?     'g_tTexbi4' (uniform isamplerBuffer)
 0:?     'g_tTexbu4' (uniform usamplerBuffer)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -78,7 +80,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:28      Sequence
@@ -86,19 +88,28 @@ gl_FragCoord origin is upper left
 0:28          'r00' (temp 4-component vector of float)
 0:28          textureFetch (global 4-component vector of float)
 0:28            'g_tTexbf4' (uniform samplerBuffer)
-0:28            'c1' (uniform int)
+0:28            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:28              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:28              Constant:
+0:28                0 (const uint)
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of int)
 0:29          'r01' (temp 4-component vector of int)
 0:29          textureFetch (global 4-component vector of int)
 0:29            'g_tTexbi4' (uniform isamplerBuffer)
-0:29            'c1' (uniform int)
+0:29            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:29              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:29              Constant:
+0:29                0 (const uint)
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of uint)
 0:30          'r02' (temp 4-component vector of uint)
 0:30          textureFetch (global 4-component vector of uint)
 0:30            'g_tTexbu4' (uniform usamplerBuffer)
-0:30            'c1' (uniform int)
+0:30            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:30              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:30              Constant:
+0:30                0 (const uint)
 0:34      move second child to first child (temp 4-component vector of float)
 0:34        Color: direct index for structure (temp 4-component vector of float)
 0:34          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
@@ -136,56 +147,61 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexbf4' (uniform samplerBuffer)
 0:?     'g_tTexbi4' (uniform isamplerBuffer)
 0:?     'g_tTexbu4' (uniform usamplerBuffer)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 76
+// Id's are bound by 71
 
                               Capability Shader
                               Capability SampledBuffer
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 55 59
+                              EntryPoint Fragment 4  "main" 62 66
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "r00"
                               Name 13  "g_tTexbf4"
-                              Name 17  "c1"
-                              Name 23  "r01"
-                              Name 27  "g_tTexbi4"
-                              Name 35  "r02"
-                              Name 39  "g_tTexbu4"
-                              Name 44  "PS_OUTPUT"
-                              MemberName 44(PS_OUTPUT) 0  "Color"
-                              MemberName 44(PS_OUTPUT) 1  "Depth"
-                              Name 46  "psout"
-                              Name 55  "Color"
-                              Name 59  "Depth"
-                              Name 63  "g_tTexbf4_test"
-                              Name 66  "c2"
-                              Name 69  "c3"
-                              Name 71  "c4"
-                              Name 72  "o1"
-                              Name 73  "o2"
-                              Name 74  "o3"
-                              Name 75  "o4"
+                              Name 19  "$Global"
+                              MemberName 19($Global) 0  "c1"
+                              MemberName 19($Global) 1  "c2"
+                              MemberName 19($Global) 2  "c3"
+                              MemberName 19($Global) 3  "c4"
+                              MemberName 19($Global) 4  "o1"
+                              MemberName 19($Global) 5  "o2"
+                              MemberName 19($Global) 6  "o3"
+                              MemberName 19($Global) 7  "o4"
+                              Name 21  ""
+                              Name 29  "r01"
+                              Name 33  "g_tTexbi4"
+                              Name 42  "r02"
+                              Name 46  "g_tTexbu4"
+                              Name 52  "PS_OUTPUT"
+                              MemberName 52(PS_OUTPUT) 0  "Color"
+                              MemberName 52(PS_OUTPUT) 1  "Depth"
+                              Name 54  "psout"
+                              Name 62  "Color"
+                              Name 66  "Depth"
+                              Name 70  "g_tTexbf4_test"
                               Decorate 13(g_tTexbf4) DescriptorSet 0
-                              Decorate 27(g_tTexbi4) DescriptorSet 0
-                              Decorate 39(g_tTexbu4) DescriptorSet 0
-                              Decorate 55(Color) Location 0
-                              Decorate 59(Depth) BuiltIn FragDepth
-                              Decorate 63(g_tTexbf4_test) DescriptorSet 0
-                              Decorate 63(g_tTexbf4_test) Binding 0
+                              MemberDecorate 19($Global) 0 Offset 0
+                              MemberDecorate 19($Global) 1 Offset 8
+                              MemberDecorate 19($Global) 2 Offset 16
+                              MemberDecorate 19($Global) 3 Offset 32
+                              MemberDecorate 19($Global) 4 Offset 48
+                              MemberDecorate 19($Global) 5 Offset 56
+                              MemberDecorate 19($Global) 6 Offset 64
+                              MemberDecorate 19($Global) 7 Offset 80
+                              Decorate 19($Global) Block
+                              Decorate 21 DescriptorSet 0
+                              Decorate 33(g_tTexbi4) DescriptorSet 0
+                              Decorate 46(g_tTexbu4) DescriptorSet 0
+                              Decorate 62(Color) Location 0
+                              Decorate 66(Depth) BuiltIn FragDepth
+                              Decorate 70(g_tTexbf4_test) DescriptorSet 0
+                              Decorate 70(g_tTexbf4_test) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -196,75 +212,70 @@ gl_FragCoord origin is upper left
               12:             TypePointer UniformConstant 11
    13(g_tTexbf4):     12(ptr) Variable UniformConstant
               15:             TypeInt 32 1
-              16:             TypePointer UniformConstant 15(int)
-          17(c1):     16(ptr) Variable UniformConstant
-              21:             TypeVector 15(int) 4
-              22:             TypePointer Function 21(ivec4)
-              24:             TypeImage 15(int) Buffer sampled format:Unknown
-              25:             TypeSampledImage 24
-              26:             TypePointer UniformConstant 25
-   27(g_tTexbi4):     26(ptr) Variable UniformConstant
-              32:             TypeInt 32 0
-              33:             TypeVector 32(int) 4
-              34:             TypePointer Function 33(ivec4)
-              36:             TypeImage 32(int) Buffer sampled format:Unknown
-              37:             TypeSampledImage 36
-              38:             TypePointer UniformConstant 37
-   39(g_tTexbu4):     38(ptr) Variable UniformConstant
-   44(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
-              45:             TypePointer Function 44(PS_OUTPUT)
-              47:     15(int) Constant 0
-              48:    6(float) Constant 1065353216
-              49:    7(fvec4) ConstantComposite 48 48 48 48
-              51:     15(int) Constant 1
-              52:             TypePointer Function 6(float)
-              54:             TypePointer Output 7(fvec4)
-       55(Color):     54(ptr) Variable Output
-              58:             TypePointer Output 6(float)
-       59(Depth):     58(ptr) Variable Output
-63(g_tTexbf4_test):     12(ptr) Variable UniformConstant
-              64:             TypeVector 15(int) 2
-              65:             TypePointer UniformConstant 64(ivec2)
-          66(c2):     65(ptr) Variable UniformConstant
-              67:             TypeVector 15(int) 3
-              68:             TypePointer UniformConstant 67(ivec3)
-          69(c3):     68(ptr) Variable UniformConstant
-              70:             TypePointer UniformConstant 21(ivec4)
-          71(c4):     70(ptr) Variable UniformConstant
-          72(o1):     16(ptr) Variable UniformConstant
-          73(o2):     65(ptr) Variable UniformConstant
-          74(o3):     68(ptr) Variable UniformConstant
-          75(o4):     70(ptr) Variable UniformConstant
+              16:             TypeVector 15(int) 2
+              17:             TypeVector 15(int) 3
+              18:             TypeVector 15(int) 4
+     19($Global):             TypeStruct 15(int) 16(ivec2) 17(ivec3) 18(ivec4) 15(int) 16(ivec2) 17(ivec3) 18(ivec4)
+              20:             TypePointer Uniform 19($Global)
+              21:     20(ptr) Variable Uniform
+              22:     15(int) Constant 0
+              23:             TypePointer Uniform 15(int)
+              28:             TypePointer Function 18(ivec4)
+              30:             TypeImage 15(int) Buffer sampled format:Unknown
+              31:             TypeSampledImage 30
+              32:             TypePointer UniformConstant 31
+   33(g_tTexbi4):     32(ptr) Variable UniformConstant
+              39:             TypeInt 32 0
+              40:             TypeVector 39(int) 4
+              41:             TypePointer Function 40(ivec4)
+              43:             TypeImage 39(int) Buffer sampled format:Unknown
+              44:             TypeSampledImage 43
+              45:             TypePointer UniformConstant 44
+   46(g_tTexbu4):     45(ptr) Variable UniformConstant
+   52(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+              53:             TypePointer Function 52(PS_OUTPUT)
+              55:    6(float) Constant 1065353216
+              56:    7(fvec4) ConstantComposite 55 55 55 55
+              58:     15(int) Constant 1
+              59:             TypePointer Function 6(float)
+              61:             TypePointer Output 7(fvec4)
+       62(Color):     61(ptr) Variable Output
+              65:             TypePointer Output 6(float)
+       66(Depth):     65(ptr) Variable Output
+70(g_tTexbf4_test):     12(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
           9(r00):      8(ptr) Variable Function
-         23(r01):     22(ptr) Variable Function
-         35(r02):     34(ptr) Variable Function
-       46(psout):     45(ptr) Variable Function
+         29(r01):     28(ptr) Variable Function
+         42(r02):     41(ptr) Variable Function
+       54(psout):     53(ptr) Variable Function
               14:          11 Load 13(g_tTexbf4)
-              18:     15(int) Load 17(c1)
-              19:          10 Image 14
-              20:    7(fvec4) ImageFetch 19 18
-                              Store 9(r00) 20
-              28:          25 Load 27(g_tTexbi4)
-              29:     15(int) Load 17(c1)
-              30:          24 Image 28
-              31:   21(ivec4) ImageFetch 30 29
-                              Store 23(r01) 31
-              40:          37 Load 39(g_tTexbu4)
-              41:     15(int) Load 17(c1)
-              42:          36 Image 40
-              43:   33(ivec4) ImageFetch 42 41
-                              Store 35(r02) 43
-              50:      8(ptr) AccessChain 46(psout) 47
-                              Store 50 49
-              53:     52(ptr) AccessChain 46(psout) 51
-                              Store 53 48
-              56:      8(ptr) AccessChain 46(psout) 47
-              57:    7(fvec4) Load 56
-                              Store 55(Color) 57
-              60:     52(ptr) AccessChain 46(psout) 51
-              61:    6(float) Load 60
-                              Store 59(Depth) 61
+              24:     23(ptr) AccessChain 21 22
+              25:     15(int) Load 24
+              26:          10 Image 14
+              27:    7(fvec4) ImageFetch 26 25
+                              Store 9(r00) 27
+              34:          31 Load 33(g_tTexbi4)
+              35:     23(ptr) AccessChain 21 22
+              36:     15(int) Load 35
+              37:          30 Image 34
+              38:   18(ivec4) ImageFetch 37 36
+                              Store 29(r01) 38
+              47:          44 Load 46(g_tTexbu4)
+              48:     23(ptr) AccessChain 21 22
+              49:     15(int) Load 48
+              50:          43 Image 47
+              51:   40(ivec4) ImageFetch 50 49
+                              Store 42(r02) 51
+              57:      8(ptr) AccessChain 54(psout) 22
+                              Store 57 56
+              60:     59(ptr) AccessChain 54(psout) 58
+                              Store 60 55
+              63:      8(ptr) AccessChain 54(psout) 22
+              64:    7(fvec4) Load 63
+                              Store 62(Color) 64
+              67:     59(ptr) AccessChain 54(psout) 58
+              68:    6(float) Load 67
+                              Store 66(Depth) 68
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out
index 2110e6f4e..8d7112963 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -2,91 +2,148 @@ hlsl.load.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:48  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
 0:52      textureFetchOffset (global 4-component vector of float)
 0:52        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:52        vector swizzle (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52        direct index (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
-0:52        'o1' (uniform int)
+0:52        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:52          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52          Constant:
+0:52            4 (const uint)
 0:53      textureFetchOffset (global 4-component vector of int)
 0:53        'g_tTex1di4' (uniform itexture1D)
 0:53        vector swizzle (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53        direct index (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
-0:53        'o1' (uniform int)
+0:53        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:53          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53          Constant:
+0:53            4 (const uint)
 0:54      textureFetchOffset (global 4-component vector of uint)
 0:54        'g_tTex1du4' (uniform utexture1D)
 0:54        vector swizzle (temp int)
-0:54          'c2' (uniform 2-component vector of int)
+0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              1 (const uint)
 0:54          Sequence
 0:54            Constant:
 0:54              0 (const int)
 0:54        direct index (temp int)
-0:54          'c2' (uniform 2-component vector of int)
+0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              1 (const uint)
 0:54          Constant:
 0:54            1 (const int)
-0:54        'o1' (uniform int)
+0:54        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54          Constant:
+0:54            4 (const uint)
 0:57      textureFetchOffset (global 4-component vector of float)
 0:57        'g_tTex2df4' (uniform texture2D)
 0:57        vector swizzle (temp 2-component vector of int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
 0:57            Constant:
 0:57              1 (const int)
 0:57        direct index (temp int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
-0:57        'o2' (uniform 2-component vector of int)
+0:57        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57          Constant:
+0:57            5 (const uint)
 0:58      textureFetchOffset (global 4-component vector of int)
 0:58        'g_tTex2di4' (uniform itexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
 0:58            Constant:
 0:58              1 (const int)
 0:58        direct index (temp int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
-0:58        'o2' (uniform 2-component vector of int)
+0:58        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:58          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58          Constant:
+0:58            5 (const uint)
 0:59      textureFetchOffset (global 4-component vector of uint)
 0:59        'g_tTex2du4' (uniform utexture2D)
 0:59        vector swizzle (temp 2-component vector of int)
-0:59          'c3' (uniform 3-component vector of int)
+0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              2 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
 0:59            Constant:
 0:59              1 (const int)
 0:59        direct index (temp int)
-0:59          'c3' (uniform 3-component vector of int)
+0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              2 (const uint)
 0:59          Constant:
 0:59            2 (const int)
-0:59        'o2' (uniform 2-component vector of int)
+0:59        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:59          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59          Constant:
+0:59            5 (const uint)
 0:62      textureFetchOffset (global 4-component vector of float)
 0:62        'g_tTex3df4' (uniform texture3D)
 0:62        vector swizzle (temp 3-component vector of int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Sequence
 0:62            Constant:
 0:62              0 (const int)
@@ -95,14 +152,23 @@ gl_FragCoord origin is upper left
 0:62            Constant:
 0:62              2 (const int)
 0:62        direct index (temp int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
-0:62        'o3' (uniform 3-component vector of int)
+0:62        o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int)
+0:62          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62          Constant:
+0:62            6 (const uint)
 0:63      textureFetchOffset (global 4-component vector of int)
 0:63        'g_tTex3di4' (uniform itexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Sequence
 0:63            Constant:
 0:63              0 (const int)
@@ -111,14 +177,23 @@ gl_FragCoord origin is upper left
 0:63            Constant:
 0:63              2 (const int)
 0:63        direct index (temp int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Constant:
 0:63            3 (const int)
-0:63        'o3' (uniform 3-component vector of int)
+0:63        o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int)
+0:63          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63          Constant:
+0:63            6 (const uint)
 0:64      textureFetchOffset (global 4-component vector of uint)
 0:64        'g_tTex3du4' (uniform utexture3D)
 0:64        vector swizzle (temp 3-component vector of int)
-0:64          'c4' (uniform 4-component vector of int)
+0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:64            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64            Constant:
+0:64              3 (const uint)
 0:64          Sequence
 0:64            Constant:
 0:64              0 (const int)
@@ -127,10 +202,16 @@ gl_FragCoord origin is upper left
 0:64            Constant:
 0:64              2 (const int)
 0:64        direct index (temp int)
-0:64          'c4' (uniform 4-component vector of int)
+0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:64            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64            Constant:
+0:64              3 (const uint)
 0:64          Constant:
 0:64            3 (const int)
-0:64        'o3' (uniform 3-component vector of int)
+0:64        o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int)
+0:64          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64          Constant:
+0:64            6 (const uint)
 0:72      move second child to first child (temp 4-component vector of float)
 0:72        Color: direct index for structure (temp 4-component vector of float)
 0:72          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
@@ -186,16 +267,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -204,91 +278,148 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:48  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
 0:52      textureFetchOffset (global 4-component vector of float)
 0:52        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:52        vector swizzle (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52        direct index (temp int)
-0:52          'c2' (uniform 2-component vector of int)
+0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
-0:52        'o1' (uniform int)
+0:52        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:52          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52          Constant:
+0:52            4 (const uint)
 0:53      textureFetchOffset (global 4-component vector of int)
 0:53        'g_tTex1di4' (uniform itexture1D)
 0:53        vector swizzle (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53        direct index (temp int)
-0:53          'c2' (uniform 2-component vector of int)
+0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
-0:53        'o1' (uniform int)
+0:53        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:53          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53          Constant:
+0:53            4 (const uint)
 0:54      textureFetchOffset (global 4-component vector of uint)
 0:54        'g_tTex1du4' (uniform utexture1D)
 0:54        vector swizzle (temp int)
-0:54          'c2' (uniform 2-component vector of int)
+0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              1 (const uint)
 0:54          Sequence
 0:54            Constant:
 0:54              0 (const int)
 0:54        direct index (temp int)
-0:54          'c2' (uniform 2-component vector of int)
+0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              1 (const uint)
 0:54          Constant:
 0:54            1 (const int)
-0:54        'o1' (uniform int)
+0:54        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54          Constant:
+0:54            4 (const uint)
 0:57      textureFetchOffset (global 4-component vector of float)
 0:57        'g_tTex2df4' (uniform texture2D)
 0:57        vector swizzle (temp 2-component vector of int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
 0:57            Constant:
 0:57              1 (const int)
 0:57        direct index (temp int)
-0:57          'c3' (uniform 3-component vector of int)
+0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
-0:57        'o2' (uniform 2-component vector of int)
+0:57        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57          Constant:
+0:57            5 (const uint)
 0:58      textureFetchOffset (global 4-component vector of int)
 0:58        'g_tTex2di4' (uniform itexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
 0:58            Constant:
 0:58              1 (const int)
 0:58        direct index (temp int)
-0:58          'c3' (uniform 3-component vector of int)
+0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
-0:58        'o2' (uniform 2-component vector of int)
+0:58        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:58          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58          Constant:
+0:58            5 (const uint)
 0:59      textureFetchOffset (global 4-component vector of uint)
 0:59        'g_tTex2du4' (uniform utexture2D)
 0:59        vector swizzle (temp 2-component vector of int)
-0:59          'c3' (uniform 3-component vector of int)
+0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              2 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
 0:59            Constant:
 0:59              1 (const int)
 0:59        direct index (temp int)
-0:59          'c3' (uniform 3-component vector of int)
+0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              2 (const uint)
 0:59          Constant:
 0:59            2 (const int)
-0:59        'o2' (uniform 2-component vector of int)
+0:59        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:59          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59          Constant:
+0:59            5 (const uint)
 0:62      textureFetchOffset (global 4-component vector of float)
 0:62        'g_tTex3df4' (uniform texture3D)
 0:62        vector swizzle (temp 3-component vector of int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Sequence
 0:62            Constant:
 0:62              0 (const int)
@@ -297,14 +428,23 @@ gl_FragCoord origin is upper left
 0:62            Constant:
 0:62              2 (const int)
 0:62        direct index (temp int)
-0:62          'c4' (uniform 4-component vector of int)
+0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:62            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62            Constant:
+0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
-0:62        'o3' (uniform 3-component vector of int)
+0:62        o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int)
+0:62          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62          Constant:
+0:62            6 (const uint)
 0:63      textureFetchOffset (global 4-component vector of int)
 0:63        'g_tTex3di4' (uniform itexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Sequence
 0:63            Constant:
 0:63              0 (const int)
@@ -313,14 +453,23 @@ gl_FragCoord origin is upper left
 0:63            Constant:
 0:63              2 (const int)
 0:63        direct index (temp int)
-0:63          'c4' (uniform 4-component vector of int)
+0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:63            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63            Constant:
+0:63              3 (const uint)
 0:63          Constant:
 0:63            3 (const int)
-0:63        'o3' (uniform 3-component vector of int)
+0:63        o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int)
+0:63          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63          Constant:
+0:63            6 (const uint)
 0:64      textureFetchOffset (global 4-component vector of uint)
 0:64        'g_tTex3du4' (uniform utexture3D)
 0:64        vector swizzle (temp 3-component vector of int)
-0:64          'c4' (uniform 4-component vector of int)
+0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:64            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64            Constant:
+0:64              3 (const uint)
 0:64          Sequence
 0:64            Constant:
 0:64              0 (const int)
@@ -329,10 +478,16 @@ gl_FragCoord origin is upper left
 0:64            Constant:
 0:64              2 (const int)
 0:64        direct index (temp int)
-0:64          'c4' (uniform 4-component vector of int)
+0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:64            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64            Constant:
+0:64              3 (const uint)
 0:64          Constant:
 0:64            3 (const int)
-0:64        'o3' (uniform 3-component vector of int)
+0:64        o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int)
+0:64          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:64          Constant:
+0:64            6 (const uint)
 0:72      move second child to first child (temp 4-component vector of float)
 0:72        Color: direct index for structure (temp 4-component vector of float)
 0:72          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
@@ -388,20 +543,13 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 179
+// Id's are bound by 194
 
                               Capability Shader
                               Capability ImageGatherExtended
@@ -409,71 +557,83 @@ gl_FragCoord origin is upper left
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 130 134
+                              EntryPoint Fragment 4  "main" 147 151
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "g_tTex1df4"
-                              Name 14  "c2"
-                              Name 23  "o1"
-                              Name 29  "g_tTex1di4"
-                              Name 40  "g_tTex1du4"
-                              Name 51  "g_tTex2df4"
-                              Name 55  "c3"
-                              Name 61  "o2"
-                              Name 66  "g_tTex2di4"
-                              Name 76  "g_tTex2du4"
-                              Name 86  "g_tTex3df4"
-                              Name 89  "c4"
-                              Name 95  "o3"
-                              Name 100  "g_tTex3di4"
-                              Name 110  "g_tTex3du4"
-                              Name 118  "PS_OUTPUT"
-                              MemberName 118(PS_OUTPUT) 0  "Color"
-                              MemberName 118(PS_OUTPUT) 1  "Depth"
-                              Name 120  "psout"
-                              Name 130  "Color"
-                              Name 134  "Depth"
-                              Name 140  "g_sSamp"
-                              Name 143  "g_tTexcdf4"
-                              Name 146  "g_tTexcdi4"
-                              Name 149  "g_tTexcdu4"
-                              Name 152  "g_tTex1df4a"
-                              Name 155  "g_tTex1di4a"
-                              Name 158  "g_tTex1du4a"
-                              Name 161  "g_tTex2df4a"
-                              Name 164  "g_tTex2di4a"
-                              Name 167  "g_tTex2du4a"
-                              Name 170  "g_tTexcdf4a"
-                              Name 173  "g_tTexcdi4a"
-                              Name 176  "g_tTexcdu4a"
-                              Name 177  "c1"
-                              Name 178  "o4"
+                              Name 15  "$Global"
+                              MemberName 15($Global) 0  "c1"
+                              MemberName 15($Global) 1  "c2"
+                              MemberName 15($Global) 2  "c3"
+                              MemberName 15($Global) 3  "c4"
+                              MemberName 15($Global) 4  "o1"
+                              MemberName 15($Global) 5  "o2"
+                              MemberName 15($Global) 6  "o3"
+                              MemberName 15($Global) 7  "o4"
+                              Name 17  ""
+                              Name 34  "g_tTex1di4"
+                              Name 45  "g_tTex1du4"
+                              Name 57  "g_tTex2df4"
+                              Name 74  "g_tTex2di4"
+                              Name 86  "g_tTex2du4"
+                              Name 98  "g_tTex3df4"
+                              Name 114  "g_tTex3di4"
+                              Name 126  "g_tTex3du4"
+                              Name 136  "PS_OUTPUT"
+                              MemberName 136(PS_OUTPUT) 0  "Color"
+                              MemberName 136(PS_OUTPUT) 1  "Depth"
+                              Name 138  "psout"
+                              Name 147  "Color"
+                              Name 151  "Depth"
+                              Name 157  "g_sSamp"
+                              Name 160  "g_tTexcdf4"
+                              Name 163  "g_tTexcdi4"
+                              Name 166  "g_tTexcdu4"
+                              Name 169  "g_tTex1df4a"
+                              Name 172  "g_tTex1di4a"
+                              Name 175  "g_tTex1du4a"
+                              Name 178  "g_tTex2df4a"
+                              Name 181  "g_tTex2di4a"
+                              Name 184  "g_tTex2du4a"
+                              Name 187  "g_tTexcdf4a"
+                              Name 190  "g_tTexcdi4a"
+                              Name 193  "g_tTexcdu4a"
                               Decorate 9(g_tTex1df4) DescriptorSet 0
                               Decorate 9(g_tTex1df4) Binding 0
-                              Decorate 29(g_tTex1di4) DescriptorSet 0
-                              Decorate 40(g_tTex1du4) DescriptorSet 0
-                              Decorate 51(g_tTex2df4) DescriptorSet 0
-                              Decorate 66(g_tTex2di4) DescriptorSet 0
-                              Decorate 76(g_tTex2du4) DescriptorSet 0
-                              Decorate 86(g_tTex3df4) DescriptorSet 0
-                              Decorate 100(g_tTex3di4) DescriptorSet 0
-                              Decorate 110(g_tTex3du4) DescriptorSet 0
-                              Decorate 130(Color) Location 0
-                              Decorate 134(Depth) BuiltIn FragDepth
-                              Decorate 140(g_sSamp) DescriptorSet 0
-                              Decorate 140(g_sSamp) Binding 0
-                              Decorate 143(g_tTexcdf4) DescriptorSet 0
-                              Decorate 146(g_tTexcdi4) DescriptorSet 0
-                              Decorate 149(g_tTexcdu4) DescriptorSet 0
-                              Decorate 152(g_tTex1df4a) DescriptorSet 0
-                              Decorate 155(g_tTex1di4a) DescriptorSet 0
-                              Decorate 158(g_tTex1du4a) DescriptorSet 0
-                              Decorate 161(g_tTex2df4a) DescriptorSet 0
-                              Decorate 164(g_tTex2di4a) DescriptorSet 0
-                              Decorate 167(g_tTex2du4a) DescriptorSet 0
-                              Decorate 170(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 173(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 176(g_tTexcdu4a) DescriptorSet 0
+                              MemberDecorate 15($Global) 0 Offset 0
+                              MemberDecorate 15($Global) 1 Offset 8
+                              MemberDecorate 15($Global) 2 Offset 16
+                              MemberDecorate 15($Global) 3 Offset 32
+                              MemberDecorate 15($Global) 4 Offset 48
+                              MemberDecorate 15($Global) 5 Offset 56
+                              MemberDecorate 15($Global) 6 Offset 64
+                              MemberDecorate 15($Global) 7 Offset 80
+                              Decorate 15($Global) Block
+                              Decorate 17 DescriptorSet 0
+                              Decorate 34(g_tTex1di4) DescriptorSet 0
+                              Decorate 45(g_tTex1du4) DescriptorSet 0
+                              Decorate 57(g_tTex2df4) DescriptorSet 0
+                              Decorate 74(g_tTex2di4) DescriptorSet 0
+                              Decorate 86(g_tTex2du4) DescriptorSet 0
+                              Decorate 98(g_tTex3df4) DescriptorSet 0
+                              Decorate 114(g_tTex3di4) DescriptorSet 0
+                              Decorate 126(g_tTex3du4) DescriptorSet 0
+                              Decorate 147(Color) Location 0
+                              Decorate 151(Depth) BuiltIn FragDepth
+                              Decorate 157(g_sSamp) DescriptorSet 0
+                              Decorate 157(g_sSamp) Binding 0
+                              Decorate 160(g_tTexcdf4) DescriptorSet 0
+                              Decorate 163(g_tTexcdi4) DescriptorSet 0
+                              Decorate 166(g_tTexcdu4) DescriptorSet 0
+                              Decorate 169(g_tTex1df4a) DescriptorSet 0
+                              Decorate 172(g_tTex1di4a) DescriptorSet 0
+                              Decorate 175(g_tTex1du4a) DescriptorSet 0
+                              Decorate 178(g_tTex2df4a) DescriptorSet 0
+                              Decorate 181(g_tTex2di4a) DescriptorSet 0
+                              Decorate 184(g_tTex2du4a) DescriptorSet 0
+                              Decorate 187(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 190(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 193(g_tTexcdu4a) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -482,177 +642,192 @@ gl_FragCoord origin is upper left
    9(g_tTex1df4):      8(ptr) Variable UniformConstant
               11:             TypeInt 32 1
               12:             TypeVector 11(int) 2
-              13:             TypePointer UniformConstant 12(ivec2)
-          14(c2):     13(ptr) Variable UniformConstant
-              15:             TypeInt 32 0
-              16:     15(int) Constant 0
-              17:             TypePointer UniformConstant 11(int)
-              20:     15(int) Constant 1
-          23(o1):     17(ptr) Variable UniformConstant
-              25:             TypeVector 6(float) 4
-              27:             TypeImage 11(int) 1D sampled format:Unknown
-              28:             TypePointer UniformConstant 27
-  29(g_tTex1di4):     28(ptr) Variable UniformConstant
-              36:             TypeVector 11(int) 4
-              38:             TypeImage 15(int) 1D sampled format:Unknown
-              39:             TypePointer UniformConstant 38
-  40(g_tTex1du4):     39(ptr) Variable UniformConstant
-              47:             TypeVector 15(int) 4
-              49:             TypeImage 6(float) 2D sampled format:Unknown
-              50:             TypePointer UniformConstant 49
-  51(g_tTex2df4):     50(ptr) Variable UniformConstant
-              53:             TypeVector 11(int) 3
-              54:             TypePointer UniformConstant 53(ivec3)
-          55(c3):     54(ptr) Variable UniformConstant
-              58:     15(int) Constant 2
-          61(o2):     13(ptr) Variable UniformConstant
-              64:             TypeImage 11(int) 2D sampled format:Unknown
-              65:             TypePointer UniformConstant 64
-  66(g_tTex2di4):     65(ptr) Variable UniformConstant
-              74:             TypeImage 15(int) 2D sampled format:Unknown
-              75:             TypePointer UniformConstant 74
-  76(g_tTex2du4):     75(ptr) Variable UniformConstant
-              84:             TypeImage 6(float) 3D sampled format:Unknown
+              13:             TypeVector 11(int) 3
+              14:             TypeVector 11(int) 4
+     15($Global):             TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4)
+              16:             TypePointer Uniform 15($Global)
+              17:     16(ptr) Variable Uniform
+              18:     11(int) Constant 1
+              19:             TypeInt 32 0
+              20:     19(int) Constant 0
+              21:             TypePointer Uniform 11(int)
+              24:     19(int) Constant 1
+              27:     11(int) Constant 4
+              30:             TypeVector 6(float) 4
+              32:             TypeImage 11(int) 1D sampled format:Unknown
+              33:             TypePointer UniformConstant 32
+  34(g_tTex1di4):     33(ptr) Variable UniformConstant
+              43:             TypeImage 19(int) 1D sampled format:Unknown
+              44:             TypePointer UniformConstant 43
+  45(g_tTex1du4):     44(ptr) Variable UniformConstant
+              53:             TypeVector 19(int) 4
+              55:             TypeImage 6(float) 2D sampled format:Unknown
+              56:             TypePointer UniformConstant 55
+  57(g_tTex2df4):     56(ptr) Variable UniformConstant
+              59:     11(int) Constant 2
+              60:             TypePointer Uniform 13(ivec3)
+              64:     19(int) Constant 2
+              67:     11(int) Constant 5
+              68:             TypePointer Uniform 12(ivec2)
+              72:             TypeImage 11(int) 2D sampled format:Unknown
+              73:             TypePointer UniformConstant 72
+  74(g_tTex2di4):     73(ptr) Variable UniformConstant
+              84:             TypeImage 19(int) 2D sampled format:Unknown
               85:             TypePointer UniformConstant 84
-  86(g_tTex3df4):     85(ptr) Variable UniformConstant
-              88:             TypePointer UniformConstant 36(ivec4)
-          89(c4):     88(ptr) Variable UniformConstant
-              92:     15(int) Constant 3
-          95(o3):     54(ptr) Variable UniformConstant
-              98:             TypeImage 11(int) 3D sampled format:Unknown
-              99:             TypePointer UniformConstant 98
- 100(g_tTex3di4):     99(ptr) Variable UniformConstant
-             108:             TypeImage 15(int) 3D sampled format:Unknown
-             109:             TypePointer UniformConstant 108
- 110(g_tTex3du4):    109(ptr) Variable UniformConstant
-  118(PS_OUTPUT):             TypeStruct 25(fvec4) 6(float)
-             119:             TypePointer Function 118(PS_OUTPUT)
-             121:     11(int) Constant 0
-             122:    6(float) Constant 1065353216
-             123:   25(fvec4) ConstantComposite 122 122 122 122
-             124:             TypePointer Function 25(fvec4)
-             126:     11(int) Constant 1
-             127:             TypePointer Function 6(float)
-             129:             TypePointer Output 25(fvec4)
-      130(Color):    129(ptr) Variable Output
-             133:             TypePointer Output 6(float)
-      134(Depth):    133(ptr) Variable Output
-             138:             TypeSampler
-             139:             TypePointer UniformConstant 138
-    140(g_sSamp):    139(ptr) Variable UniformConstant
-             141:             TypeImage 6(float) Cube sampled format:Unknown
-             142:             TypePointer UniformConstant 141
- 143(g_tTexcdf4):    142(ptr) Variable UniformConstant
-             144:             TypeImage 11(int) Cube sampled format:Unknown
-             145:             TypePointer UniformConstant 144
- 146(g_tTexcdi4):    145(ptr) Variable UniformConstant
-             147:             TypeImage 15(int) Cube sampled format:Unknown
-             148:             TypePointer UniformConstant 147
- 149(g_tTexcdu4):    148(ptr) Variable UniformConstant
-             150:             TypeImage 6(float) 1D array sampled format:Unknown
-             151:             TypePointer UniformConstant 150
-152(g_tTex1df4a):    151(ptr) Variable UniformConstant
-             153:             TypeImage 11(int) 1D array sampled format:Unknown
-             154:             TypePointer UniformConstant 153
-155(g_tTex1di4a):    154(ptr) Variable UniformConstant
-             156:             TypeImage 15(int) 1D array sampled format:Unknown
-             157:             TypePointer UniformConstant 156
-158(g_tTex1du4a):    157(ptr) Variable UniformConstant
-             159:             TypeImage 6(float) 2D array sampled format:Unknown
-             160:             TypePointer UniformConstant 159
-161(g_tTex2df4a):    160(ptr) Variable UniformConstant
-             162:             TypeImage 11(int) 2D array sampled format:Unknown
-             163:             TypePointer UniformConstant 162
-164(g_tTex2di4a):    163(ptr) Variable UniformConstant
-             165:             TypeImage 15(int) 2D array sampled format:Unknown
-             166:             TypePointer UniformConstant 165
-167(g_tTex2du4a):    166(ptr) Variable UniformConstant
-             168:             TypeImage 6(float) Cube array sampled format:Unknown
-             169:             TypePointer UniformConstant 168
-170(g_tTexcdf4a):    169(ptr) Variable UniformConstant
-             171:             TypeImage 11(int) Cube array sampled format:Unknown
-             172:             TypePointer UniformConstant 171
-173(g_tTexcdi4a):    172(ptr) Variable UniformConstant
-             174:             TypeImage 15(int) Cube array sampled format:Unknown
-             175:             TypePointer UniformConstant 174
-176(g_tTexcdu4a):    175(ptr) Variable UniformConstant
-         177(c1):     17(ptr) Variable UniformConstant
-         178(o4):     88(ptr) Variable UniformConstant
+  86(g_tTex2du4):     85(ptr) Variable UniformConstant
+              96:             TypeImage 6(float) 3D sampled format:Unknown
+              97:             TypePointer UniformConstant 96
+  98(g_tTex3df4):     97(ptr) Variable UniformConstant
+             100:     11(int) Constant 3
+             101:             TypePointer Uniform 14(ivec4)
+             105:     19(int) Constant 3
+             108:     11(int) Constant 6
+             112:             TypeImage 11(int) 3D sampled format:Unknown
+             113:             TypePointer UniformConstant 112
+ 114(g_tTex3di4):    113(ptr) Variable UniformConstant
+             124:             TypeImage 19(int) 3D sampled format:Unknown
+             125:             TypePointer UniformConstant 124
+ 126(g_tTex3du4):    125(ptr) Variable UniformConstant
+  136(PS_OUTPUT):             TypeStruct 30(fvec4) 6(float)
+             137:             TypePointer Function 136(PS_OUTPUT)
+             139:     11(int) Constant 0
+             140:    6(float) Constant 1065353216
+             141:   30(fvec4) ConstantComposite 140 140 140 140
+             142:             TypePointer Function 30(fvec4)
+             144:             TypePointer Function 6(float)
+             146:             TypePointer Output 30(fvec4)
+      147(Color):    146(ptr) Variable Output
+             150:             TypePointer Output 6(float)
+      151(Depth):    150(ptr) Variable Output
+             155:             TypeSampler
+             156:             TypePointer UniformConstant 155
+    157(g_sSamp):    156(ptr) Variable UniformConstant
+             158:             TypeImage 6(float) Cube sampled format:Unknown
+             159:             TypePointer UniformConstant 158
+ 160(g_tTexcdf4):    159(ptr) Variable UniformConstant
+             161:             TypeImage 11(int) Cube sampled format:Unknown
+             162:             TypePointer UniformConstant 161
+ 163(g_tTexcdi4):    162(ptr) Variable UniformConstant
+             164:             TypeImage 19(int) Cube sampled format:Unknown
+             165:             TypePointer UniformConstant 164
+ 166(g_tTexcdu4):    165(ptr) Variable UniformConstant
+             167:             TypeImage 6(float) 1D array sampled format:Unknown
+             168:             TypePointer UniformConstant 167
+169(g_tTex1df4a):    168(ptr) Variable UniformConstant
+             170:             TypeImage 11(int) 1D array sampled format:Unknown
+             171:             TypePointer UniformConstant 170
+172(g_tTex1di4a):    171(ptr) Variable UniformConstant
+             173:             TypeImage 19(int) 1D array sampled format:Unknown
+             174:             TypePointer UniformConstant 173
+175(g_tTex1du4a):    174(ptr) Variable UniformConstant
+             176:             TypeImage 6(float) 2D array sampled format:Unknown
+             177:             TypePointer UniformConstant 176
+178(g_tTex2df4a):    177(ptr) Variable UniformConstant
+             179:             TypeImage 11(int) 2D array sampled format:Unknown
+             180:             TypePointer UniformConstant 179
+181(g_tTex2di4a):    180(ptr) Variable UniformConstant
+             182:             TypeImage 19(int) 2D array sampled format:Unknown
+             183:             TypePointer UniformConstant 182
+184(g_tTex2du4a):    183(ptr) Variable UniformConstant
+             185:             TypeImage 6(float) Cube array sampled format:Unknown
+             186:             TypePointer UniformConstant 185
+187(g_tTexcdf4a):    186(ptr) Variable UniformConstant
+             188:             TypeImage 11(int) Cube array sampled format:Unknown
+             189:             TypePointer UniformConstant 188
+190(g_tTexcdi4a):    189(ptr) Variable UniformConstant
+             191:             TypeImage 19(int) Cube array sampled format:Unknown
+             192:             TypePointer UniformConstant 191
+193(g_tTexcdu4a):    192(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-      120(psout):    119(ptr) Variable Function
+      138(psout):    137(ptr) Variable Function
               10:           7 Load 9(g_tTex1df4)
-              18:     17(ptr) AccessChain 14(c2) 16
-              19:     11(int) Load 18
-              21:     17(ptr) AccessChain 14(c2) 20
-              22:     11(int) Load 21
-              24:     11(int) Load 23(o1)
-              26:   25(fvec4) ImageFetch 10 19 Lod Offset 22 24
-              30:          27 Load 29(g_tTex1di4)
-              31:     17(ptr) AccessChain 14(c2) 16
-              32:     11(int) Load 31
-              33:     17(ptr) AccessChain 14(c2) 20
-              34:     11(int) Load 33
-              35:     11(int) Load 23(o1)
-              37:   36(ivec4) ImageFetch 30 32 Lod Offset 34 35
-              41:          38 Load 40(g_tTex1du4)
-              42:     17(ptr) AccessChain 14(c2) 16
-              43:     11(int) Load 42
-              44:     17(ptr) AccessChain 14(c2) 20
-              45:     11(int) Load 44
-              46:     11(int) Load 23(o1)
-              48:   47(ivec4) ImageFetch 41 43 Lod Offset 45 46
-              52:          49 Load 51(g_tTex2df4)
-              56:   53(ivec3) Load 55(c3)
-              57:   12(ivec2) VectorShuffle 56 56 0 1
-              59:     17(ptr) AccessChain 55(c3) 58
-              60:     11(int) Load 59
-              62:   12(ivec2) Load 61(o2)
-              63:   25(fvec4) ImageFetch 52 57 Lod Offset 60 62
-              67:          64 Load 66(g_tTex2di4)
-              68:   53(ivec3) Load 55(c3)
-              69:   12(ivec2) VectorShuffle 68 68 0 1
-              70:     17(ptr) AccessChain 55(c3) 58
-              71:     11(int) Load 70
-              72:   12(ivec2) Load 61(o2)
-              73:   36(ivec4) ImageFetch 67 69 Lod Offset 71 72
-              77:          74 Load 76(g_tTex2du4)
-              78:   53(ivec3) Load 55(c3)
-              79:   12(ivec2) VectorShuffle 78 78 0 1
-              80:     17(ptr) AccessChain 55(c3) 58
-              81:     11(int) Load 80
-              82:   12(ivec2) Load 61(o2)
-              83:   47(ivec4) ImageFetch 77 79 Lod Offset 81 82
-              87:          84 Load 86(g_tTex3df4)
-              90:   36(ivec4) Load 89(c4)
-              91:   53(ivec3) VectorShuffle 90 90 0 1 2
-              93:     17(ptr) AccessChain 89(c4) 92
-              94:     11(int) Load 93
-              96:   53(ivec3) Load 95(o3)
-              97:   25(fvec4) ImageFetch 87 91 Lod Offset 94 96
-             101:          98 Load 100(g_tTex3di4)
-             102:   36(ivec4) Load 89(c4)
-             103:   53(ivec3) VectorShuffle 102 102 0 1 2
-             104:     17(ptr) AccessChain 89(c4) 92
-             105:     11(int) Load 104
-             106:   53(ivec3) Load 95(o3)
-             107:   36(ivec4) ImageFetch 101 103 Lod Offset 105 106
-             111:         108 Load 110(g_tTex3du4)
-             112:   36(ivec4) Load 89(c4)
-             113:   53(ivec3) VectorShuffle 112 112 0 1 2
-             114:     17(ptr) AccessChain 89(c4) 92
-             115:     11(int) Load 114
-             116:   53(ivec3) Load 95(o3)
-             117:   47(ivec4) ImageFetch 111 113 Lod Offset 115 116
-             125:    124(ptr) AccessChain 120(psout) 121
-                              Store 125 123
-             128:    127(ptr) AccessChain 120(psout) 126
-                              Store 128 122
-             131:    124(ptr) AccessChain 120(psout) 121
-             132:   25(fvec4) Load 131
-                              Store 130(Color) 132
-             135:    127(ptr) AccessChain 120(psout) 126
-             136:    6(float) Load 135
-                              Store 134(Depth) 136
+              22:     21(ptr) AccessChain 17 18 20
+              23:     11(int) Load 22
+              25:     21(ptr) AccessChain 17 18 24
+              26:     11(int) Load 25
+              28:     21(ptr) AccessChain 17 27
+              29:     11(int) Load 28
+              31:   30(fvec4) ImageFetch 10 23 Lod Offset 26 29
+              35:          32 Load 34(g_tTex1di4)
+              36:     21(ptr) AccessChain 17 18 20
+              37:     11(int) Load 36
+              38:     21(ptr) AccessChain 17 18 24
+              39:     11(int) Load 38
+              40:     21(ptr) AccessChain 17 27
+              41:     11(int) Load 40
+              42:   14(ivec4) ImageFetch 35 37 Lod Offset 39 41
+              46:          43 Load 45(g_tTex1du4)
+              47:     21(ptr) AccessChain 17 18 20
+              48:     11(int) Load 47
+              49:     21(ptr) AccessChain 17 18 24
+              50:     11(int) Load 49
+              51:     21(ptr) AccessChain 17 27
+              52:     11(int) Load 51
+              54:   53(ivec4) ImageFetch 46 48 Lod Offset 50 52
+              58:          55 Load 57(g_tTex2df4)
+              61:     60(ptr) AccessChain 17 59
+              62:   13(ivec3) Load 61
+              63:   12(ivec2) VectorShuffle 62 62 0 1
+              65:     21(ptr) AccessChain 17 59 64
+              66:     11(int) Load 65
+              69:     68(ptr) AccessChain 17 67
+              70:   12(ivec2) Load 69
+              71:   30(fvec4) ImageFetch 58 63 Lod Offset 66 70
+              75:          72 Load 74(g_tTex2di4)
+              76:     60(ptr) AccessChain 17 59
+              77:   13(ivec3) Load 76
+              78:   12(ivec2) VectorShuffle 77 77 0 1
+              79:     21(ptr) AccessChain 17 59 64
+              80:     11(int) Load 79
+              81:     68(ptr) AccessChain 17 67
+              82:   12(ivec2) Load 81
+              83:   14(ivec4) ImageFetch 75 78 Lod Offset 80 82
+              87:          84 Load 86(g_tTex2du4)
+              88:     60(ptr) AccessChain 17 59
+              89:   13(ivec3) Load 88
+              90:   12(ivec2) VectorShuffle 89 89 0 1
+              91:     21(ptr) AccessChain 17 59 64
+              92:     11(int) Load 91
+              93:     68(ptr) AccessChain 17 67
+              94:   12(ivec2) Load 93
+              95:   53(ivec4) ImageFetch 87 90 Lod Offset 92 94
+              99:          96 Load 98(g_tTex3df4)
+             102:    101(ptr) AccessChain 17 100
+             103:   14(ivec4) Load 102
+             104:   13(ivec3) VectorShuffle 103 103 0 1 2
+             106:     21(ptr) AccessChain 17 100 105
+             107:     11(int) Load 106
+             109:     60(ptr) AccessChain 17 108
+             110:   13(ivec3) Load 109
+             111:   30(fvec4) ImageFetch 99 104 Lod Offset 107 110
+             115:         112 Load 114(g_tTex3di4)
+             116:    101(ptr) AccessChain 17 100
+             117:   14(ivec4) Load 116
+             118:   13(ivec3) VectorShuffle 117 117 0 1 2
+             119:     21(ptr) AccessChain 17 100 105
+             120:     11(int) Load 119
+             121:     60(ptr) AccessChain 17 108
+             122:   13(ivec3) Load 121
+             123:   14(ivec4) ImageFetch 115 118 Lod Offset 120 122
+             127:         124 Load 126(g_tTex3du4)
+             128:    101(ptr) AccessChain 17 100
+             129:   14(ivec4) Load 128
+             130:   13(ivec3) VectorShuffle 129 129 0 1 2
+             131:     21(ptr) AccessChain 17 100 105
+             132:     11(int) Load 131
+             133:     60(ptr) AccessChain 17 108
+             134:   13(ivec3) Load 133
+             135:   53(ivec4) ImageFetch 127 130 Lod Offset 132 134
+             143:    142(ptr) AccessChain 138(psout) 139
+                              Store 143 141
+             145:    144(ptr) AccessChain 138(psout) 18
+                              Store 145 140
+             148:    142(ptr) AccessChain 138(psout) 139
+             149:   30(fvec4) Load 148
+                              Store 147(Color) 149
+             152:    144(ptr) AccessChain 138(psout) 18
+             153:    6(float) Load 152
+                              Store 151(Depth) 153
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index d5f667165..665fc47a6 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -2,55 +2,85 @@ hlsl.load.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:48  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
 0:52      textureFetchOffset (global 4-component vector of float)
 0:52        'g_tTex1df4a' (uniform texture1DArray)
 0:52        vector swizzle (temp 2-component vector of int)
-0:52          'c3' (uniform 3-component vector of int)
+0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              2 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52            Constant:
 0:52              1 (const int)
 0:52        direct index (temp int)
-0:52          'c3' (uniform 3-component vector of int)
+0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              2 (const uint)
 0:52          Constant:
 0:52            2 (const int)
-0:52        'o1' (uniform int)
+0:52        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:52          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52          Constant:
+0:52            4 (const uint)
 0:53      textureFetchOffset (global 4-component vector of int)
 0:53        'g_tTex1di4a' (uniform itexture1DArray)
 0:53        vector swizzle (temp 2-component vector of int)
-0:53          'c3' (uniform 3-component vector of int)
+0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              2 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53            Constant:
 0:53              1 (const int)
 0:53        direct index (temp int)
-0:53          'c3' (uniform 3-component vector of int)
+0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              2 (const uint)
 0:53          Constant:
 0:53            2 (const int)
-0:53        'o1' (uniform int)
+0:53        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:53          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53          Constant:
+0:53            4 (const uint)
 0:54      textureFetchOffset (global 4-component vector of uint)
 0:54        'g_tTex1du4a' (uniform utexture1DArray)
 0:54        vector swizzle (temp 2-component vector of int)
-0:54          'c3' (uniform 3-component vector of int)
+0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              2 (const uint)
 0:54          Sequence
 0:54            Constant:
 0:54              0 (const int)
 0:54            Constant:
 0:54              1 (const int)
 0:54        direct index (temp int)
-0:54          'c3' (uniform 3-component vector of int)
+0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              2 (const uint)
 0:54          Constant:
 0:54            2 (const int)
-0:54        'o1' (uniform int)
+0:54        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54          Constant:
+0:54            4 (const uint)
 0:57      textureFetchOffset (global 4-component vector of float)
 0:57        'g_tTex2df4a' (uniform texture2DArray)
 0:57        vector swizzle (temp 3-component vector of int)
-0:57          'c4' (uniform 4-component vector of int)
+0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              3 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
@@ -59,14 +89,23 @@ gl_FragCoord origin is upper left
 0:57            Constant:
 0:57              2 (const int)
 0:57        direct index (temp int)
-0:57          'c4' (uniform 4-component vector of int)
+0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              3 (const uint)
 0:57          Constant:
 0:57            3 (const int)
-0:57        'o2' (uniform 2-component vector of int)
+0:57        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57          Constant:
+0:57            5 (const uint)
 0:58      textureFetchOffset (global 4-component vector of int)
 0:58        'g_tTex2di4a' (uniform itexture2DArray)
 0:58        vector swizzle (temp 3-component vector of int)
-0:58          'c4' (uniform 4-component vector of int)
+0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              3 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
@@ -75,14 +114,23 @@ gl_FragCoord origin is upper left
 0:58            Constant:
 0:58              2 (const int)
 0:58        direct index (temp int)
-0:58          'c4' (uniform 4-component vector of int)
+0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              3 (const uint)
 0:58          Constant:
 0:58            3 (const int)
-0:58        'o2' (uniform 2-component vector of int)
+0:58        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:58          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58          Constant:
+0:58            5 (const uint)
 0:59      textureFetchOffset (global 4-component vector of uint)
 0:59        'g_tTex2du4a' (uniform utexture2DArray)
 0:59        vector swizzle (temp 3-component vector of int)
-0:59          'c4' (uniform 4-component vector of int)
+0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              3 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
@@ -91,10 +139,16 @@ gl_FragCoord origin is upper left
 0:59            Constant:
 0:59              2 (const int)
 0:59        direct index (temp int)
-0:59          'c4' (uniform 4-component vector of int)
+0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              3 (const uint)
 0:59          Constant:
 0:59            3 (const int)
-0:59        'o2' (uniform 2-component vector of int)
+0:59        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:59          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59          Constant:
+0:59            5 (const uint)
 0:65      move second child to first child (temp 4-component vector of float)
 0:65        Color: direct index for structure (temp 4-component vector of float)
 0:65          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
@@ -150,16 +204,9 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -168,55 +215,85 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:48  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
 0:52      textureFetchOffset (global 4-component vector of float)
 0:52        'g_tTex1df4a' (uniform texture1DArray)
 0:52        vector swizzle (temp 2-component vector of int)
-0:52          'c3' (uniform 3-component vector of int)
+0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              2 (const uint)
 0:52          Sequence
 0:52            Constant:
 0:52              0 (const int)
 0:52            Constant:
 0:52              1 (const int)
 0:52        direct index (temp int)
-0:52          'c3' (uniform 3-component vector of int)
+0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:52            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52            Constant:
+0:52              2 (const uint)
 0:52          Constant:
 0:52            2 (const int)
-0:52        'o1' (uniform int)
+0:52        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:52          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52          Constant:
+0:52            4 (const uint)
 0:53      textureFetchOffset (global 4-component vector of int)
 0:53        'g_tTex1di4a' (uniform itexture1DArray)
 0:53        vector swizzle (temp 2-component vector of int)
-0:53          'c3' (uniform 3-component vector of int)
+0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              2 (const uint)
 0:53          Sequence
 0:53            Constant:
 0:53              0 (const int)
 0:53            Constant:
 0:53              1 (const int)
 0:53        direct index (temp int)
-0:53          'c3' (uniform 3-component vector of int)
+0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:53            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53            Constant:
+0:53              2 (const uint)
 0:53          Constant:
 0:53            2 (const int)
-0:53        'o1' (uniform int)
+0:53        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:53          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53          Constant:
+0:53            4 (const uint)
 0:54      textureFetchOffset (global 4-component vector of uint)
 0:54        'g_tTex1du4a' (uniform utexture1DArray)
 0:54        vector swizzle (temp 2-component vector of int)
-0:54          'c3' (uniform 3-component vector of int)
+0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              2 (const uint)
 0:54          Sequence
 0:54            Constant:
 0:54              0 (const int)
 0:54            Constant:
 0:54              1 (const int)
 0:54        direct index (temp int)
-0:54          'c3' (uniform 3-component vector of int)
+0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:54            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54            Constant:
+0:54              2 (const uint)
 0:54          Constant:
 0:54            2 (const int)
-0:54        'o1' (uniform int)
+0:54        o1: direct index for structure (layout(offset=48 ) uniform int)
+0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:54          Constant:
+0:54            4 (const uint)
 0:57      textureFetchOffset (global 4-component vector of float)
 0:57        'g_tTex2df4a' (uniform texture2DArray)
 0:57        vector swizzle (temp 3-component vector of int)
-0:57          'c4' (uniform 4-component vector of int)
+0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              3 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
@@ -225,14 +302,23 @@ gl_FragCoord origin is upper left
 0:57            Constant:
 0:57              2 (const int)
 0:57        direct index (temp int)
-0:57          'c4' (uniform 4-component vector of int)
+0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:57            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57            Constant:
+0:57              3 (const uint)
 0:57          Constant:
 0:57            3 (const int)
-0:57        'o2' (uniform 2-component vector of int)
+0:57        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57          Constant:
+0:57            5 (const uint)
 0:58      textureFetchOffset (global 4-component vector of int)
 0:58        'g_tTex2di4a' (uniform itexture2DArray)
 0:58        vector swizzle (temp 3-component vector of int)
-0:58          'c4' (uniform 4-component vector of int)
+0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              3 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
@@ -241,14 +327,23 @@ gl_FragCoord origin is upper left
 0:58            Constant:
 0:58              2 (const int)
 0:58        direct index (temp int)
-0:58          'c4' (uniform 4-component vector of int)
+0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:58            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58            Constant:
+0:58              3 (const uint)
 0:58          Constant:
 0:58            3 (const int)
-0:58        'o2' (uniform 2-component vector of int)
+0:58        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:58          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58          Constant:
+0:58            5 (const uint)
 0:59      textureFetchOffset (global 4-component vector of uint)
 0:59        'g_tTex2du4a' (uniform utexture2DArray)
 0:59        vector swizzle (temp 3-component vector of int)
-0:59          'c4' (uniform 4-component vector of int)
+0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              3 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
@@ -257,10 +352,16 @@ gl_FragCoord origin is upper left
 0:59            Constant:
 0:59              2 (const int)
 0:59        direct index (temp int)
-0:59          'c4' (uniform 4-component vector of int)
+0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:59            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59            Constant:
+0:59              3 (const uint)
 0:59          Constant:
 0:59            3 (const int)
-0:59        'o2' (uniform 2-component vector of int)
+0:59        o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int)
+0:59          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:59          Constant:
+0:59            5 (const uint)
 0:65      move second child to first child (temp 4-component vector of float)
 0:65        Color: direct index for structure (temp 4-component vector of float)
 0:65          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
@@ -316,20 +417,13 @@ gl_FragCoord origin is upper left
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'c1' (uniform int)
-0:?     'c2' (uniform 2-component vector of int)
-0:?     'c3' (uniform 3-component vector of int)
-0:?     'c4' (uniform 4-component vector of int)
-0:?     'o1' (uniform int)
-0:?     'o2' (uniform 2-component vector of int)
-0:?     'o3' (uniform 3-component vector of int)
-0:?     'o4' (uniform 4-component vector of int)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 156
+// Id's are bound by 167
 
                               Capability Shader
                               Capability ImageGatherExtended
@@ -337,71 +431,83 @@ gl_FragCoord origin is upper left
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 96 100
+                              EntryPoint Fragment 4  "main" 111 115
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 9  "g_tTex1df4a"
-                              Name 14  "c3"
-                              Name 23  "o1"
-                              Name 29  "g_tTex1di4a"
-                              Name 40  "g_tTex1du4a"
-                              Name 51  "g_tTex2df4a"
-                              Name 54  "c4"
-                              Name 61  "o2"
-                              Name 66  "g_tTex2di4a"
-                              Name 76  "g_tTex2du4a"
-                              Name 84  "PS_OUTPUT"
-                              MemberName 84(PS_OUTPUT) 0  "Color"
-                              MemberName 84(PS_OUTPUT) 1  "Depth"
-                              Name 86  "psout"
-                              Name 96  "Color"
-                              Name 100  "Depth"
-                              Name 106  "g_sSamp"
-                              Name 109  "g_tTex1df4"
-                              Name 112  "g_tTex1di4"
-                              Name 115  "g_tTex1du4"
-                              Name 118  "g_tTex2df4"
-                              Name 121  "g_tTex2di4"
-                              Name 124  "g_tTex2du4"
-                              Name 127  "g_tTex3df4"
-                              Name 130  "g_tTex3di4"
-                              Name 133  "g_tTex3du4"
-                              Name 136  "g_tTexcdf4"
-                              Name 139  "g_tTexcdi4"
-                              Name 142  "g_tTexcdu4"
-                              Name 145  "g_tTexcdf4a"
-                              Name 148  "g_tTexcdi4a"
-                              Name 151  "g_tTexcdu4a"
-                              Name 152  "c1"
-                              Name 153  "c2"
-                              Name 154  "o3"
-                              Name 155  "o4"
+                              Name 15  "$Global"
+                              MemberName 15($Global) 0  "c1"
+                              MemberName 15($Global) 1  "c2"
+                              MemberName 15($Global) 2  "c3"
+                              MemberName 15($Global) 3  "c4"
+                              MemberName 15($Global) 4  "o1"
+                              MemberName 15($Global) 5  "o2"
+                              MemberName 15($Global) 6  "o3"
+                              MemberName 15($Global) 7  "o4"
+                              Name 17  ""
+                              Name 35  "g_tTex1di4a"
+                              Name 47  "g_tTex1du4a"
+                              Name 60  "g_tTex2df4a"
+                              Name 77  "g_tTex2di4a"
+                              Name 89  "g_tTex2du4a"
+                              Name 99  "PS_OUTPUT"
+                              MemberName 99(PS_OUTPUT) 0  "Color"
+                              MemberName 99(PS_OUTPUT) 1  "Depth"
+                              Name 101  "psout"
+                              Name 111  "Color"
+                              Name 115  "Depth"
+                              Name 121  "g_sSamp"
+                              Name 124  "g_tTex1df4"
+                              Name 127  "g_tTex1di4"
+                              Name 130  "g_tTex1du4"
+                              Name 133  "g_tTex2df4"
+                              Name 136  "g_tTex2di4"
+                              Name 139  "g_tTex2du4"
+                              Name 142  "g_tTex3df4"
+                              Name 145  "g_tTex3di4"
+                              Name 148  "g_tTex3du4"
+                              Name 151  "g_tTexcdf4"
+                              Name 154  "g_tTexcdi4"
+                              Name 157  "g_tTexcdu4"
+                              Name 160  "g_tTexcdf4a"
+                              Name 163  "g_tTexcdi4a"
+                              Name 166  "g_tTexcdu4a"
                               Decorate 9(g_tTex1df4a) DescriptorSet 0
-                              Decorate 29(g_tTex1di4a) DescriptorSet 0
-                              Decorate 40(g_tTex1du4a) DescriptorSet 0
-                              Decorate 51(g_tTex2df4a) DescriptorSet 0
-                              Decorate 66(g_tTex2di4a) DescriptorSet 0
-                              Decorate 76(g_tTex2du4a) DescriptorSet 0
-                              Decorate 96(Color) Location 0
-                              Decorate 100(Depth) BuiltIn FragDepth
-                              Decorate 106(g_sSamp) DescriptorSet 0
-                              Decorate 106(g_sSamp) Binding 0
-                              Decorate 109(g_tTex1df4) DescriptorSet 0
-                              Decorate 109(g_tTex1df4) Binding 0
-                              Decorate 112(g_tTex1di4) DescriptorSet 0
-                              Decorate 115(g_tTex1du4) DescriptorSet 0
-                              Decorate 118(g_tTex2df4) DescriptorSet 0
-                              Decorate 121(g_tTex2di4) DescriptorSet 0
-                              Decorate 124(g_tTex2du4) DescriptorSet 0
-                              Decorate 127(g_tTex3df4) DescriptorSet 0
-                              Decorate 130(g_tTex3di4) DescriptorSet 0
-                              Decorate 133(g_tTex3du4) DescriptorSet 0
-                              Decorate 136(g_tTexcdf4) DescriptorSet 0
-                              Decorate 139(g_tTexcdi4) DescriptorSet 0
-                              Decorate 142(g_tTexcdu4) DescriptorSet 0
-                              Decorate 145(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 148(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 151(g_tTexcdu4a) DescriptorSet 0
+                              MemberDecorate 15($Global) 0 Offset 0
+                              MemberDecorate 15($Global) 1 Offset 8
+                              MemberDecorate 15($Global) 2 Offset 16
+                              MemberDecorate 15($Global) 3 Offset 32
+                              MemberDecorate 15($Global) 4 Offset 48
+                              MemberDecorate 15($Global) 5 Offset 56
+                              MemberDecorate 15($Global) 6 Offset 64
+                              MemberDecorate 15($Global) 7 Offset 80
+                              Decorate 15($Global) Block
+                              Decorate 17 DescriptorSet 0
+                              Decorate 35(g_tTex1di4a) DescriptorSet 0
+                              Decorate 47(g_tTex1du4a) DescriptorSet 0
+                              Decorate 60(g_tTex2df4a) DescriptorSet 0
+                              Decorate 77(g_tTex2di4a) DescriptorSet 0
+                              Decorate 89(g_tTex2du4a) DescriptorSet 0
+                              Decorate 111(Color) Location 0
+                              Decorate 115(Depth) BuiltIn FragDepth
+                              Decorate 121(g_sSamp) DescriptorSet 0
+                              Decorate 121(g_sSamp) Binding 0
+                              Decorate 124(g_tTex1df4) DescriptorSet 0
+                              Decorate 124(g_tTex1df4) Binding 0
+                              Decorate 127(g_tTex1di4) DescriptorSet 0
+                              Decorate 130(g_tTex1du4) DescriptorSet 0
+                              Decorate 133(g_tTex2df4) DescriptorSet 0
+                              Decorate 136(g_tTex2di4) DescriptorSet 0
+                              Decorate 139(g_tTex2du4) DescriptorSet 0
+                              Decorate 142(g_tTex3df4) DescriptorSet 0
+                              Decorate 145(g_tTex3di4) DescriptorSet 0
+                              Decorate 148(g_tTex3du4) DescriptorSet 0
+                              Decorate 151(g_tTexcdf4) DescriptorSet 0
+                              Decorate 154(g_tTexcdi4) DescriptorSet 0
+                              Decorate 157(g_tTexcdu4) DescriptorSet 0
+                              Decorate 160(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 163(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 166(g_tTexcdu4a) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -409,155 +515,166 @@ gl_FragCoord origin is upper left
                8:             TypePointer UniformConstant 7
   9(g_tTex1df4a):      8(ptr) Variable UniformConstant
               11:             TypeInt 32 1
-              12:             TypeVector 11(int) 3
-              13:             TypePointer UniformConstant 12(ivec3)
-          14(c3):     13(ptr) Variable UniformConstant
-              15:             TypeVector 11(int) 2
-              18:             TypeInt 32 0
-              19:     18(int) Constant 2
-              20:             TypePointer UniformConstant 11(int)
-          23(o1):     20(ptr) Variable UniformConstant
-              25:             TypeVector 6(float) 4
-              27:             TypeImage 11(int) 1D array sampled format:Unknown
-              28:             TypePointer UniformConstant 27
- 29(g_tTex1di4a):     28(ptr) Variable UniformConstant
-              36:             TypeVector 11(int) 4
-              38:             TypeImage 18(int) 1D array sampled format:Unknown
-              39:             TypePointer UniformConstant 38
- 40(g_tTex1du4a):     39(ptr) Variable UniformConstant
-              47:             TypeVector 18(int) 4
-              49:             TypeImage 6(float) 2D array sampled format:Unknown
-              50:             TypePointer UniformConstant 49
- 51(g_tTex2df4a):     50(ptr) Variable UniformConstant
-              53:             TypePointer UniformConstant 36(ivec4)
-          54(c4):     53(ptr) Variable UniformConstant
-              57:     18(int) Constant 3
-              60:             TypePointer UniformConstant 15(ivec2)
-          61(o2):     60(ptr) Variable UniformConstant
-              64:             TypeImage 11(int) 2D array sampled format:Unknown
-              65:             TypePointer UniformConstant 64
- 66(g_tTex2di4a):     65(ptr) Variable UniformConstant
-              74:             TypeImage 18(int) 2D array sampled format:Unknown
-              75:             TypePointer UniformConstant 74
- 76(g_tTex2du4a):     75(ptr) Variable UniformConstant
-   84(PS_OUTPUT):             TypeStruct 25(fvec4) 6(float)
-              85:             TypePointer Function 84(PS_OUTPUT)
-              87:     11(int) Constant 0
-              88:    6(float) Constant 1065353216
-              89:   25(fvec4) ConstantComposite 88 88 88 88
-              90:             TypePointer Function 25(fvec4)
-              92:     11(int) Constant 1
-              93:             TypePointer Function 6(float)
-              95:             TypePointer Output 25(fvec4)
-       96(Color):     95(ptr) Variable Output
-              99:             TypePointer Output 6(float)
-      100(Depth):     99(ptr) Variable Output
-             104:             TypeSampler
-             105:             TypePointer UniformConstant 104
-    106(g_sSamp):    105(ptr) Variable UniformConstant
-             107:             TypeImage 6(float) 1D sampled format:Unknown
-             108:             TypePointer UniformConstant 107
- 109(g_tTex1df4):    108(ptr) Variable UniformConstant
-             110:             TypeImage 11(int) 1D sampled format:Unknown
-             111:             TypePointer UniformConstant 110
- 112(g_tTex1di4):    111(ptr) Variable UniformConstant
-             113:             TypeImage 18(int) 1D sampled format:Unknown
-             114:             TypePointer UniformConstant 113
- 115(g_tTex1du4):    114(ptr) Variable UniformConstant
-             116:             TypeImage 6(float) 2D sampled format:Unknown
-             117:             TypePointer UniformConstant 116
- 118(g_tTex2df4):    117(ptr) Variable UniformConstant
-             119:             TypeImage 11(int) 2D sampled format:Unknown
+              12:             TypeVector 11(int) 2
+              13:             TypeVector 11(int) 3
+              14:             TypeVector 11(int) 4
+     15($Global):             TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4)
+              16:             TypePointer Uniform 15($Global)
+              17:     16(ptr) Variable Uniform
+              18:     11(int) Constant 2
+              19:             TypePointer Uniform 13(ivec3)
+              23:             TypeInt 32 0
+              24:     23(int) Constant 2
+              25:             TypePointer Uniform 11(int)
+              28:     11(int) Constant 4
+              31:             TypeVector 6(float) 4
+              33:             TypeImage 11(int) 1D array sampled format:Unknown
+              34:             TypePointer UniformConstant 33
+ 35(g_tTex1di4a):     34(ptr) Variable UniformConstant
+              45:             TypeImage 23(int) 1D array sampled format:Unknown
+              46:             TypePointer UniformConstant 45
+ 47(g_tTex1du4a):     46(ptr) Variable UniformConstant
+              56:             TypeVector 23(int) 4
+              58:             TypeImage 6(float) 2D array sampled format:Unknown
+              59:             TypePointer UniformConstant 58
+ 60(g_tTex2df4a):     59(ptr) Variable UniformConstant
+              62:     11(int) Constant 3
+              63:             TypePointer Uniform 14(ivec4)
+              67:     23(int) Constant 3
+              70:     11(int) Constant 5
+              71:             TypePointer Uniform 12(ivec2)
+              75:             TypeImage 11(int) 2D array sampled format:Unknown
+              76:             TypePointer UniformConstant 75
+ 77(g_tTex2di4a):     76(ptr) Variable UniformConstant
+              87:             TypeImage 23(int) 2D array sampled format:Unknown
+              88:             TypePointer UniformConstant 87
+ 89(g_tTex2du4a):     88(ptr) Variable UniformConstant
+   99(PS_OUTPUT):             TypeStruct 31(fvec4) 6(float)
+             100:             TypePointer Function 99(PS_OUTPUT)
+             102:     11(int) Constant 0
+             103:    6(float) Constant 1065353216
+             104:   31(fvec4) ConstantComposite 103 103 103 103
+             105:             TypePointer Function 31(fvec4)
+             107:     11(int) Constant 1
+             108:             TypePointer Function 6(float)
+             110:             TypePointer Output 31(fvec4)
+      111(Color):    110(ptr) Variable Output
+             114:             TypePointer Output 6(float)
+      115(Depth):    114(ptr) Variable Output
+             119:             TypeSampler
              120:             TypePointer UniformConstant 119
- 121(g_tTex2di4):    120(ptr) Variable UniformConstant
-             122:             TypeImage 18(int) 2D sampled format:Unknown
+    121(g_sSamp):    120(ptr) Variable UniformConstant
+             122:             TypeImage 6(float) 1D sampled format:Unknown
              123:             TypePointer UniformConstant 122
- 124(g_tTex2du4):    123(ptr) Variable UniformConstant
-             125:             TypeImage 6(float) 3D sampled format:Unknown
+ 124(g_tTex1df4):    123(ptr) Variable UniformConstant
+             125:             TypeImage 11(int) 1D sampled format:Unknown
              126:             TypePointer UniformConstant 125
- 127(g_tTex3df4):    126(ptr) Variable UniformConstant
-             128:             TypeImage 11(int) 3D sampled format:Unknown
+ 127(g_tTex1di4):    126(ptr) Variable UniformConstant
+             128:             TypeImage 23(int) 1D sampled format:Unknown
              129:             TypePointer UniformConstant 128
- 130(g_tTex3di4):    129(ptr) Variable UniformConstant
-             131:             TypeImage 18(int) 3D sampled format:Unknown
+ 130(g_tTex1du4):    129(ptr) Variable UniformConstant
+             131:             TypeImage 6(float) 2D sampled format:Unknown
              132:             TypePointer UniformConstant 131
- 133(g_tTex3du4):    132(ptr) Variable UniformConstant
-             134:             TypeImage 6(float) Cube sampled format:Unknown
+ 133(g_tTex2df4):    132(ptr) Variable UniformConstant
+             134:             TypeImage 11(int) 2D sampled format:Unknown
              135:             TypePointer UniformConstant 134
- 136(g_tTexcdf4):    135(ptr) Variable UniformConstant
-             137:             TypeImage 11(int) Cube sampled format:Unknown
+ 136(g_tTex2di4):    135(ptr) Variable UniformConstant
+             137:             TypeImage 23(int) 2D sampled format:Unknown
              138:             TypePointer UniformConstant 137
- 139(g_tTexcdi4):    138(ptr) Variable UniformConstant
-             140:             TypeImage 18(int) Cube sampled format:Unknown
+ 139(g_tTex2du4):    138(ptr) Variable UniformConstant
+             140:             TypeImage 6(float) 3D sampled format:Unknown
              141:             TypePointer UniformConstant 140
- 142(g_tTexcdu4):    141(ptr) Variable UniformConstant
-             143:             TypeImage 6(float) Cube array sampled format:Unknown
+ 142(g_tTex3df4):    141(ptr) Variable UniformConstant
+             143:             TypeImage 11(int) 3D sampled format:Unknown
              144:             TypePointer UniformConstant 143
-145(g_tTexcdf4a):    144(ptr) Variable UniformConstant
-             146:             TypeImage 11(int) Cube array sampled format:Unknown
+ 145(g_tTex3di4):    144(ptr) Variable UniformConstant
+             146:             TypeImage 23(int) 3D sampled format:Unknown
              147:             TypePointer UniformConstant 146
-148(g_tTexcdi4a):    147(ptr) Variable UniformConstant
-             149:             TypeImage 18(int) Cube array sampled format:Unknown
+ 148(g_tTex3du4):    147(ptr) Variable UniformConstant
+             149:             TypeImage 6(float) Cube sampled format:Unknown
              150:             TypePointer UniformConstant 149
-151(g_tTexcdu4a):    150(ptr) Variable UniformConstant
-         152(c1):     20(ptr) Variable UniformConstant
-         153(c2):     60(ptr) Variable UniformConstant
-         154(o3):     13(ptr) Variable UniformConstant
-         155(o4):     53(ptr) Variable UniformConstant
+ 151(g_tTexcdf4):    150(ptr) Variable UniformConstant
+             152:             TypeImage 11(int) Cube sampled format:Unknown
+             153:             TypePointer UniformConstant 152
+ 154(g_tTexcdi4):    153(ptr) Variable UniformConstant
+             155:             TypeImage 23(int) Cube sampled format:Unknown
+             156:             TypePointer UniformConstant 155
+ 157(g_tTexcdu4):    156(ptr) Variable UniformConstant
+             158:             TypeImage 6(float) Cube array sampled format:Unknown
+             159:             TypePointer UniformConstant 158
+160(g_tTexcdf4a):    159(ptr) Variable UniformConstant
+             161:             TypeImage 11(int) Cube array sampled format:Unknown
+             162:             TypePointer UniformConstant 161
+163(g_tTexcdi4a):    162(ptr) Variable UniformConstant
+             164:             TypeImage 23(int) Cube array sampled format:Unknown
+             165:             TypePointer UniformConstant 164
+166(g_tTexcdu4a):    165(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-       86(psout):     85(ptr) Variable Function
+      101(psout):    100(ptr) Variable Function
               10:           7 Load 9(g_tTex1df4a)
-              16:   12(ivec3) Load 14(c3)
-              17:   15(ivec2) VectorShuffle 16 16 0 1
-              21:     20(ptr) AccessChain 14(c3) 19
-              22:     11(int) Load 21
-              24:     11(int) Load 23(o1)
-              26:   25(fvec4) ImageFetch 10 17 Lod Offset 22 24
-              30:          27 Load 29(g_tTex1di4a)
-              31:   12(ivec3) Load 14(c3)
-              32:   15(ivec2) VectorShuffle 31 31 0 1
-              33:     20(ptr) AccessChain 14(c3) 19
-              34:     11(int) Load 33
-              35:     11(int) Load 23(o1)
-              37:   36(ivec4) ImageFetch 30 32 Lod Offset 34 35
-              41:          38 Load 40(g_tTex1du4a)
-              42:   12(ivec3) Load 14(c3)
-              43:   15(ivec2) VectorShuffle 42 42 0 1
-              44:     20(ptr) AccessChain 14(c3) 19
-              45:     11(int) Load 44
-              46:     11(int) Load 23(o1)
-              48:   47(ivec4) ImageFetch 41 43 Lod Offset 45 46
-              52:          49 Load 51(g_tTex2df4a)
-              55:   36(ivec4) Load 54(c4)
-              56:   12(ivec3) VectorShuffle 55 55 0 1 2
-              58:     20(ptr) AccessChain 54(c4) 57
-              59:     11(int) Load 58
-              62:   15(ivec2) Load 61(o2)
-              63:   25(fvec4) ImageFetch 52 56 Lod Offset 59 62
-              67:          64 Load 66(g_tTex2di4a)
-              68:   36(ivec4) Load 54(c4)
-              69:   12(ivec3) VectorShuffle 68 68 0 1 2
-              70:     20(ptr) AccessChain 54(c4) 57
-              71:     11(int) Load 70
-              72:   15(ivec2) Load 61(o2)
-              73:   36(ivec4) ImageFetch 67 69 Lod Offset 71 72
-              77:          74 Load 76(g_tTex2du4a)
-              78:   36(ivec4) Load 54(c4)
-              79:   12(ivec3) VectorShuffle 78 78 0 1 2
-              80:     20(ptr) AccessChain 54(c4) 57
-              81:     11(int) Load 80
-              82:   15(ivec2) Load 61(o2)
-              83:   47(ivec4) ImageFetch 77 79 Lod Offset 81 82
-              91:     90(ptr) AccessChain 86(psout) 87
-                              Store 91 89
-              94:     93(ptr) AccessChain 86(psout) 92
-                              Store 94 88
-              97:     90(ptr) AccessChain 86(psout) 87
-              98:   25(fvec4) Load 97
-                              Store 96(Color) 98
-             101:     93(ptr) AccessChain 86(psout) 92
-             102:    6(float) Load 101
-                              Store 100(Depth) 102
+              20:     19(ptr) AccessChain 17 18
+              21:   13(ivec3) Load 20
+              22:   12(ivec2) VectorShuffle 21 21 0 1
+              26:     25(ptr) AccessChain 17 18 24
+              27:     11(int) Load 26
+              29:     25(ptr) AccessChain 17 28
+              30:     11(int) Load 29
+              32:   31(fvec4) ImageFetch 10 22 Lod Offset 27 30
+              36:          33 Load 35(g_tTex1di4a)
+              37:     19(ptr) AccessChain 17 18
+              38:   13(ivec3) Load 37
+              39:   12(ivec2) VectorShuffle 38 38 0 1
+              40:     25(ptr) AccessChain 17 18 24
+              41:     11(int) Load 40
+              42:     25(ptr) AccessChain 17 28
+              43:     11(int) Load 42
+              44:   14(ivec4) ImageFetch 36 39 Lod Offset 41 43
+              48:          45 Load 47(g_tTex1du4a)
+              49:     19(ptr) AccessChain 17 18
+              50:   13(ivec3) Load 49
+              51:   12(ivec2) VectorShuffle 50 50 0 1
+              52:     25(ptr) AccessChain 17 18 24
+              53:     11(int) Load 52
+              54:     25(ptr) AccessChain 17 28
+              55:     11(int) Load 54
+              57:   56(ivec4) ImageFetch 48 51 Lod Offset 53 55
+              61:          58 Load 60(g_tTex2df4a)
+              64:     63(ptr) AccessChain 17 62
+              65:   14(ivec4) Load 64
+              66:   13(ivec3) VectorShuffle 65 65 0 1 2
+              68:     25(ptr) AccessChain 17 62 67
+              69:     11(int) Load 68
+              72:     71(ptr) AccessChain 17 70
+              73:   12(ivec2) Load 72
+              74:   31(fvec4) ImageFetch 61 66 Lod Offset 69 73
+              78:          75 Load 77(g_tTex2di4a)
+              79:     63(ptr) AccessChain 17 62
+              80:   14(ivec4) Load 79
+              81:   13(ivec3) VectorShuffle 80 80 0 1 2
+              82:     25(ptr) AccessChain 17 62 67
+              83:     11(int) Load 82
+              84:     71(ptr) AccessChain 17 70
+              85:   12(ivec2) Load 84
+              86:   14(ivec4) ImageFetch 78 81 Lod Offset 83 85
+              90:          87 Load 89(g_tTex2du4a)
+              91:     63(ptr) AccessChain 17 62
+              92:   14(ivec4) Load 91
+              93:   13(ivec3) VectorShuffle 92 92 0 1 2
+              94:     25(ptr) AccessChain 17 62 67
+              95:     11(int) Load 94
+              96:     71(ptr) AccessChain 17 70
+              97:   12(ivec2) Load 96
+              98:   56(ivec4) ImageFetch 90 93 Lod Offset 95 97
+             106:    105(ptr) AccessChain 101(psout) 102
+                              Store 106 104
+             109:    108(ptr) AccessChain 101(psout) 107
+                              Store 109 103
+             112:    105(ptr) AccessChain 101(psout) 102
+             113:   31(fvec4) Load 112
+                              Store 111(Color) 113
+             116:    108(ptr) AccessChain 101(psout) 107
+             117:    6(float) Load 116
+                              Store 115(Depth) 117
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out
index 2d63460ba..0066a1de2 100755
--- a/Test/baseResults/hlsl.matType.frag.out
+++ b/Test/baseResults/hlsl.matType.frag.out
@@ -2,12 +2,7 @@ hlsl.matType.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:1  Sequence
-0:1    move second child to first child (temp 1-component vector of float)
-0:1      'f1' (global 1-component vector of float)
-0:1      Constant:
-0:1        1.000000
-0:9  Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
+0:9  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
 0:9    Function Parameters: 
 0:9      'inFloat1' (in 1-component vector of float)
 0:9      'inScalar' (in float)
@@ -15,12 +10,7 @@ gl_FragCoord origin is upper left
 0:10      Branch: Return with expression
 0:10        'inFloat1' (in 1-component vector of float)
 0:?   Linker Objects
-0:?     'f1' (global 1-component vector of float)
-0:?     'fmat11' (global 1X1 matrix of float)
-0:?     'fmat41' (global 4X1 matrix of float)
-0:?     'fmat12' (global 1X2 matrix of float)
-0:?     'dmat23' (global 2X3 matrix of double)
-0:?     'int44' (global 4X4 matrix of int)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44})
 
 
 Linked fragment stage:
@@ -29,12 +19,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:1  Sequence
-0:1    move second child to first child (temp 1-component vector of float)
-0:1      'f1' (global 1-component vector of float)
-0:1      Constant:
-0:1        1.000000
-0:9  Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
+0:9  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
 0:9    Function Parameters: 
 0:9      'inFloat1' (in 1-component vector of float)
 0:9      'inScalar' (in float)
@@ -42,16 +27,11 @@ gl_FragCoord origin is upper left
 0:10      Branch: Return with expression
 0:10        'inFloat1' (in 1-component vector of float)
 0:?   Linker Objects
-0:?     'f1' (global 1-component vector of float)
-0:?     'fmat11' (global 1X1 matrix of float)
-0:?     'fmat41' (global 4X1 matrix of float)
-0:?     'fmat12' (global 1X2 matrix of float)
-0:?     'dmat23' (global 2X3 matrix of double)
-0:?     'int44' (global 4X4 matrix of int)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 40
+// Id's are bound by 30
 
                               Capability Shader
                               Capability Float64
@@ -63,49 +43,42 @@ gl_FragCoord origin is upper left
                               Name 11  "ShaderFunction(vf1;f1;"
                               Name 9  "inFloat1"
                               Name 10  "inScalar"
-                              Name 14  "f1"
-                              Name 22  "fmat11"
-                              Name 25  "fmat41"
-                              Name 29  "fmat12"
-                              Name 34  "dmat23"
-                              Name 39  "int44"
+                              Name 27  "$Global"
+                              MemberName 27($Global) 0  "f1"
+                              MemberName 27($Global) 1  "fmat11"
+                              MemberName 27($Global) 2  "fmat41"
+                              MemberName 27($Global) 3  "fmat12"
+                              MemberName 27($Global) 4  "dmat23"
+                              MemberName 27($Global) 5  "int44"
+                              Name 29  ""
+                              Decorate 27($Global) Block
+                              Decorate 29 DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypePointer Function 6(float)
                8:             TypeFunction 6(float) 7(ptr) 7(ptr)
-              13:             TypePointer Private 6(float)
-          14(f1):     13(ptr) Variable Private
-              15:    6(float) Constant 1065353216
-              19:             TypeVector 6(float) 1
-              20:             TypeMatrix 19(fvec) 1
-              21:             TypePointer Private 20
-      22(fmat11):     21(ptr) Variable Private
-              23:             TypeMatrix 19(fvec) 4
-              24:             TypePointer Private 23
-      25(fmat41):     24(ptr) Variable Private
-              26:             TypeVector 6(float) 2
-              27:             TypeMatrix 26(fvec2) 1
-              28:             TypePointer Private 27
-      29(fmat12):     28(ptr) Variable Private
-              30:             TypeFloat 64
-              31:             TypeVector 30(float) 3
-              32:             TypeMatrix 31(fvec3) 2
-              33:             TypePointer Private 32
-      34(dmat23):     33(ptr) Variable Private
-              35:             TypeInt 32 1
-              36:             TypeVector 35(int) 4
-              37:             TypeMatrix 36(ivec4) 4
-              38:             TypePointer Private 37
-       39(int44):     38(ptr) Variable Private
+              16:             TypeVector 6(float) 1
+              17:             TypeMatrix 16(fvec) 1
+              18:             TypeMatrix 16(fvec) 4
+              19:             TypeVector 6(float) 2
+              20:             TypeMatrix 19(fvec2) 1
+              21:             TypeFloat 64
+              22:             TypeVector 21(float) 3
+              23:             TypeMatrix 22(fvec3) 2
+              24:             TypeInt 32 1
+              25:             TypeVector 24(int) 4
+              26:             TypeMatrix 25(ivec4) 4
+     27($Global):             TypeStruct 6(float) 17 18 20 23 26
+              28:             TypePointer Uniform 27($Global)
+              29:     28(ptr) Variable Uniform
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-                              Store 14(f1) 15
                               FunctionEnd
 11(ShaderFunction(vf1;f1;):    6(float) Function None 8
      9(inFloat1):      7(ptr) FunctionParameter
     10(inScalar):      7(ptr) FunctionParameter
               12:             Label
-              16:    6(float) Load 9(inFloat1)
-                              ReturnValue 16
+              13:    6(float) Load 9(inFloat1)
+                              ReturnValue 13
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out
index 7acaa7170..7d49629db 100644
--- a/Test/baseResults/hlsl.matrixindex.frag.out
+++ b/Test/baseResults/hlsl.matrixindex.frag.out
@@ -2,7 +2,7 @@ hlsl.matrixindex.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:10  Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:10  Function Definition: main( (temp structure{temp 4-component vector of float Color})
 0:10    Function Parameters: 
 0:?     Sequence
 0:22      Sequence
@@ -94,13 +94,22 @@ gl_FragCoord origin is upper left
 0:43              23.000000
 0:43              24.000000
 0:43              25.000000
-0:43            'idx' (uniform int)
+0:43            idx: direct index for structure (layout(offset=0 ) uniform int)
+0:43              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um})
+0:43              Constant:
+0:43                0 (const uint)
 0:44      Sequence
 0:44        move second child to first child (temp 2-component vector of float)
 0:44          'r0c' (temp 2-component vector of float)
-0:44          indirect index (temp 2-component vector of float)
-0:44            'um' (uniform 3X2 matrix of float)
-0:44            'idx' (uniform int)
+0:44          indirect index (layout(offset=16 ) temp 2-component vector of float)
+0:44            um: direct index for structure (layout(offset=16 ) uniform 3X2 matrix of float)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um})
+0:44              Constant:
+0:44                1 (const uint)
+0:44            idx: direct index for structure (layout(offset=0 ) uniform int)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um})
+0:44              Constant:
+0:44                0 (const uint)
 0:47      move second child to first child (temp 4-component vector of float)
 0:47        Color: direct index for structure (temp 4-component vector of float)
 0:47          'psout' (temp structure{temp 4-component vector of float Color})
@@ -118,9 +127,8 @@ gl_FragCoord origin is upper left
 0:48                0 (const int)
 0:48        Branch: Return
 0:?   Linker Objects
-0:?     'idx' (uniform int)
-0:?     'um' (uniform 3X2 matrix of float)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um})
 
 
 Linked fragment stage:
@@ -129,7 +137,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:10  Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:10  Function Definition: main( (temp structure{temp 4-component vector of float Color})
 0:10    Function Parameters: 
 0:?     Sequence
 0:22      Sequence
@@ -221,13 +229,22 @@ gl_FragCoord origin is upper left
 0:43              23.000000
 0:43              24.000000
 0:43              25.000000
-0:43            'idx' (uniform int)
+0:43            idx: direct index for structure (layout(offset=0 ) uniform int)
+0:43              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um})
+0:43              Constant:
+0:43                0 (const uint)
 0:44      Sequence
 0:44        move second child to first child (temp 2-component vector of float)
 0:44          'r0c' (temp 2-component vector of float)
-0:44          indirect index (temp 2-component vector of float)
-0:44            'um' (uniform 3X2 matrix of float)
-0:44            'idx' (uniform int)
+0:44          indirect index (layout(offset=16 ) temp 2-component vector of float)
+0:44            um: direct index for structure (layout(offset=16 ) uniform 3X2 matrix of float)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um})
+0:44              Constant:
+0:44                1 (const uint)
+0:44            idx: direct index for structure (layout(offset=0 ) uniform int)
+0:44              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um})
+0:44              Constant:
+0:44                0 (const uint)
 0:47      move second child to first child (temp 4-component vector of float)
 0:47        Color: direct index for structure (temp 4-component vector of float)
 0:47          'psout' (temp structure{temp 4-component vector of float Color})
@@ -245,18 +262,17 @@ gl_FragCoord origin is upper left
 0:48                0 (const int)
 0:48        Branch: Return
 0:?   Linker Objects
-0:?     'idx' (uniform int)
-0:?     'um' (uniform 3X2 matrix of float)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 75
+// Id's are bound by 78
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 71
+                              EntryPoint Fragment 4  "main" 74
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 8  "e1_00"
@@ -275,15 +291,23 @@ gl_FragCoord origin is upper left
                               Name 36  "r1a"
                               Name 38  "r2a"
                               Name 40  "r0b"
-                              Name 48  "idx"
-                              Name 51  "indexable"
-                              Name 54  "r0c"
-                              Name 56  "um"
-                              Name 62  "PS_OUTPUT"
-                              MemberName 62(PS_OUTPUT) 0  "Color"
-                              Name 64  "psout"
-                              Name 71  "Color"
-                              Decorate 71(Color) Location 0
+                              Name 47  "$Global"
+                              MemberName 47($Global) 0  "idx"
+                              MemberName 47($Global) 1  "um"
+                              Name 49  ""
+                              Name 55  "indexable"
+                              Name 58  "r0c"
+                              Name 66  "PS_OUTPUT"
+                              MemberName 66(PS_OUTPUT) 0  "Color"
+                              Name 68  "psout"
+                              Name 74  "Color"
+                              MemberDecorate 47($Global) 0 Offset 0
+                              MemberDecorate 47($Global) 1 RowMajor
+                              MemberDecorate 47($Global) 1 Offset 16
+                              MemberDecorate 47($Global) 1 MatrixStride 16
+                              Decorate 47($Global) Block
+                              Decorate 49 DescriptorSet 0
+                              Decorate 74(Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -311,19 +335,20 @@ gl_FragCoord origin is upper left
               44:   32(fvec2) ConstantComposite 29 31
               45:          41 ConstantComposite 42 43 44
               46:             TypeInt 32 1
-              47:             TypePointer UniformConstant 46(int)
-         48(idx):     47(ptr) Variable UniformConstant
-              50:             TypePointer Function 41
-              55:             TypePointer UniformConstant 41
-          56(um):     55(ptr) Variable UniformConstant
-              58:             TypePointer UniformConstant 32(fvec2)
-              61:             TypeVector 6(float) 4
-   62(PS_OUTPUT):             TypeStruct 61(fvec4)
-              63:             TypePointer Function 62(PS_OUTPUT)
-              65:     46(int) Constant 0
-              68:             TypePointer Function 61(fvec4)
-              70:             TypePointer Output 61(fvec4)
-       71(Color):     70(ptr) Variable Output
+     47($Global):             TypeStruct 46(int) 41
+              48:             TypePointer Uniform 47($Global)
+              49:     48(ptr) Variable Uniform
+              50:     46(int) Constant 0
+              51:             TypePointer Uniform 46(int)
+              54:             TypePointer Function 41
+              59:     46(int) Constant 1
+              62:             TypePointer Uniform 32(fvec2)
+              65:             TypeVector 6(float) 4
+   66(PS_OUTPUT):             TypeStruct 65(fvec4)
+              67:             TypePointer Function 66(PS_OUTPUT)
+              71:             TypePointer Function 65(fvec4)
+              73:             TypePointer Output 65(fvec4)
+       74(Color):     73(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
         8(e1_00):      7(ptr) Variable Function
@@ -342,9 +367,9 @@ gl_FragCoord origin is upper left
          36(r1a):     33(ptr) Variable Function
          38(r2a):     33(ptr) Variable Function
          40(r0b):     33(ptr) Variable Function
-   51(indexable):     50(ptr) Variable Function
-         54(r0c):     33(ptr) Variable Function
-       64(psout):     63(ptr) Variable Function
+   55(indexable):     54(ptr) Variable Function
+         58(r0c):     33(ptr) Variable Function
+       68(psout):     67(ptr) Variable Function
                               Store 8(e1_00) 9
                               Store 10(e1_01) 11
                               Store 12(e1_10) 13
@@ -360,21 +385,23 @@ gl_FragCoord origin is upper left
                               Store 34(r0a) 35
                               Store 36(r1a) 37
                               Store 38(r2a) 39
-              49:     46(int) Load 48(idx)
-                              Store 51(indexable) 45
-              52:     33(ptr) AccessChain 51(indexable) 49
-              53:   32(fvec2) Load 52
-                              Store 40(r0b) 53
-              57:     46(int) Load 48(idx)
-              59:     58(ptr) AccessChain 56(um) 57
-              60:   32(fvec2) Load 59
-                              Store 54(r0c) 60
-              66:    6(float) Load 26(e2_11)
-              67:   61(fvec4) CompositeConstruct 66 66 66 66
-              69:     68(ptr) AccessChain 64(psout) 65
-                              Store 69 67
-              72:     68(ptr) AccessChain 64(psout) 65
-              73:   61(fvec4) Load 72
-                              Store 71(Color) 73
+              52:     51(ptr) AccessChain 49 50
+              53:     46(int) Load 52
+                              Store 55(indexable) 45
+              56:     33(ptr) AccessChain 55(indexable) 53
+              57:   32(fvec2) Load 56
+                              Store 40(r0b) 57
+              60:     51(ptr) AccessChain 49 50
+              61:     46(int) Load 60
+              63:     62(ptr) AccessChain 49 59 61
+              64:   32(fvec2) Load 63
+                              Store 58(r0c) 64
+              69:    6(float) Load 26(e2_11)
+              70:   65(fvec4) CompositeConstruct 69 69 69 69
+              72:     71(ptr) AccessChain 68(psout) 50
+                              Store 72 70
+              75:     71(ptr) AccessChain 68(psout) 50
+              76:   65(fvec4) Load 75
+                              Store 74(Color) 76
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out
index d396be8bf..53646bb15 100755
--- a/Test/baseResults/hlsl.max.frag.out
+++ b/Test/baseResults/hlsl.max.frag.out
@@ -2,7 +2,7 @@ hlsl.max.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input1' (layout(location=0 ) in 4-component vector of float)
 0:2      'input2' (layout(location=1 ) in 4-component vector of float)
@@ -26,7 +26,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4;vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input1' (layout(location=0 ) in 4-component vector of float)
 0:2      'input2' (layout(location=1 ) in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out
index 35ecaf507..cec78986e 100755
--- a/Test/baseResults/hlsl.multiEntry.vert.out
+++ b/Test/baseResults/hlsl.multiEntry.vert.out
@@ -1,7 +1,7 @@
 hlsl.multiEntry.vert
 Shader version: 450
 0:? Sequence
-0:4  Function Definition: FakeEntrypoint(u1; (global 4-component vector of float)
+0:4  Function Definition: FakeEntrypoint(u1; (temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'Index' (in uint)
 0:?     Sequence
@@ -10,14 +10,14 @@ Shader version: 450
 0:5          'Position' (uniform samplerBuffer)
 0:5          Convert uint to int (temp int)
 0:5            'Index' (in uint)
-0:9  Function Definition: RealEntrypoint(u1; (global 4-component vector of float Position)
+0:9  Function Definition: RealEntrypoint(u1; (temp 4-component vector of float Position)
 0:9    Function Parameters: 
 0:9      'Index' (in uint VertexIndex)
 0:?     Sequence
 0:10      Sequence
 0:10        move second child to first child (temp 4-component vector of float)
 0:?           '@entryPointOutput' (out 4-component vector of float Position)
-0:10          Function Call: FakeEntrypoint(u1; (global 4-component vector of float)
+0:10          Function Call: FakeEntrypoint(u1; (temp 4-component vector of float)
 0:10            'Index' (in uint VertexIndex)
 0:10        Branch: Return
 0:?   Linker Objects
@@ -31,7 +31,7 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:4  Function Definition: FakeEntrypoint(u1; (global 4-component vector of float)
+0:4  Function Definition: FakeEntrypoint(u1; (temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'Index' (in uint)
 0:?     Sequence
@@ -40,14 +40,14 @@ Shader version: 450
 0:5          'Position' (uniform samplerBuffer)
 0:5          Convert uint to int (temp int)
 0:5            'Index' (in uint)
-0:9  Function Definition: RealEntrypoint(u1; (global 4-component vector of float Position)
+0:9  Function Definition: RealEntrypoint(u1; (temp 4-component vector of float Position)
 0:9    Function Parameters: 
 0:9      'Index' (in uint VertexIndex)
 0:?     Sequence
 0:10      Sequence
 0:10        move second child to first child (temp 4-component vector of float)
 0:?           '@entryPointOutput' (out 4-component vector of float Position)
-0:10          Function Call: FakeEntrypoint(u1; (global 4-component vector of float)
+0:10          Function Call: FakeEntrypoint(u1; (temp 4-component vector of float)
 0:10            'Index' (in uint VertexIndex)
 0:10        Branch: Return
 0:?   Linker Objects
diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out
index 168065bb5..6d192c0ac 100644
--- a/Test/baseResults/hlsl.numericsuffixes.frag.out
+++ b/Test/baseResults/hlsl.numericsuffixes.frag.out
@@ -2,7 +2,7 @@ hlsl.numericsuffixes.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:5  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:5  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:5    Function Parameters: 
 0:?     Sequence
 0:7      Sequence
@@ -77,7 +77,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:5  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:5  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:5    Function Parameters: 
 0:?     Sequence
 0:7      Sequence
diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out
index 0e0f4707f..4eed1a3fc 100755
--- a/Test/baseResults/hlsl.overload.frag.out
+++ b/Test/baseResults/hlsl.overload.frag.out
@@ -2,349 +2,349 @@ hlsl.overload.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: foo1(d1;b1; (global void)
+0:2  Function Definition: foo1(d1;b1; (temp void)
 0:2    Function Parameters: 
 0:2      'a' (in double)
 0:2      'b' (in bool)
-0:3  Function Definition: foo1(d1;u1; (global void)
+0:3  Function Definition: foo1(d1;u1; (temp void)
 0:3    Function Parameters: 
 0:3      'a' (in double)
 0:3      'b' (in uint)
-0:4  Function Definition: foo1(d1;i1; (global void)
+0:4  Function Definition: foo1(d1;i1; (temp void)
 0:4    Function Parameters: 
 0:4      'a' (in double)
 0:4      'b' (in int)
-0:5  Function Definition: foo1(d1;f1; (global void)
+0:5  Function Definition: foo1(d1;f1; (temp void)
 0:5    Function Parameters: 
 0:5      'a' (in double)
 0:5      'b' (in float)
-0:6  Function Definition: foo1(d1;d1; (global void)
+0:6  Function Definition: foo1(d1;d1; (temp void)
 0:6    Function Parameters: 
 0:6      'a' (in double)
 0:6      'b' (in double)
-0:9  Function Definition: foo2(i1;b1; (global void)
+0:9  Function Definition: foo2(i1;b1; (temp void)
 0:9    Function Parameters: 
 0:9      'a' (in int)
 0:9      'b' (in bool)
-0:10  Function Definition: foo2(i1;u1; (global void)
+0:10  Function Definition: foo2(i1;u1; (temp void)
 0:10    Function Parameters: 
 0:10      'a' (in int)
 0:10      'b' (in uint)
-0:11  Function Definition: foo2(i1;i1; (global void)
+0:11  Function Definition: foo2(i1;i1; (temp void)
 0:11    Function Parameters: 
 0:11      'a' (in int)
 0:11      'b' (in int)
-0:12  Function Definition: foo2(i1;f1; (global void)
+0:12  Function Definition: foo2(i1;f1; (temp void)
 0:12    Function Parameters: 
 0:12      'a' (in int)
 0:12      'b' (in float)
-0:13  Function Definition: foo2(i1;d1; (global void)
+0:13  Function Definition: foo2(i1;d1; (temp void)
 0:13    Function Parameters: 
 0:13      'a' (in int)
 0:13      'b' (in double)
-0:16  Function Definition: foo3(b1; (global void)
+0:16  Function Definition: foo3(b1; (temp void)
 0:16    Function Parameters: 
 0:16      'b' (in bool)
-0:17  Function Definition: foo4(u1; (global void)
+0:17  Function Definition: foo4(u1; (temp void)
 0:17    Function Parameters: 
 0:17      'b' (in uint)
-0:18  Function Definition: foo5(i1; (global void)
+0:18  Function Definition: foo5(i1; (temp void)
 0:18    Function Parameters: 
 0:18      'b' (in int)
-0:19  Function Definition: foo6(f1; (global void)
+0:19  Function Definition: foo6(f1; (temp void)
 0:19    Function Parameters: 
 0:19      'b' (in float)
-0:20  Function Definition: foo7(d1; (global void)
+0:20  Function Definition: foo7(d1; (temp void)
 0:20    Function Parameters: 
 0:20      'b' (in double)
-0:23  Function Definition: foo8(f1; (global void)
+0:23  Function Definition: foo8(f1; (temp void)
 0:23    Function Parameters: 
 0:23      '' (in float)
-0:24  Function Definition: foo8(d1; (global void)
+0:24  Function Definition: foo8(d1; (temp void)
 0:24    Function Parameters: 
 0:24      '' (in double)
-0:25  Function Definition: foo9(i1; (global void)
+0:25  Function Definition: foo9(i1; (temp void)
 0:25    Function Parameters: 
 0:25      '' (in int)
-0:26  Function Definition: foo9(u1; (global void)
+0:26  Function Definition: foo9(u1; (temp void)
 0:26    Function Parameters: 
 0:26      '' (in uint)
-0:27  Function Definition: foo10(b1; (global void)
+0:27  Function Definition: foo10(b1; (temp void)
 0:27    Function Parameters: 
 0:27      '' (in bool)
-0:28  Function Definition: foo10(i1; (global void)
+0:28  Function Definition: foo10(i1; (temp void)
 0:28    Function Parameters: 
 0:28      '' (in int)
-0:31  Function Definition: foo11(vf3; (global void)
+0:31  Function Definition: foo11(vf3; (temp void)
 0:31    Function Parameters: 
 0:31      '' (in 3-component vector of float)
-0:32  Function Definition: foo11(d1; (global void)
+0:32  Function Definition: foo11(d1; (temp void)
 0:32    Function Parameters: 
 0:32      '' (in double)
-0:33  Function Definition: foo11(vi3; (global void)
+0:33  Function Definition: foo11(vi3; (temp void)
 0:33    Function Parameters: 
 0:33      '' (in 3-component vector of int)
-0:34  Function Definition: foo11(u1; (global void)
+0:34  Function Definition: foo11(u1; (temp void)
 0:34    Function Parameters: 
 0:34      '' (in uint)
-0:35  Function Definition: foo12(vf1; (global void)
+0:35  Function Definition: foo12(vf1; (temp void)
 0:35    Function Parameters: 
 0:35      '' (in 1-component vector of float)
-0:36  Function Definition: foo12(vd3; (global void)
+0:36  Function Definition: foo12(vd3; (temp void)
 0:36    Function Parameters: 
 0:36      '' (in 3-component vector of double)
-0:37  Function Definition: foo16(u1; (global void)
+0:37  Function Definition: foo16(u1; (temp void)
 0:37    Function Parameters: 
 0:37      '' (in uint)
-0:38  Function Definition: foo16(vu2; (global void)
+0:38  Function Definition: foo16(vu2; (temp void)
 0:38    Function Parameters: 
 0:38      '' (in 2-component vector of uint)
-0:41  Function Definition: foo13(vf3; (global void)
+0:41  Function Definition: foo13(vf3; (temp void)
 0:41    Function Parameters: 
 0:41      '' (in 3-component vector of float)
-0:42  Function Definition: foo14(vi1; (global void)
+0:42  Function Definition: foo14(vi1; (temp void)
 0:42    Function Parameters: 
 0:42      '' (in 1-component vector of int)
-0:43  Function Definition: foo15(vb1; (global void)
+0:43  Function Definition: foo15(vb1; (temp void)
 0:43    Function Parameters: 
 0:43      '' (in 1-component vector of bool)
-0:46  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:46  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:46    Function Parameters: 
 0:46      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
-0:53      Function Call: foo1(d1;b1; (global void)
+0:53      Function Call: foo1(d1;b1; (temp void)
 0:53        'd' (temp double)
 0:53        'b' (temp bool)
-0:54      Function Call: foo1(d1;d1; (global void)
+0:54      Function Call: foo1(d1;d1; (temp void)
 0:54        'd' (temp double)
 0:54        'd' (temp double)
-0:55      Function Call: foo1(d1;u1; (global void)
+0:55      Function Call: foo1(d1;u1; (temp void)
 0:55        'd' (temp double)
 0:55        'u' (temp uint)
-0:56      Function Call: foo1(d1;i1; (global void)
+0:56      Function Call: foo1(d1;i1; (temp void)
 0:56        'd' (temp double)
 0:56        'i' (temp int)
-0:57      Function Call: foo1(d1;f1; (global void)
+0:57      Function Call: foo1(d1;f1; (temp void)
 0:57        'd' (temp double)
 0:57        'f' (temp float)
-0:59      Function Call: foo1(d1;b1; (global void)
+0:59      Function Call: foo1(d1;b1; (temp void)
 0:59        Convert float to double (temp double)
 0:59          'f' (temp float)
 0:59        'b' (temp bool)
-0:60      Function Call: foo1(d1;d1; (global void)
+0:60      Function Call: foo1(d1;d1; (temp void)
 0:60        Convert float to double (temp double)
 0:60          'f' (temp float)
 0:60        'd' (temp double)
-0:61      Function Call: foo1(d1;u1; (global void)
+0:61      Function Call: foo1(d1;u1; (temp void)
 0:61        Convert float to double (temp double)
 0:61          'f' (temp float)
 0:61        'u' (temp uint)
-0:62      Function Call: foo1(d1;i1; (global void)
+0:62      Function Call: foo1(d1;i1; (temp void)
 0:62        Convert float to double (temp double)
 0:62          'f' (temp float)
 0:62        'i' (temp int)
-0:63      Function Call: foo1(d1;f1; (global void)
+0:63      Function Call: foo1(d1;f1; (temp void)
 0:63        Convert float to double (temp double)
 0:63          'f' (temp float)
 0:63        'f' (temp float)
-0:65      Function Call: foo1(d1;b1; (global void)
+0:65      Function Call: foo1(d1;b1; (temp void)
 0:65        Convert uint to double (temp double)
 0:65          'u' (temp uint)
 0:65        'b' (temp bool)
-0:66      Function Call: foo1(d1;d1; (global void)
+0:66      Function Call: foo1(d1;d1; (temp void)
 0:66        Convert uint to double (temp double)
 0:66          'u' (temp uint)
 0:66        'd' (temp double)
-0:67      Function Call: foo1(d1;u1; (global void)
+0:67      Function Call: foo1(d1;u1; (temp void)
 0:67        Convert uint to double (temp double)
 0:67          'u' (temp uint)
 0:67        'u' (temp uint)
-0:68      Function Call: foo1(d1;i1; (global void)
+0:68      Function Call: foo1(d1;i1; (temp void)
 0:68        Convert uint to double (temp double)
 0:68          'u' (temp uint)
 0:68        'i' (temp int)
-0:69      Function Call: foo1(d1;f1; (global void)
+0:69      Function Call: foo1(d1;f1; (temp void)
 0:69        Convert uint to double (temp double)
 0:69          'u' (temp uint)
 0:69        'f' (temp float)
-0:71      Function Call: foo1(d1;b1; (global void)
+0:71      Function Call: foo1(d1;b1; (temp void)
 0:71        Convert int to double (temp double)
 0:71          'i' (temp int)
 0:71        'b' (temp bool)
-0:72      Function Call: foo1(d1;d1; (global void)
+0:72      Function Call: foo1(d1;d1; (temp void)
 0:72        Convert int to double (temp double)
 0:72          'i' (temp int)
 0:72        'd' (temp double)
-0:73      Function Call: foo1(d1;u1; (global void)
+0:73      Function Call: foo1(d1;u1; (temp void)
 0:73        Convert int to double (temp double)
 0:73          'i' (temp int)
 0:73        'u' (temp uint)
-0:74      Function Call: foo1(d1;i1; (global void)
+0:74      Function Call: foo1(d1;i1; (temp void)
 0:74        Convert int to double (temp double)
 0:74          'i' (temp int)
 0:74        'i' (temp int)
-0:75      Function Call: foo1(d1;f1; (global void)
+0:75      Function Call: foo1(d1;f1; (temp void)
 0:75        Convert int to double (temp double)
 0:75          'i' (temp int)
 0:75        'f' (temp float)
-0:77      Function Call: foo2(i1;b1; (global void)
+0:77      Function Call: foo2(i1;b1; (temp void)
 0:77        Convert uint to int (temp int)
 0:77          'u' (temp uint)
 0:77        'b' (temp bool)
-0:78      Function Call: foo2(i1;d1; (global void)
+0:78      Function Call: foo2(i1;d1; (temp void)
 0:78        Convert uint to int (temp int)
 0:78          'u' (temp uint)
 0:78        'd' (temp double)
-0:79      Function Call: foo2(i1;u1; (global void)
+0:79      Function Call: foo2(i1;u1; (temp void)
 0:79        Convert uint to int (temp int)
 0:79          'u' (temp uint)
 0:79        'u' (temp uint)
-0:80      Function Call: foo2(i1;i1; (global void)
+0:80      Function Call: foo2(i1;i1; (temp void)
 0:80        Convert uint to int (temp int)
 0:80          'u' (temp uint)
 0:80        'i' (temp int)
-0:81      Function Call: foo2(i1;f1; (global void)
+0:81      Function Call: foo2(i1;f1; (temp void)
 0:81        Convert uint to int (temp int)
 0:81          'u' (temp uint)
 0:81        'f' (temp float)
-0:83      Function Call: foo2(i1;b1; (global void)
+0:83      Function Call: foo2(i1;b1; (temp void)
 0:83        'i' (temp int)
 0:83        'b' (temp bool)
-0:84      Function Call: foo2(i1;d1; (global void)
+0:84      Function Call: foo2(i1;d1; (temp void)
 0:84        'i' (temp int)
 0:84        'd' (temp double)
-0:85      Function Call: foo2(i1;u1; (global void)
+0:85      Function Call: foo2(i1;u1; (temp void)
 0:85        'i' (temp int)
 0:85        'u' (temp uint)
-0:86      Function Call: foo2(i1;i1; (global void)
+0:86      Function Call: foo2(i1;i1; (temp void)
 0:86        'i' (temp int)
 0:86        'i' (temp int)
-0:87      Function Call: foo2(i1;f1; (global void)
+0:87      Function Call: foo2(i1;f1; (temp void)
 0:87        'i' (temp int)
 0:87        'f' (temp float)
-0:89      Function Call: foo3(b1; (global void)
+0:89      Function Call: foo3(b1; (temp void)
 0:89        'b' (temp bool)
-0:90      Function Call: foo3(b1; (global void)
+0:90      Function Call: foo3(b1; (temp void)
 0:90        Convert double to bool (temp bool)
 0:90          'd' (temp double)
-0:91      Function Call: foo3(b1; (global void)
+0:91      Function Call: foo3(b1; (temp void)
 0:91        Convert uint to bool (temp bool)
 0:91          'u' (temp uint)
-0:92      Function Call: foo3(b1; (global void)
+0:92      Function Call: foo3(b1; (temp void)
 0:92        Convert int to bool (temp bool)
 0:92          'i' (temp int)
-0:93      Function Call: foo3(b1; (global void)
+0:93      Function Call: foo3(b1; (temp void)
 0:93        Convert float to bool (temp bool)
 0:93          'f' (temp float)
-0:95      Function Call: foo4(u1; (global void)
+0:95      Function Call: foo4(u1; (temp void)
 0:95        Convert bool to uint (temp uint)
 0:95          'b' (temp bool)
-0:96      Function Call: foo4(u1; (global void)
+0:96      Function Call: foo4(u1; (temp void)
 0:96        Convert double to uint (temp uint)
 0:96          'd' (temp double)
-0:97      Function Call: foo4(u1; (global void)
+0:97      Function Call: foo4(u1; (temp void)
 0:97        'u' (temp uint)
-0:98      Function Call: foo4(u1; (global void)
+0:98      Function Call: foo4(u1; (temp void)
 0:98        Convert int to uint (temp uint)
 0:98          'i' (temp int)
-0:99      Function Call: foo4(u1; (global void)
+0:99      Function Call: foo4(u1; (temp void)
 0:99        Convert float to uint (temp uint)
 0:99          'f' (temp float)
-0:101      Function Call: foo5(i1; (global void)
+0:101      Function Call: foo5(i1; (temp void)
 0:101        Convert bool to int (temp int)
 0:101          'b' (temp bool)
-0:102      Function Call: foo5(i1; (global void)
+0:102      Function Call: foo5(i1; (temp void)
 0:102        Convert double to int (temp int)
 0:102          'd' (temp double)
-0:103      Function Call: foo5(i1; (global void)
+0:103      Function Call: foo5(i1; (temp void)
 0:103        Convert uint to int (temp int)
 0:103          'u' (temp uint)
-0:104      Function Call: foo5(i1; (global void)
+0:104      Function Call: foo5(i1; (temp void)
 0:104        'i' (temp int)
-0:105      Function Call: foo5(i1; (global void)
+0:105      Function Call: foo5(i1; (temp void)
 0:105        Convert float to int (temp int)
 0:105          'f' (temp float)
-0:107      Function Call: foo6(f1; (global void)
+0:107      Function Call: foo6(f1; (temp void)
 0:107        Convert bool to float (temp float)
 0:107          'b' (temp bool)
-0:108      Function Call: foo6(f1; (global void)
+0:108      Function Call: foo6(f1; (temp void)
 0:108        Convert double to float (temp float)
 0:108          'd' (temp double)
-0:109      Function Call: foo6(f1; (global void)
+0:109      Function Call: foo6(f1; (temp void)
 0:109        Convert uint to float (temp float)
 0:109          'u' (temp uint)
-0:110      Function Call: foo6(f1; (global void)
+0:110      Function Call: foo6(f1; (temp void)
 0:110        Convert int to float (temp float)
 0:110          'i' (temp int)
-0:111      Function Call: foo6(f1; (global void)
+0:111      Function Call: foo6(f1; (temp void)
 0:111        'f' (temp float)
-0:113      Function Call: foo7(d1; (global void)
+0:113      Function Call: foo7(d1; (temp void)
 0:113        Convert bool to double (temp double)
 0:113          'b' (temp bool)
-0:114      Function Call: foo7(d1; (global void)
+0:114      Function Call: foo7(d1; (temp void)
 0:114        'd' (temp double)
-0:115      Function Call: foo7(d1; (global void)
+0:115      Function Call: foo7(d1; (temp void)
 0:115        Convert uint to double (temp double)
 0:115          'u' (temp uint)
-0:116      Function Call: foo7(d1; (global void)
+0:116      Function Call: foo7(d1; (temp void)
 0:116        Convert int to double (temp double)
 0:116          'i' (temp int)
-0:117      Function Call: foo7(d1; (global void)
+0:117      Function Call: foo7(d1; (temp void)
 0:117        Convert float to double (temp double)
 0:117          'f' (temp float)
-0:119      Function Call: foo8(f1; (global void)
+0:119      Function Call: foo8(f1; (temp void)
 0:119        Convert bool to float (temp float)
 0:119          'b' (temp bool)
-0:120      Function Call: foo8(f1; (global void)
+0:120      Function Call: foo8(f1; (temp void)
 0:120        Convert uint to float (temp float)
 0:120          'u' (temp uint)
-0:121      Function Call: foo8(f1; (global void)
+0:121      Function Call: foo8(f1; (temp void)
 0:121        Convert int to float (temp float)
 0:121          'i' (temp int)
-0:123      Function Call: foo9(i1; (global void)
+0:123      Function Call: foo9(i1; (temp void)
 0:123        Convert bool to int (temp int)
 0:123          'b' (temp bool)
-0:124      Function Call: foo9(u1; (global void)
+0:124      Function Call: foo9(u1; (temp void)
 0:124        Convert float to uint (temp uint)
 0:124          'f' (temp float)
-0:125      Function Call: foo9(u1; (global void)
+0:125      Function Call: foo9(u1; (temp void)
 0:125        Convert double to uint (temp uint)
 0:125          'd' (temp double)
-0:127      Function Call: foo10(i1; (global void)
+0:127      Function Call: foo10(i1; (temp void)
 0:127        Convert uint to int (temp int)
 0:127          'u' (temp uint)
-0:128      Function Call: foo10(i1; (global void)
+0:128      Function Call: foo10(i1; (temp void)
 0:128        Convert float to int (temp int)
 0:128          'f' (temp float)
-0:129      Function Call: foo10(i1; (global void)
+0:129      Function Call: foo10(i1; (temp void)
 0:129        Convert double to int (temp int)
 0:129          'd' (temp double)
-0:131      Function Call: foo11(u1; (global void)
+0:131      Function Call: foo11(u1; (temp void)
 0:131        Convert bool to uint (temp uint)
 0:131          'b' (temp bool)
-0:132      Function Call: foo11(d1; (global void)
+0:132      Function Call: foo11(d1; (temp void)
 0:132        Convert float to double (temp double)
 0:132          'f' (temp float)
-0:133      Function Call: foo12(vd3; (global void)
+0:133      Function Call: foo12(vd3; (temp void)
 0:133        Convert float to double (temp 3-component vector of double)
 0:133          Construct vec3 (temp 3-component vector of float)
 0:133            'f' (temp float)
-0:134      Function Call: foo16(vu2; (global void)
+0:134      Function Call: foo16(vu2; (temp void)
 0:?         Convert int to uint (temp 2-component vector of uint)
 0:?           Construct ivec2 (temp 2-component vector of int)
 0:134            'i' (temp int)
 0:134            'i' (temp int)
-0:136      Function Call: foo13(vf3; (global void)
+0:136      Function Call: foo13(vf3; (temp void)
 0:136        Construct vec3 (in 3-component vector of float)
 0:136          'f' (temp float)
-0:137      Function Call: foo14(vi1; (global void)
+0:137      Function Call: foo14(vi1; (temp void)
 0:137        Construct int (in 1-component vector of int)
 0:137          Construct ivec4 (temp 4-component vector of int)
 0:137            'i' (temp int)
-0:138      Function Call: foo15(vb1; (global void)
+0:138      Function Call: foo15(vb1; (temp void)
 0:138        Construct bool (in 1-component vector of bool)
 0:138          'b' (temp bool)
-0:139      Function Call: foo15(vb1; (global void)
+0:139      Function Call: foo15(vb1; (temp void)
 0:139        Construct bool (in 1-component vector of bool)
 0:139          Construct bvec3 (temp 3-component vector of bool)
 0:139            'b' (temp bool)
@@ -364,349 +364,349 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: foo1(d1;b1; (global void)
+0:2  Function Definition: foo1(d1;b1; (temp void)
 0:2    Function Parameters: 
 0:2      'a' (in double)
 0:2      'b' (in bool)
-0:3  Function Definition: foo1(d1;u1; (global void)
+0:3  Function Definition: foo1(d1;u1; (temp void)
 0:3    Function Parameters: 
 0:3      'a' (in double)
 0:3      'b' (in uint)
-0:4  Function Definition: foo1(d1;i1; (global void)
+0:4  Function Definition: foo1(d1;i1; (temp void)
 0:4    Function Parameters: 
 0:4      'a' (in double)
 0:4      'b' (in int)
-0:5  Function Definition: foo1(d1;f1; (global void)
+0:5  Function Definition: foo1(d1;f1; (temp void)
 0:5    Function Parameters: 
 0:5      'a' (in double)
 0:5      'b' (in float)
-0:6  Function Definition: foo1(d1;d1; (global void)
+0:6  Function Definition: foo1(d1;d1; (temp void)
 0:6    Function Parameters: 
 0:6      'a' (in double)
 0:6      'b' (in double)
-0:9  Function Definition: foo2(i1;b1; (global void)
+0:9  Function Definition: foo2(i1;b1; (temp void)
 0:9    Function Parameters: 
 0:9      'a' (in int)
 0:9      'b' (in bool)
-0:10  Function Definition: foo2(i1;u1; (global void)
+0:10  Function Definition: foo2(i1;u1; (temp void)
 0:10    Function Parameters: 
 0:10      'a' (in int)
 0:10      'b' (in uint)
-0:11  Function Definition: foo2(i1;i1; (global void)
+0:11  Function Definition: foo2(i1;i1; (temp void)
 0:11    Function Parameters: 
 0:11      'a' (in int)
 0:11      'b' (in int)
-0:12  Function Definition: foo2(i1;f1; (global void)
+0:12  Function Definition: foo2(i1;f1; (temp void)
 0:12    Function Parameters: 
 0:12      'a' (in int)
 0:12      'b' (in float)
-0:13  Function Definition: foo2(i1;d1; (global void)
+0:13  Function Definition: foo2(i1;d1; (temp void)
 0:13    Function Parameters: 
 0:13      'a' (in int)
 0:13      'b' (in double)
-0:16  Function Definition: foo3(b1; (global void)
+0:16  Function Definition: foo3(b1; (temp void)
 0:16    Function Parameters: 
 0:16      'b' (in bool)
-0:17  Function Definition: foo4(u1; (global void)
+0:17  Function Definition: foo4(u1; (temp void)
 0:17    Function Parameters: 
 0:17      'b' (in uint)
-0:18  Function Definition: foo5(i1; (global void)
+0:18  Function Definition: foo5(i1; (temp void)
 0:18    Function Parameters: 
 0:18      'b' (in int)
-0:19  Function Definition: foo6(f1; (global void)
+0:19  Function Definition: foo6(f1; (temp void)
 0:19    Function Parameters: 
 0:19      'b' (in float)
-0:20  Function Definition: foo7(d1; (global void)
+0:20  Function Definition: foo7(d1; (temp void)
 0:20    Function Parameters: 
 0:20      'b' (in double)
-0:23  Function Definition: foo8(f1; (global void)
+0:23  Function Definition: foo8(f1; (temp void)
 0:23    Function Parameters: 
 0:23      '' (in float)
-0:24  Function Definition: foo8(d1; (global void)
+0:24  Function Definition: foo8(d1; (temp void)
 0:24    Function Parameters: 
 0:24      '' (in double)
-0:25  Function Definition: foo9(i1; (global void)
+0:25  Function Definition: foo9(i1; (temp void)
 0:25    Function Parameters: 
 0:25      '' (in int)
-0:26  Function Definition: foo9(u1; (global void)
+0:26  Function Definition: foo9(u1; (temp void)
 0:26    Function Parameters: 
 0:26      '' (in uint)
-0:27  Function Definition: foo10(b1; (global void)
+0:27  Function Definition: foo10(b1; (temp void)
 0:27    Function Parameters: 
 0:27      '' (in bool)
-0:28  Function Definition: foo10(i1; (global void)
+0:28  Function Definition: foo10(i1; (temp void)
 0:28    Function Parameters: 
 0:28      '' (in int)
-0:31  Function Definition: foo11(vf3; (global void)
+0:31  Function Definition: foo11(vf3; (temp void)
 0:31    Function Parameters: 
 0:31      '' (in 3-component vector of float)
-0:32  Function Definition: foo11(d1; (global void)
+0:32  Function Definition: foo11(d1; (temp void)
 0:32    Function Parameters: 
 0:32      '' (in double)
-0:33  Function Definition: foo11(vi3; (global void)
+0:33  Function Definition: foo11(vi3; (temp void)
 0:33    Function Parameters: 
 0:33      '' (in 3-component vector of int)
-0:34  Function Definition: foo11(u1; (global void)
+0:34  Function Definition: foo11(u1; (temp void)
 0:34    Function Parameters: 
 0:34      '' (in uint)
-0:35  Function Definition: foo12(vf1; (global void)
+0:35  Function Definition: foo12(vf1; (temp void)
 0:35    Function Parameters: 
 0:35      '' (in 1-component vector of float)
-0:36  Function Definition: foo12(vd3; (global void)
+0:36  Function Definition: foo12(vd3; (temp void)
 0:36    Function Parameters: 
 0:36      '' (in 3-component vector of double)
-0:37  Function Definition: foo16(u1; (global void)
+0:37  Function Definition: foo16(u1; (temp void)
 0:37    Function Parameters: 
 0:37      '' (in uint)
-0:38  Function Definition: foo16(vu2; (global void)
+0:38  Function Definition: foo16(vu2; (temp void)
 0:38    Function Parameters: 
 0:38      '' (in 2-component vector of uint)
-0:41  Function Definition: foo13(vf3; (global void)
+0:41  Function Definition: foo13(vf3; (temp void)
 0:41    Function Parameters: 
 0:41      '' (in 3-component vector of float)
-0:42  Function Definition: foo14(vi1; (global void)
+0:42  Function Definition: foo14(vi1; (temp void)
 0:42    Function Parameters: 
 0:42      '' (in 1-component vector of int)
-0:43  Function Definition: foo15(vb1; (global void)
+0:43  Function Definition: foo15(vb1; (temp void)
 0:43    Function Parameters: 
 0:43      '' (in 1-component vector of bool)
-0:46  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:46  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:46    Function Parameters: 
 0:46      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
-0:53      Function Call: foo1(d1;b1; (global void)
+0:53      Function Call: foo1(d1;b1; (temp void)
 0:53        'd' (temp double)
 0:53        'b' (temp bool)
-0:54      Function Call: foo1(d1;d1; (global void)
+0:54      Function Call: foo1(d1;d1; (temp void)
 0:54        'd' (temp double)
 0:54        'd' (temp double)
-0:55      Function Call: foo1(d1;u1; (global void)
+0:55      Function Call: foo1(d1;u1; (temp void)
 0:55        'd' (temp double)
 0:55        'u' (temp uint)
-0:56      Function Call: foo1(d1;i1; (global void)
+0:56      Function Call: foo1(d1;i1; (temp void)
 0:56        'd' (temp double)
 0:56        'i' (temp int)
-0:57      Function Call: foo1(d1;f1; (global void)
+0:57      Function Call: foo1(d1;f1; (temp void)
 0:57        'd' (temp double)
 0:57        'f' (temp float)
-0:59      Function Call: foo1(d1;b1; (global void)
+0:59      Function Call: foo1(d1;b1; (temp void)
 0:59        Convert float to double (temp double)
 0:59          'f' (temp float)
 0:59        'b' (temp bool)
-0:60      Function Call: foo1(d1;d1; (global void)
+0:60      Function Call: foo1(d1;d1; (temp void)
 0:60        Convert float to double (temp double)
 0:60          'f' (temp float)
 0:60        'd' (temp double)
-0:61      Function Call: foo1(d1;u1; (global void)
+0:61      Function Call: foo1(d1;u1; (temp void)
 0:61        Convert float to double (temp double)
 0:61          'f' (temp float)
 0:61        'u' (temp uint)
-0:62      Function Call: foo1(d1;i1; (global void)
+0:62      Function Call: foo1(d1;i1; (temp void)
 0:62        Convert float to double (temp double)
 0:62          'f' (temp float)
 0:62        'i' (temp int)
-0:63      Function Call: foo1(d1;f1; (global void)
+0:63      Function Call: foo1(d1;f1; (temp void)
 0:63        Convert float to double (temp double)
 0:63          'f' (temp float)
 0:63        'f' (temp float)
-0:65      Function Call: foo1(d1;b1; (global void)
+0:65      Function Call: foo1(d1;b1; (temp void)
 0:65        Convert uint to double (temp double)
 0:65          'u' (temp uint)
 0:65        'b' (temp bool)
-0:66      Function Call: foo1(d1;d1; (global void)
+0:66      Function Call: foo1(d1;d1; (temp void)
 0:66        Convert uint to double (temp double)
 0:66          'u' (temp uint)
 0:66        'd' (temp double)
-0:67      Function Call: foo1(d1;u1; (global void)
+0:67      Function Call: foo1(d1;u1; (temp void)
 0:67        Convert uint to double (temp double)
 0:67          'u' (temp uint)
 0:67        'u' (temp uint)
-0:68      Function Call: foo1(d1;i1; (global void)
+0:68      Function Call: foo1(d1;i1; (temp void)
 0:68        Convert uint to double (temp double)
 0:68          'u' (temp uint)
 0:68        'i' (temp int)
-0:69      Function Call: foo1(d1;f1; (global void)
+0:69      Function Call: foo1(d1;f1; (temp void)
 0:69        Convert uint to double (temp double)
 0:69          'u' (temp uint)
 0:69        'f' (temp float)
-0:71      Function Call: foo1(d1;b1; (global void)
+0:71      Function Call: foo1(d1;b1; (temp void)
 0:71        Convert int to double (temp double)
 0:71          'i' (temp int)
 0:71        'b' (temp bool)
-0:72      Function Call: foo1(d1;d1; (global void)
+0:72      Function Call: foo1(d1;d1; (temp void)
 0:72        Convert int to double (temp double)
 0:72          'i' (temp int)
 0:72        'd' (temp double)
-0:73      Function Call: foo1(d1;u1; (global void)
+0:73      Function Call: foo1(d1;u1; (temp void)
 0:73        Convert int to double (temp double)
 0:73          'i' (temp int)
 0:73        'u' (temp uint)
-0:74      Function Call: foo1(d1;i1; (global void)
+0:74      Function Call: foo1(d1;i1; (temp void)
 0:74        Convert int to double (temp double)
 0:74          'i' (temp int)
 0:74        'i' (temp int)
-0:75      Function Call: foo1(d1;f1; (global void)
+0:75      Function Call: foo1(d1;f1; (temp void)
 0:75        Convert int to double (temp double)
 0:75          'i' (temp int)
 0:75        'f' (temp float)
-0:77      Function Call: foo2(i1;b1; (global void)
+0:77      Function Call: foo2(i1;b1; (temp void)
 0:77        Convert uint to int (temp int)
 0:77          'u' (temp uint)
 0:77        'b' (temp bool)
-0:78      Function Call: foo2(i1;d1; (global void)
+0:78      Function Call: foo2(i1;d1; (temp void)
 0:78        Convert uint to int (temp int)
 0:78          'u' (temp uint)
 0:78        'd' (temp double)
-0:79      Function Call: foo2(i1;u1; (global void)
+0:79      Function Call: foo2(i1;u1; (temp void)
 0:79        Convert uint to int (temp int)
 0:79          'u' (temp uint)
 0:79        'u' (temp uint)
-0:80      Function Call: foo2(i1;i1; (global void)
+0:80      Function Call: foo2(i1;i1; (temp void)
 0:80        Convert uint to int (temp int)
 0:80          'u' (temp uint)
 0:80        'i' (temp int)
-0:81      Function Call: foo2(i1;f1; (global void)
+0:81      Function Call: foo2(i1;f1; (temp void)
 0:81        Convert uint to int (temp int)
 0:81          'u' (temp uint)
 0:81        'f' (temp float)
-0:83      Function Call: foo2(i1;b1; (global void)
+0:83      Function Call: foo2(i1;b1; (temp void)
 0:83        'i' (temp int)
 0:83        'b' (temp bool)
-0:84      Function Call: foo2(i1;d1; (global void)
+0:84      Function Call: foo2(i1;d1; (temp void)
 0:84        'i' (temp int)
 0:84        'd' (temp double)
-0:85      Function Call: foo2(i1;u1; (global void)
+0:85      Function Call: foo2(i1;u1; (temp void)
 0:85        'i' (temp int)
 0:85        'u' (temp uint)
-0:86      Function Call: foo2(i1;i1; (global void)
+0:86      Function Call: foo2(i1;i1; (temp void)
 0:86        'i' (temp int)
 0:86        'i' (temp int)
-0:87      Function Call: foo2(i1;f1; (global void)
+0:87      Function Call: foo2(i1;f1; (temp void)
 0:87        'i' (temp int)
 0:87        'f' (temp float)
-0:89      Function Call: foo3(b1; (global void)
+0:89      Function Call: foo3(b1; (temp void)
 0:89        'b' (temp bool)
-0:90      Function Call: foo3(b1; (global void)
+0:90      Function Call: foo3(b1; (temp void)
 0:90        Convert double to bool (temp bool)
 0:90          'd' (temp double)
-0:91      Function Call: foo3(b1; (global void)
+0:91      Function Call: foo3(b1; (temp void)
 0:91        Convert uint to bool (temp bool)
 0:91          'u' (temp uint)
-0:92      Function Call: foo3(b1; (global void)
+0:92      Function Call: foo3(b1; (temp void)
 0:92        Convert int to bool (temp bool)
 0:92          'i' (temp int)
-0:93      Function Call: foo3(b1; (global void)
+0:93      Function Call: foo3(b1; (temp void)
 0:93        Convert float to bool (temp bool)
 0:93          'f' (temp float)
-0:95      Function Call: foo4(u1; (global void)
+0:95      Function Call: foo4(u1; (temp void)
 0:95        Convert bool to uint (temp uint)
 0:95          'b' (temp bool)
-0:96      Function Call: foo4(u1; (global void)
+0:96      Function Call: foo4(u1; (temp void)
 0:96        Convert double to uint (temp uint)
 0:96          'd' (temp double)
-0:97      Function Call: foo4(u1; (global void)
+0:97      Function Call: foo4(u1; (temp void)
 0:97        'u' (temp uint)
-0:98      Function Call: foo4(u1; (global void)
+0:98      Function Call: foo4(u1; (temp void)
 0:98        Convert int to uint (temp uint)
 0:98          'i' (temp int)
-0:99      Function Call: foo4(u1; (global void)
+0:99      Function Call: foo4(u1; (temp void)
 0:99        Convert float to uint (temp uint)
 0:99          'f' (temp float)
-0:101      Function Call: foo5(i1; (global void)
+0:101      Function Call: foo5(i1; (temp void)
 0:101        Convert bool to int (temp int)
 0:101          'b' (temp bool)
-0:102      Function Call: foo5(i1; (global void)
+0:102      Function Call: foo5(i1; (temp void)
 0:102        Convert double to int (temp int)
 0:102          'd' (temp double)
-0:103      Function Call: foo5(i1; (global void)
+0:103      Function Call: foo5(i1; (temp void)
 0:103        Convert uint to int (temp int)
 0:103          'u' (temp uint)
-0:104      Function Call: foo5(i1; (global void)
+0:104      Function Call: foo5(i1; (temp void)
 0:104        'i' (temp int)
-0:105      Function Call: foo5(i1; (global void)
+0:105      Function Call: foo5(i1; (temp void)
 0:105        Convert float to int (temp int)
 0:105          'f' (temp float)
-0:107      Function Call: foo6(f1; (global void)
+0:107      Function Call: foo6(f1; (temp void)
 0:107        Convert bool to float (temp float)
 0:107          'b' (temp bool)
-0:108      Function Call: foo6(f1; (global void)
+0:108      Function Call: foo6(f1; (temp void)
 0:108        Convert double to float (temp float)
 0:108          'd' (temp double)
-0:109      Function Call: foo6(f1; (global void)
+0:109      Function Call: foo6(f1; (temp void)
 0:109        Convert uint to float (temp float)
 0:109          'u' (temp uint)
-0:110      Function Call: foo6(f1; (global void)
+0:110      Function Call: foo6(f1; (temp void)
 0:110        Convert int to float (temp float)
 0:110          'i' (temp int)
-0:111      Function Call: foo6(f1; (global void)
+0:111      Function Call: foo6(f1; (temp void)
 0:111        'f' (temp float)
-0:113      Function Call: foo7(d1; (global void)
+0:113      Function Call: foo7(d1; (temp void)
 0:113        Convert bool to double (temp double)
 0:113          'b' (temp bool)
-0:114      Function Call: foo7(d1; (global void)
+0:114      Function Call: foo7(d1; (temp void)
 0:114        'd' (temp double)
-0:115      Function Call: foo7(d1; (global void)
+0:115      Function Call: foo7(d1; (temp void)
 0:115        Convert uint to double (temp double)
 0:115          'u' (temp uint)
-0:116      Function Call: foo7(d1; (global void)
+0:116      Function Call: foo7(d1; (temp void)
 0:116        Convert int to double (temp double)
 0:116          'i' (temp int)
-0:117      Function Call: foo7(d1; (global void)
+0:117      Function Call: foo7(d1; (temp void)
 0:117        Convert float to double (temp double)
 0:117          'f' (temp float)
-0:119      Function Call: foo8(f1; (global void)
+0:119      Function Call: foo8(f1; (temp void)
 0:119        Convert bool to float (temp float)
 0:119          'b' (temp bool)
-0:120      Function Call: foo8(f1; (global void)
+0:120      Function Call: foo8(f1; (temp void)
 0:120        Convert uint to float (temp float)
 0:120          'u' (temp uint)
-0:121      Function Call: foo8(f1; (global void)
+0:121      Function Call: foo8(f1; (temp void)
 0:121        Convert int to float (temp float)
 0:121          'i' (temp int)
-0:123      Function Call: foo9(i1; (global void)
+0:123      Function Call: foo9(i1; (temp void)
 0:123        Convert bool to int (temp int)
 0:123          'b' (temp bool)
-0:124      Function Call: foo9(u1; (global void)
+0:124      Function Call: foo9(u1; (temp void)
 0:124        Convert float to uint (temp uint)
 0:124          'f' (temp float)
-0:125      Function Call: foo9(u1; (global void)
+0:125      Function Call: foo9(u1; (temp void)
 0:125        Convert double to uint (temp uint)
 0:125          'd' (temp double)
-0:127      Function Call: foo10(i1; (global void)
+0:127      Function Call: foo10(i1; (temp void)
 0:127        Convert uint to int (temp int)
 0:127          'u' (temp uint)
-0:128      Function Call: foo10(i1; (global void)
+0:128      Function Call: foo10(i1; (temp void)
 0:128        Convert float to int (temp int)
 0:128          'f' (temp float)
-0:129      Function Call: foo10(i1; (global void)
+0:129      Function Call: foo10(i1; (temp void)
 0:129        Convert double to int (temp int)
 0:129          'd' (temp double)
-0:131      Function Call: foo11(u1; (global void)
+0:131      Function Call: foo11(u1; (temp void)
 0:131        Convert bool to uint (temp uint)
 0:131          'b' (temp bool)
-0:132      Function Call: foo11(d1; (global void)
+0:132      Function Call: foo11(d1; (temp void)
 0:132        Convert float to double (temp double)
 0:132          'f' (temp float)
-0:133      Function Call: foo12(vd3; (global void)
+0:133      Function Call: foo12(vd3; (temp void)
 0:133        Convert float to double (temp 3-component vector of double)
 0:133          Construct vec3 (temp 3-component vector of float)
 0:133            'f' (temp float)
-0:134      Function Call: foo16(vu2; (global void)
+0:134      Function Call: foo16(vu2; (temp void)
 0:?         Convert int to uint (temp 2-component vector of uint)
 0:?           Construct ivec2 (temp 2-component vector of int)
 0:134            'i' (temp int)
 0:134            'i' (temp int)
-0:136      Function Call: foo13(vf3; (global void)
+0:136      Function Call: foo13(vf3; (temp void)
 0:136        Construct vec3 (in 3-component vector of float)
 0:136          'f' (temp float)
-0:137      Function Call: foo14(vi1; (global void)
+0:137      Function Call: foo14(vi1; (temp void)
 0:137        Construct int (in 1-component vector of int)
 0:137          Construct ivec4 (temp 4-component vector of int)
 0:137            'i' (temp int)
-0:138      Function Call: foo15(vb1; (global void)
+0:138      Function Call: foo15(vb1; (temp void)
 0:138        Construct bool (in 1-component vector of bool)
 0:138          'b' (temp bool)
-0:139      Function Call: foo15(vb1; (global void)
+0:139      Function Call: foo15(vb1; (temp void)
 0:139        Construct bool (in 1-component vector of bool)
 0:139          Construct bvec3 (temp 3-component vector of bool)
 0:139            'b' (temp bool)
diff --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out
index 95a2f25a6..281b680b2 100644
--- a/Test/baseResults/hlsl.pp.line.frag.out
+++ b/Test/baseResults/hlsl.pp.line.frag.out
@@ -2,7 +2,7 @@ hlsl.pp.line.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:4  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:4  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:4    Function Parameters: 
 0:?     Sequence
 0:124      Sequence
@@ -57,7 +57,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:4  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:4  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:4    Function Parameters: 
 0:?     Sequence
 0:124      Sequence
diff --git a/Test/baseResults/hlsl.precedence.frag.out b/Test/baseResults/hlsl.precedence.frag.out
index e6338470c..1e18a405b 100755
--- a/Test/baseResults/hlsl.precedence.frag.out
+++ b/Test/baseResults/hlsl.precedence.frag.out
@@ -2,7 +2,7 @@ hlsl.precedence.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:7  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float)
+0:7  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float)
 0:7    Function Parameters: 
 0:7      'a1' (layout(location=0 ) in 4-component vector of float)
 0:7      'a2' (layout(location=1 ) in 4-component vector of float)
@@ -59,7 +59,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:7  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float)
+0:7  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (temp 4-component vector of float)
 0:7    Function Parameters: 
 0:7      'a1' (layout(location=0 ) in 4-component vector of float)
 0:7      'a2' (layout(location=1 ) in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.precedence2.frag.out b/Test/baseResults/hlsl.precedence2.frag.out
index 7021837b7..64cce2c73 100755
--- a/Test/baseResults/hlsl.precedence2.frag.out
+++ b/Test/baseResults/hlsl.precedence2.frag.out
@@ -2,7 +2,7 @@ hlsl.precedence2.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:7  Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int)
+0:7  Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
 0:7    Function Parameters: 
 0:7      'a1' (layout(location=0 ) in int)
 0:7      'a2' (layout(location=1 ) in int)
@@ -42,7 +42,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:7  Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int)
+0:7  Function Definition: PixelShaderFunction(i1;i1;i1;i1; (temp int)
 0:7    Function Parameters: 
 0:7      'a1' (layout(location=0 ) in int)
 0:7      'a2' (layout(location=1 ) in int)
diff --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out
index d76dc3f00..40b6c4d9c 100644
--- a/Test/baseResults/hlsl.precise.frag.out
+++ b/Test/baseResults/hlsl.precise.frag.out
@@ -2,11 +2,11 @@ hlsl.precise.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:6  Function Definition: MyFunction(f1;vf3; (global void)
+0:6  Function Definition: MyFunction(f1;vf3; (temp void)
 0:6    Function Parameters: 
 0:6      'myfloat' (noContraction in float)
 0:6      'myfloat3' (noContraction out 3-component vector of float)
-0:9  Function Definition: main( (global structure{noContraction temp 4-component vector of float color})
+0:9  Function Definition: main( (temp structure{noContraction temp 4-component vector of float color})
 0:9    Function Parameters: 
 0:?     Sequence
 0:11      move second child to first child (noContraction temp 4-component vector of float)
@@ -39,11 +39,11 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:6  Function Definition: MyFunction(f1;vf3; (global void)
+0:6  Function Definition: MyFunction(f1;vf3; (temp void)
 0:6    Function Parameters: 
 0:6      'myfloat' (noContraction in float)
 0:6      'myfloat3' (noContraction out 3-component vector of float)
-0:9  Function Definition: main( (global structure{noContraction temp 4-component vector of float color})
+0:9  Function Definition: main( (temp structure{noContraction temp 4-component vector of float color})
 0:9    Function Parameters: 
 0:?     Sequence
 0:11      move second child to first child (noContraction temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out
index 3f1c78863..25238beb8 100644
--- a/Test/baseResults/hlsl.promotions.frag.out
+++ b/Test/baseResults/hlsl.promotions.frag.out
@@ -2,472 +2,748 @@ hlsl.promotions.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:19  Function Definition: Fn_F3(vf3; (global void)
+0:19  Function Definition: Fn_F3(vf3; (temp void)
 0:19    Function Parameters: 
 0:19      'x' (in 3-component vector of float)
-0:20  Function Definition: Fn_I3(vi3; (global void)
+0:20  Function Definition: Fn_I3(vi3; (temp void)
 0:20    Function Parameters: 
 0:20      'x' (in 3-component vector of int)
-0:21  Function Definition: Fn_U3(vu3; (global void)
+0:21  Function Definition: Fn_U3(vu3; (temp void)
 0:21    Function Parameters: 
 0:21      'x' (in 3-component vector of uint)
-0:22  Function Definition: Fn_B3(vb3; (global void)
+0:22  Function Definition: Fn_B3(vb3; (temp void)
 0:22    Function Parameters: 
 0:22      'x' (in 3-component vector of bool)
-0:23  Function Definition: Fn_D3(vd3; (global void)
+0:23  Function Definition: Fn_D3(vd3; (temp void)
 0:23    Function Parameters: 
 0:23      'x' (in 3-component vector of double)
-0:26  Function Definition: Fn_R_F3I(vf3; (global 3-component vector of float)
+0:26  Function Definition: Fn_R_F3I(vf3; (temp 3-component vector of float)
 0:26    Function Parameters: 
 0:26      'p' (out 3-component vector of float)
 0:?     Sequence
 0:26      move second child to first child (temp 3-component vector of float)
 0:26        'p' (out 3-component vector of float)
 0:26        Convert int to float (temp 3-component vector of float)
-0:26          'i3' (uniform 3-component vector of int)
+0:26          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:26            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:26            Constant:
+0:26              0 (const uint)
 0:26      Branch: Return with expression
 0:26        Convert int to float (temp 3-component vector of float)
-0:26          'i3' (uniform 3-component vector of int)
-0:27  Function Definition: Fn_R_F3U(vf3; (global 3-component vector of float)
+0:26          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:26            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:26            Constant:
+0:26              0 (const uint)
+0:27  Function Definition: Fn_R_F3U(vf3; (temp 3-component vector of float)
 0:27    Function Parameters: 
 0:27      'p' (out 3-component vector of float)
 0:?     Sequence
 0:27      move second child to first child (temp 3-component vector of float)
 0:27        'p' (out 3-component vector of float)
 0:27        Convert uint to float (temp 3-component vector of float)
-0:27          'u3' (uniform 3-component vector of uint)
+0:27          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:27            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:27            Constant:
+0:27              3 (const uint)
 0:27      Branch: Return with expression
 0:27        Convert uint to float (temp 3-component vector of float)
-0:27          'u3' (uniform 3-component vector of uint)
-0:28  Function Definition: Fn_R_F3B(vf3; (global 3-component vector of float)
+0:27          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:27            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:27            Constant:
+0:27              3 (const uint)
+0:28  Function Definition: Fn_R_F3B(vf3; (temp 3-component vector of float)
 0:28    Function Parameters: 
 0:28      'p' (out 3-component vector of float)
 0:?     Sequence
 0:28      move second child to first child (temp 3-component vector of float)
 0:28        'p' (out 3-component vector of float)
 0:28        Convert bool to float (temp 3-component vector of float)
-0:28          'b3' (uniform 3-component vector of bool)
+0:28          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:28            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:28            Constant:
+0:28              1 (const uint)
 0:28      Branch: Return with expression
 0:28        Convert bool to float (temp 3-component vector of float)
-0:28          'b3' (uniform 3-component vector of bool)
-0:29  Function Definition: Fn_R_F3D(vf3; (global 3-component vector of float)
+0:28          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:28            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:28            Constant:
+0:28              1 (const uint)
+0:29  Function Definition: Fn_R_F3D(vf3; (temp 3-component vector of float)
 0:29    Function Parameters: 
 0:29      'p' (out 3-component vector of float)
 0:?     Sequence
 0:29      move second child to first child (temp 3-component vector of float)
 0:29        'p' (out 3-component vector of float)
 0:29        Convert double to float (temp 3-component vector of float)
-0:29          'd3' (uniform 3-component vector of double)
+0:29          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:29            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:29            Constant:
+0:29              4 (const uint)
 0:29      Branch: Return with expression
 0:29        Convert double to float (temp 3-component vector of float)
-0:29          'd3' (uniform 3-component vector of double)
-0:31  Function Definition: Fn_R_I3U(vi3; (global 3-component vector of int)
+0:29          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:29            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:29            Constant:
+0:29              4 (const uint)
+0:31  Function Definition: Fn_R_I3U(vi3; (temp 3-component vector of int)
 0:31    Function Parameters: 
 0:31      'p' (out 3-component vector of int)
 0:?     Sequence
 0:31      move second child to first child (temp 3-component vector of int)
 0:31        'p' (out 3-component vector of int)
 0:31        Convert uint to int (temp 3-component vector of int)
-0:31          'u3' (uniform 3-component vector of uint)
+0:31          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:31            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:31            Constant:
+0:31              3 (const uint)
 0:31      Branch: Return with expression
 0:31        Convert uint to int (temp 3-component vector of int)
-0:31          'u3' (uniform 3-component vector of uint)
-0:32  Function Definition: Fn_R_I3B(vi3; (global 3-component vector of int)
+0:31          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:31            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:31            Constant:
+0:31              3 (const uint)
+0:32  Function Definition: Fn_R_I3B(vi3; (temp 3-component vector of int)
 0:32    Function Parameters: 
 0:32      'p' (out 3-component vector of int)
 0:?     Sequence
 0:32      move second child to first child (temp 3-component vector of int)
 0:32        'p' (out 3-component vector of int)
 0:32        Convert bool to int (temp 3-component vector of int)
-0:32          'b3' (uniform 3-component vector of bool)
+0:32          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:32            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:32            Constant:
+0:32              1 (const uint)
 0:32      Branch: Return with expression
 0:32        Convert bool to int (temp 3-component vector of int)
-0:32          'b3' (uniform 3-component vector of bool)
-0:33  Function Definition: Fn_R_I3F(vi3; (global 3-component vector of int)
+0:32          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:32            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:32            Constant:
+0:32              1 (const uint)
+0:33  Function Definition: Fn_R_I3F(vi3; (temp 3-component vector of int)
 0:33    Function Parameters: 
 0:33      'p' (out 3-component vector of int)
 0:?     Sequence
 0:33      move second child to first child (temp 3-component vector of int)
 0:33        'p' (out 3-component vector of int)
 0:33        Convert float to int (temp 3-component vector of int)
-0:33          'f3' (uniform 3-component vector of float)
+0:33          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:33            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:33            Constant:
+0:33              2 (const uint)
 0:33      Branch: Return with expression
 0:33        Convert float to int (temp 3-component vector of int)
-0:33          'f3' (uniform 3-component vector of float)
-0:34  Function Definition: Fn_R_I3D(vi3; (global 3-component vector of int)
+0:33          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:33            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:33            Constant:
+0:33              2 (const uint)
+0:34  Function Definition: Fn_R_I3D(vi3; (temp 3-component vector of int)
 0:34    Function Parameters: 
 0:34      'p' (out 3-component vector of int)
 0:?     Sequence
 0:34      move second child to first child (temp 3-component vector of int)
 0:34        'p' (out 3-component vector of int)
 0:34        Convert double to int (temp 3-component vector of int)
-0:34          'd3' (uniform 3-component vector of double)
+0:34          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:34            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:34            Constant:
+0:34              4 (const uint)
 0:34      Branch: Return with expression
 0:34        Convert double to int (temp 3-component vector of int)
-0:34          'd3' (uniform 3-component vector of double)
-0:36  Function Definition: Fn_R_U3I(vu3; (global 3-component vector of uint)
+0:34          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:34            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:34            Constant:
+0:34              4 (const uint)
+0:36  Function Definition: Fn_R_U3I(vu3; (temp 3-component vector of uint)
 0:36    Function Parameters: 
 0:36      'p' (out 3-component vector of uint)
 0:?     Sequence
 0:36      move second child to first child (temp 3-component vector of uint)
 0:36        'p' (out 3-component vector of uint)
 0:36        Convert int to uint (temp 3-component vector of uint)
-0:36          'i3' (uniform 3-component vector of int)
+0:36          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:36            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:36            Constant:
+0:36              0 (const uint)
 0:36      Branch: Return with expression
 0:36        Convert int to uint (temp 3-component vector of uint)
-0:36          'i3' (uniform 3-component vector of int)
-0:37  Function Definition: Fn_R_U3F(vu3; (global 3-component vector of uint)
+0:36          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:36            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:36            Constant:
+0:36              0 (const uint)
+0:37  Function Definition: Fn_R_U3F(vu3; (temp 3-component vector of uint)
 0:37    Function Parameters: 
 0:37      'p' (out 3-component vector of uint)
 0:?     Sequence
 0:37      move second child to first child (temp 3-component vector of uint)
 0:37        'p' (out 3-component vector of uint)
 0:37        Convert float to uint (temp 3-component vector of uint)
-0:37          'f3' (uniform 3-component vector of float)
+0:37          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:37            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:37            Constant:
+0:37              2 (const uint)
 0:37      Branch: Return with expression
 0:37        Convert float to uint (temp 3-component vector of uint)
-0:37          'f3' (uniform 3-component vector of float)
-0:38  Function Definition: Fn_R_U3B(vu3; (global 3-component vector of uint)
+0:37          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:37            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:37            Constant:
+0:37              2 (const uint)
+0:38  Function Definition: Fn_R_U3B(vu3; (temp 3-component vector of uint)
 0:38    Function Parameters: 
 0:38      'p' (out 3-component vector of uint)
 0:?     Sequence
 0:38      move second child to first child (temp 3-component vector of uint)
 0:38        'p' (out 3-component vector of uint)
 0:38        Convert bool to uint (temp 3-component vector of uint)
-0:38          'b3' (uniform 3-component vector of bool)
+0:38          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:38            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:38            Constant:
+0:38              1 (const uint)
 0:38      Branch: Return with expression
 0:38        Convert bool to uint (temp 3-component vector of uint)
-0:38          'b3' (uniform 3-component vector of bool)
-0:39  Function Definition: Fn_R_U3D(vu3; (global 3-component vector of uint)
+0:38          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:38            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:38            Constant:
+0:38              1 (const uint)
+0:39  Function Definition: Fn_R_U3D(vu3; (temp 3-component vector of uint)
 0:39    Function Parameters: 
 0:39      'p' (out 3-component vector of uint)
 0:?     Sequence
 0:39      move second child to first child (temp 3-component vector of uint)
 0:39        'p' (out 3-component vector of uint)
 0:39        Convert double to uint (temp 3-component vector of uint)
-0:39          'd3' (uniform 3-component vector of double)
+0:39          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:39            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:39            Constant:
+0:39              4 (const uint)
 0:39      Branch: Return with expression
 0:39        Convert double to uint (temp 3-component vector of uint)
-0:39          'd3' (uniform 3-component vector of double)
-0:41  Function Definition: Fn_R_B3I(vb3; (global 3-component vector of bool)
+0:39          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:39            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:39            Constant:
+0:39              4 (const uint)
+0:41  Function Definition: Fn_R_B3I(vb3; (temp 3-component vector of bool)
 0:41    Function Parameters: 
 0:41      'p' (out 3-component vector of bool)
 0:?     Sequence
 0:41      move second child to first child (temp 3-component vector of bool)
 0:41        'p' (out 3-component vector of bool)
 0:41        Convert int to bool (temp 3-component vector of bool)
-0:41          'i3' (uniform 3-component vector of int)
+0:41          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:41            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:41            Constant:
+0:41              0 (const uint)
 0:41      Branch: Return with expression
 0:41        Convert int to bool (temp 3-component vector of bool)
-0:41          'i3' (uniform 3-component vector of int)
-0:42  Function Definition: Fn_R_B3U(vb3; (global 3-component vector of bool)
+0:41          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:41            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:41            Constant:
+0:41              0 (const uint)
+0:42  Function Definition: Fn_R_B3U(vb3; (temp 3-component vector of bool)
 0:42    Function Parameters: 
 0:42      'p' (out 3-component vector of bool)
 0:?     Sequence
 0:42      move second child to first child (temp 3-component vector of bool)
 0:42        'p' (out 3-component vector of bool)
 0:42        Convert uint to bool (temp 3-component vector of bool)
-0:42          'u3' (uniform 3-component vector of uint)
+0:42          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:42            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:42            Constant:
+0:42              3 (const uint)
 0:42      Branch: Return with expression
 0:42        Convert uint to bool (temp 3-component vector of bool)
-0:42          'u3' (uniform 3-component vector of uint)
-0:43  Function Definition: Fn_R_B3F(vb3; (global 3-component vector of bool)
+0:42          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:42            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:42            Constant:
+0:42              3 (const uint)
+0:43  Function Definition: Fn_R_B3F(vb3; (temp 3-component vector of bool)
 0:43    Function Parameters: 
 0:43      'p' (out 3-component vector of bool)
 0:?     Sequence
 0:43      move second child to first child (temp 3-component vector of bool)
 0:43        'p' (out 3-component vector of bool)
 0:43        Convert float to bool (temp 3-component vector of bool)
-0:43          'f3' (uniform 3-component vector of float)
+0:43          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:43            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:43            Constant:
+0:43              2 (const uint)
 0:43      Branch: Return with expression
 0:43        Convert float to bool (temp 3-component vector of bool)
-0:43          'f3' (uniform 3-component vector of float)
-0:44  Function Definition: Fn_R_B3D(vb3; (global 3-component vector of bool)
+0:43          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:43            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:43            Constant:
+0:43              2 (const uint)
+0:44  Function Definition: Fn_R_B3D(vb3; (temp 3-component vector of bool)
 0:44    Function Parameters: 
 0:44      'p' (out 3-component vector of bool)
 0:?     Sequence
 0:44      move second child to first child (temp 3-component vector of bool)
 0:44        'p' (out 3-component vector of bool)
 0:44        Convert double to bool (temp 3-component vector of bool)
-0:44          'd3' (uniform 3-component vector of double)
+0:44          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:44            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:44            Constant:
+0:44              4 (const uint)
 0:44      Branch: Return with expression
 0:44        Convert double to bool (temp 3-component vector of bool)
-0:44          'd3' (uniform 3-component vector of double)
-0:46  Function Definition: Fn_R_D3I(vd3; (global 3-component vector of double)
+0:44          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:44            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:44            Constant:
+0:44              4 (const uint)
+0:46  Function Definition: Fn_R_D3I(vd3; (temp 3-component vector of double)
 0:46    Function Parameters: 
 0:46      'p' (out 3-component vector of double)
 0:?     Sequence
 0:46      move second child to first child (temp 3-component vector of double)
 0:46        'p' (out 3-component vector of double)
 0:46        Convert int to double (temp 3-component vector of double)
-0:46          'i3' (uniform 3-component vector of int)
+0:46          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:46            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:46            Constant:
+0:46              0 (const uint)
 0:46      Branch: Return with expression
 0:46        Convert int to double (temp 3-component vector of double)
-0:46          'i3' (uniform 3-component vector of int)
-0:47  Function Definition: Fn_R_D3U(vd3; (global 3-component vector of double)
+0:46          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:46            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:46            Constant:
+0:46              0 (const uint)
+0:47  Function Definition: Fn_R_D3U(vd3; (temp 3-component vector of double)
 0:47    Function Parameters: 
 0:47      'p' (out 3-component vector of double)
 0:?     Sequence
 0:47      move second child to first child (temp 3-component vector of double)
 0:47        'p' (out 3-component vector of double)
 0:47        Convert uint to double (temp 3-component vector of double)
-0:47          'u3' (uniform 3-component vector of uint)
+0:47          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:47            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:47            Constant:
+0:47              3 (const uint)
 0:47      Branch: Return with expression
 0:47        Convert uint to double (temp 3-component vector of double)
-0:47          'u3' (uniform 3-component vector of uint)
-0:48  Function Definition: Fn_R_D3B(vd3; (global 3-component vector of double)
+0:47          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:47            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:47            Constant:
+0:47              3 (const uint)
+0:48  Function Definition: Fn_R_D3B(vd3; (temp 3-component vector of double)
 0:48    Function Parameters: 
 0:48      'p' (out 3-component vector of double)
 0:?     Sequence
 0:48      move second child to first child (temp 3-component vector of double)
 0:48        'p' (out 3-component vector of double)
 0:48        Convert bool to double (temp 3-component vector of double)
-0:48          'b3' (uniform 3-component vector of bool)
+0:48          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:48            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:48            Constant:
+0:48              1 (const uint)
 0:48      Branch: Return with expression
 0:48        Convert bool to double (temp 3-component vector of double)
-0:48          'b3' (uniform 3-component vector of bool)
-0:49  Function Definition: Fn_R_D3F(vd3; (global 3-component vector of double)
+0:48          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:48            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:48            Constant:
+0:48              1 (const uint)
+0:49  Function Definition: Fn_R_D3F(vd3; (temp 3-component vector of double)
 0:49    Function Parameters: 
 0:49      'p' (out 3-component vector of double)
 0:?     Sequence
 0:49      move second child to first child (temp 3-component vector of double)
 0:49        'p' (out 3-component vector of double)
 0:49        Convert float to double (temp 3-component vector of double)
-0:49          'f3' (uniform 3-component vector of float)
+0:49          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:49            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:49            Constant:
+0:49              2 (const uint)
 0:49      Branch: Return with expression
 0:49        Convert float to double (temp 3-component vector of double)
-0:49          'f3' (uniform 3-component vector of float)
-0:52  Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:49          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:49            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:49            Constant:
+0:49              2 (const uint)
+0:52  Function Definition: main( (temp structure{temp 4-component vector of float Color})
 0:52    Function Parameters: 
 0:?     Sequence
 0:54      Sequence
 0:54        move second child to first child (temp 3-component vector of float)
 0:54          'r00' (temp 3-component vector of float)
 0:54          Convert int to float (temp 3-component vector of float)
-0:54            'i3' (uniform 3-component vector of int)
+0:54            i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:54              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:54              Constant:
+0:54                0 (const uint)
 0:55      Sequence
 0:55        move second child to first child (temp 3-component vector of float)
 0:55          'r01' (temp 3-component vector of float)
 0:55          Convert bool to float (temp 3-component vector of float)
-0:55            'b3' (uniform 3-component vector of bool)
+0:55            b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:55              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:55              Constant:
+0:55                1 (const uint)
 0:56      Sequence
 0:56        move second child to first child (temp 3-component vector of float)
 0:56          'r02' (temp 3-component vector of float)
 0:56          Convert uint to float (temp 3-component vector of float)
-0:56            'u3' (uniform 3-component vector of uint)
+0:56            u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:56              Constant:
+0:56                3 (const uint)
 0:57      Sequence
 0:57        move second child to first child (temp 3-component vector of float)
 0:57          'r03' (temp 3-component vector of float)
 0:57          Convert double to float (temp 3-component vector of float)
-0:57            'd3' (uniform 3-component vector of double)
+0:57            d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:57              Constant:
+0:57                4 (const uint)
 0:59      Sequence
 0:59        move second child to first child (temp 3-component vector of int)
 0:59          'r10' (temp 3-component vector of int)
 0:59          Convert bool to int (temp 3-component vector of int)
-0:59            'b3' (uniform 3-component vector of bool)
+0:59            b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:59              Constant:
+0:59                1 (const uint)
 0:60      Sequence
 0:60        move second child to first child (temp 3-component vector of int)
 0:60          'r11' (temp 3-component vector of int)
 0:60          Convert uint to int (temp 3-component vector of int)
-0:60            'u3' (uniform 3-component vector of uint)
+0:60            u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:60              Constant:
+0:60                3 (const uint)
 0:61      Sequence
 0:61        move second child to first child (temp 3-component vector of int)
 0:61          'r12' (temp 3-component vector of int)
 0:61          Convert float to int (temp 3-component vector of int)
-0:61            'f3' (uniform 3-component vector of float)
+0:61            f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:61              Constant:
+0:61                2 (const uint)
 0:62      Sequence
 0:62        move second child to first child (temp 3-component vector of int)
 0:62          'r13' (temp 3-component vector of int)
 0:62          Convert double to int (temp 3-component vector of int)
-0:62            'd3' (uniform 3-component vector of double)
+0:62            d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:62              Constant:
+0:62                4 (const uint)
 0:64      Sequence
 0:64        move second child to first child (temp 3-component vector of uint)
 0:64          'r20' (temp 3-component vector of uint)
 0:64          Convert bool to uint (temp 3-component vector of uint)
-0:64            'b3' (uniform 3-component vector of bool)
+0:64            b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:64              Constant:
+0:64                1 (const uint)
 0:65      Sequence
 0:65        move second child to first child (temp 3-component vector of uint)
 0:65          'r21' (temp 3-component vector of uint)
 0:65          Convert int to uint (temp 3-component vector of uint)
-0:65            'i3' (uniform 3-component vector of int)
+0:65            i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:65              Constant:
+0:65                0 (const uint)
 0:66      Sequence
 0:66        move second child to first child (temp 3-component vector of uint)
 0:66          'r22' (temp 3-component vector of uint)
 0:66          Convert float to uint (temp 3-component vector of uint)
-0:66            'f3' (uniform 3-component vector of float)
+0:66            f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:66              Constant:
+0:66                2 (const uint)
 0:67      Sequence
 0:67        move second child to first child (temp 3-component vector of uint)
 0:67          'r23' (temp 3-component vector of uint)
 0:67          Convert double to uint (temp 3-component vector of uint)
-0:67            'd3' (uniform 3-component vector of double)
+0:67            d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:67              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:67              Constant:
+0:67                4 (const uint)
 0:69      Sequence
 0:69        move second child to first child (temp 3-component vector of bool)
 0:69          'r30' (temp 3-component vector of bool)
 0:69          Convert int to bool (temp 3-component vector of bool)
-0:69            'i3' (uniform 3-component vector of int)
+0:69            i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:69              Constant:
+0:69                0 (const uint)
 0:70      Sequence
 0:70        move second child to first child (temp 3-component vector of bool)
 0:70          'r31' (temp 3-component vector of bool)
 0:70          Convert uint to bool (temp 3-component vector of bool)
-0:70            'u3' (uniform 3-component vector of uint)
+0:70            u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:70              Constant:
+0:70                3 (const uint)
 0:71      Sequence
 0:71        move second child to first child (temp 3-component vector of bool)
 0:71          'r32' (temp 3-component vector of bool)
 0:71          Convert float to bool (temp 3-component vector of bool)
-0:71            'f3' (uniform 3-component vector of float)
+0:71            f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:71              Constant:
+0:71                2 (const uint)
 0:72      Sequence
 0:72        move second child to first child (temp 3-component vector of bool)
 0:72          'r33' (temp 3-component vector of bool)
 0:72          Convert double to bool (temp 3-component vector of bool)
-0:72            'd3' (uniform 3-component vector of double)
+0:72            d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:72              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:72              Constant:
+0:72                4 (const uint)
 0:74      Sequence
 0:74        move second child to first child (temp 3-component vector of double)
 0:74          'r40' (temp 3-component vector of double)
 0:74          Convert int to double (temp 3-component vector of double)
-0:74            'i3' (uniform 3-component vector of int)
+0:74            i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:74              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:74              Constant:
+0:74                0 (const uint)
 0:75      Sequence
 0:75        move second child to first child (temp 3-component vector of double)
 0:75          'r41' (temp 3-component vector of double)
 0:75          Convert uint to double (temp 3-component vector of double)
-0:75            'u3' (uniform 3-component vector of uint)
+0:75            u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:75              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:75              Constant:
+0:75                3 (const uint)
 0:76      Sequence
 0:76        move second child to first child (temp 3-component vector of double)
 0:76          'r42' (temp 3-component vector of double)
 0:76          Convert float to double (temp 3-component vector of double)
-0:76            'f3' (uniform 3-component vector of float)
+0:76            f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:76              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:76              Constant:
+0:76                2 (const uint)
 0:77      Sequence
 0:77        move second child to first child (temp 3-component vector of double)
 0:77          'r43' (temp 3-component vector of double)
 0:77          Convert bool to double (temp 3-component vector of double)
-0:77            'b3' (uniform 3-component vector of bool)
+0:77            b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:77              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:77              Constant:
+0:77                1 (const uint)
 0:80      multiply second child into first child (temp 3-component vector of float)
 0:80        'r00' (temp 3-component vector of float)
 0:80        Convert int to float (temp 3-component vector of float)
-0:80          'i3' (uniform 3-component vector of int)
+0:80          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:80            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:80            Constant:
+0:80              0 (const uint)
 0:81      multiply second child into first child (temp 3-component vector of float)
 0:81        'r01' (temp 3-component vector of float)
 0:81        Convert bool to float (temp 3-component vector of float)
-0:81          'b3' (uniform 3-component vector of bool)
+0:81          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:81            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:81            Constant:
+0:81              1 (const uint)
 0:82      multiply second child into first child (temp 3-component vector of float)
 0:82        'r02' (temp 3-component vector of float)
 0:82        Convert uint to float (temp 3-component vector of float)
-0:82          'u3' (uniform 3-component vector of uint)
+0:82          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:82            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:82            Constant:
+0:82              3 (const uint)
 0:83      multiply second child into first child (temp 3-component vector of float)
 0:83        'r03' (temp 3-component vector of float)
 0:83        Convert double to float (temp 3-component vector of float)
-0:83          'd3' (uniform 3-component vector of double)
+0:83          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:83            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:83            Constant:
+0:83              4 (const uint)
 0:85      multiply second child into first child (temp 3-component vector of int)
 0:85        'r10' (temp 3-component vector of int)
 0:85        Convert bool to int (temp 3-component vector of int)
-0:85          'b3' (uniform 3-component vector of bool)
+0:85          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:85            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:85            Constant:
+0:85              1 (const uint)
 0:86      multiply second child into first child (temp 3-component vector of int)
 0:86        'r11' (temp 3-component vector of int)
 0:86        Convert uint to int (temp 3-component vector of int)
-0:86          'u3' (uniform 3-component vector of uint)
+0:86          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:86            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:86            Constant:
+0:86              3 (const uint)
 0:87      multiply second child into first child (temp 3-component vector of int)
 0:87        'r12' (temp 3-component vector of int)
 0:87        Convert float to int (temp 3-component vector of int)
-0:87          'f3' (uniform 3-component vector of float)
+0:87          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:87            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:87            Constant:
+0:87              2 (const uint)
 0:88      multiply second child into first child (temp 3-component vector of int)
 0:88        'r13' (temp 3-component vector of int)
 0:88        Convert double to int (temp 3-component vector of int)
-0:88          'd3' (uniform 3-component vector of double)
+0:88          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:88            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:88            Constant:
+0:88              4 (const uint)
 0:90      multiply second child into first child (temp 3-component vector of uint)
 0:90        'r20' (temp 3-component vector of uint)
 0:90        Convert bool to uint (temp 3-component vector of uint)
-0:90          'b3' (uniform 3-component vector of bool)
+0:90          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:90            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:90            Constant:
+0:90              1 (const uint)
 0:91      multiply second child into first child (temp 3-component vector of uint)
 0:91        'r21' (temp 3-component vector of uint)
 0:91        Convert int to uint (temp 3-component vector of uint)
-0:91          'i3' (uniform 3-component vector of int)
+0:91          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:91            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:91            Constant:
+0:91              0 (const uint)
 0:92      multiply second child into first child (temp 3-component vector of uint)
 0:92        'r22' (temp 3-component vector of uint)
 0:92        Convert float to uint (temp 3-component vector of uint)
-0:92          'f3' (uniform 3-component vector of float)
+0:92          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:92            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:92            Constant:
+0:92              2 (const uint)
 0:93      multiply second child into first child (temp 3-component vector of uint)
 0:93        'r23' (temp 3-component vector of uint)
 0:93        Convert double to uint (temp 3-component vector of uint)
-0:93          'd3' (uniform 3-component vector of double)
+0:93          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:93            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:93            Constant:
+0:93              4 (const uint)
 0:97      multiply second child into first child (temp 3-component vector of double)
 0:97        'r40' (temp 3-component vector of double)
 0:97        Convert int to double (temp 3-component vector of double)
-0:97          'i3' (uniform 3-component vector of int)
+0:97          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:97            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:97            Constant:
+0:97              0 (const uint)
 0:98      multiply second child into first child (temp 3-component vector of double)
 0:98        'r41' (temp 3-component vector of double)
 0:98        Convert uint to double (temp 3-component vector of double)
-0:98          'u3' (uniform 3-component vector of uint)
+0:98          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:98            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:98            Constant:
+0:98              3 (const uint)
 0:99      multiply second child into first child (temp 3-component vector of double)
 0:99        'r42' (temp 3-component vector of double)
 0:99        Convert float to double (temp 3-component vector of double)
-0:99          'f3' (uniform 3-component vector of float)
+0:99          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:99            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:99            Constant:
+0:99              2 (const uint)
 0:100      multiply second child into first child (temp 3-component vector of double)
 0:100        'r43' (temp 3-component vector of double)
 0:100        Convert bool to double (temp 3-component vector of double)
-0:100          'b3' (uniform 3-component vector of bool)
+0:100          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:100            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:100            Constant:
+0:100              1 (const uint)
 0:103      vector scale second child into first child (temp 3-component vector of float)
 0:103        'r00' (temp 3-component vector of float)
 0:103        Convert int to float (temp float)
-0:103          'is' (uniform int)
+0:103          is: direct index for structure (layout(offset=88 ) uniform int)
+0:103            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:103            Constant:
+0:103              5 (const uint)
 0:104      vector scale second child into first child (temp 3-component vector of float)
 0:104        'r01' (temp 3-component vector of float)
 0:104        Convert bool to float (temp float)
-0:104          'bs' (uniform bool)
+0:104          bs: direct index for structure (layout(offset=92 ) uniform bool)
+0:104            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:104            Constant:
+0:104              6 (const uint)
 0:105      vector scale second child into first child (temp 3-component vector of float)
 0:105        'r02' (temp 3-component vector of float)
 0:105        Convert uint to float (temp float)
-0:105          'us' (uniform uint)
+0:105          us: direct index for structure (layout(offset=100 ) uniform uint)
+0:105            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:105            Constant:
+0:105              8 (const uint)
 0:106      vector scale second child into first child (temp 3-component vector of float)
 0:106        'r03' (temp 3-component vector of float)
 0:106        Convert double to float (temp float)
-0:106          'ds' (uniform double)
+0:106          ds: direct index for structure (layout(offset=104 ) uniform double)
+0:106            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:106            Constant:
+0:106              9 (const uint)
 0:108      vector scale second child into first child (temp 3-component vector of int)
 0:108        'r10' (temp 3-component vector of int)
 0:108        Convert bool to int (temp int)
-0:108          'bs' (uniform bool)
+0:108          bs: direct index for structure (layout(offset=92 ) uniform bool)
+0:108            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:108            Constant:
+0:108              6 (const uint)
 0:109      vector scale second child into first child (temp 3-component vector of int)
 0:109        'r11' (temp 3-component vector of int)
 0:109        Convert uint to int (temp int)
-0:109          'us' (uniform uint)
+0:109          us: direct index for structure (layout(offset=100 ) uniform uint)
+0:109            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:109            Constant:
+0:109              8 (const uint)
 0:110      vector scale second child into first child (temp 3-component vector of int)
 0:110        'r12' (temp 3-component vector of int)
 0:110        Convert float to int (temp int)
-0:110          'fs' (uniform float)
+0:110          fs: direct index for structure (layout(offset=96 ) uniform float)
+0:110            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:110            Constant:
+0:110              7 (const uint)
 0:111      vector scale second child into first child (temp 3-component vector of int)
 0:111        'r13' (temp 3-component vector of int)
 0:111        Convert double to int (temp int)
-0:111          'ds' (uniform double)
+0:111          ds: direct index for structure (layout(offset=104 ) uniform double)
+0:111            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:111            Constant:
+0:111              9 (const uint)
 0:113      vector scale second child into first child (temp 3-component vector of uint)
 0:113        'r20' (temp 3-component vector of uint)
 0:113        Convert bool to uint (temp uint)
-0:113          'bs' (uniform bool)
+0:113          bs: direct index for structure (layout(offset=92 ) uniform bool)
+0:113            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:113            Constant:
+0:113              6 (const uint)
 0:114      vector scale second child into first child (temp 3-component vector of uint)
 0:114        'r21' (temp 3-component vector of uint)
 0:114        Convert int to uint (temp uint)
-0:114          'is' (uniform int)
+0:114          is: direct index for structure (layout(offset=88 ) uniform int)
+0:114            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:114            Constant:
+0:114              5 (const uint)
 0:115      vector scale second child into first child (temp 3-component vector of uint)
 0:115        'r22' (temp 3-component vector of uint)
 0:115        Convert float to uint (temp uint)
-0:115          'fs' (uniform float)
+0:115          fs: direct index for structure (layout(offset=96 ) uniform float)
+0:115            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:115            Constant:
+0:115              7 (const uint)
 0:116      vector scale second child into first child (temp 3-component vector of uint)
 0:116        'r23' (temp 3-component vector of uint)
 0:116        Convert double to uint (temp uint)
-0:116          'ds' (uniform double)
+0:116          ds: direct index for structure (layout(offset=104 ) uniform double)
+0:116            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:116            Constant:
+0:116              9 (const uint)
 0:120      vector scale second child into first child (temp 3-component vector of double)
 0:120        'r40' (temp 3-component vector of double)
 0:120        Convert int to double (temp double)
-0:120          'is' (uniform int)
+0:120          is: direct index for structure (layout(offset=88 ) uniform int)
+0:120            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:120            Constant:
+0:120              5 (const uint)
 0:121      vector scale second child into first child (temp 3-component vector of double)
 0:121        'r41' (temp 3-component vector of double)
 0:121        Convert uint to double (temp double)
-0:121          'us' (uniform uint)
+0:121          us: direct index for structure (layout(offset=100 ) uniform uint)
+0:121            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:121            Constant:
+0:121              8 (const uint)
 0:122      vector scale second child into first child (temp 3-component vector of double)
 0:122        'r42' (temp 3-component vector of double)
 0:122        Convert float to double (temp double)
-0:122          'fs' (uniform float)
+0:122          fs: direct index for structure (layout(offset=96 ) uniform float)
+0:122            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:122            Constant:
+0:122              7 (const uint)
 0:123      vector scale second child into first child (temp 3-component vector of double)
 0:123        'r43' (temp 3-component vector of double)
 0:123        Convert bool to double (temp double)
-0:123          'bs' (uniform bool)
+0:123          bs: direct index for structure (layout(offset=92 ) uniform bool)
+0:123            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:123            Constant:
+0:123              6 (const uint)
 0:193      Sequence
 0:193        move second child to first child (temp int)
 0:193          'c1' (temp int)
@@ -506,16 +782,7 @@ gl_FragCoord origin is upper left
 0:200                0 (const int)
 0:200        Branch: Return
 0:?   Linker Objects
-0:?     'i3' (uniform 3-component vector of int)
-0:?     'b3' (uniform 3-component vector of bool)
-0:?     'f3' (uniform 3-component vector of float)
-0:?     'u3' (uniform 3-component vector of uint)
-0:?     'd3' (uniform 3-component vector of double)
-0:?     'is' (uniform int)
-0:?     'bs' (uniform bool)
-0:?     'fs' (uniform float)
-0:?     'us' (uniform uint)
-0:?     'ds' (uniform double)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 
 
@@ -525,472 +792,748 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:19  Function Definition: Fn_F3(vf3; (global void)
+0:19  Function Definition: Fn_F3(vf3; (temp void)
 0:19    Function Parameters: 
 0:19      'x' (in 3-component vector of float)
-0:20  Function Definition: Fn_I3(vi3; (global void)
+0:20  Function Definition: Fn_I3(vi3; (temp void)
 0:20    Function Parameters: 
 0:20      'x' (in 3-component vector of int)
-0:21  Function Definition: Fn_U3(vu3; (global void)
+0:21  Function Definition: Fn_U3(vu3; (temp void)
 0:21    Function Parameters: 
 0:21      'x' (in 3-component vector of uint)
-0:22  Function Definition: Fn_B3(vb3; (global void)
+0:22  Function Definition: Fn_B3(vb3; (temp void)
 0:22    Function Parameters: 
 0:22      'x' (in 3-component vector of bool)
-0:23  Function Definition: Fn_D3(vd3; (global void)
+0:23  Function Definition: Fn_D3(vd3; (temp void)
 0:23    Function Parameters: 
 0:23      'x' (in 3-component vector of double)
-0:26  Function Definition: Fn_R_F3I(vf3; (global 3-component vector of float)
+0:26  Function Definition: Fn_R_F3I(vf3; (temp 3-component vector of float)
 0:26    Function Parameters: 
 0:26      'p' (out 3-component vector of float)
 0:?     Sequence
 0:26      move second child to first child (temp 3-component vector of float)
 0:26        'p' (out 3-component vector of float)
 0:26        Convert int to float (temp 3-component vector of float)
-0:26          'i3' (uniform 3-component vector of int)
+0:26          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:26            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:26            Constant:
+0:26              0 (const uint)
 0:26      Branch: Return with expression
 0:26        Convert int to float (temp 3-component vector of float)
-0:26          'i3' (uniform 3-component vector of int)
-0:27  Function Definition: Fn_R_F3U(vf3; (global 3-component vector of float)
+0:26          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:26            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:26            Constant:
+0:26              0 (const uint)
+0:27  Function Definition: Fn_R_F3U(vf3; (temp 3-component vector of float)
 0:27    Function Parameters: 
 0:27      'p' (out 3-component vector of float)
 0:?     Sequence
 0:27      move second child to first child (temp 3-component vector of float)
 0:27        'p' (out 3-component vector of float)
 0:27        Convert uint to float (temp 3-component vector of float)
-0:27          'u3' (uniform 3-component vector of uint)
+0:27          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:27            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:27            Constant:
+0:27              3 (const uint)
 0:27      Branch: Return with expression
 0:27        Convert uint to float (temp 3-component vector of float)
-0:27          'u3' (uniform 3-component vector of uint)
-0:28  Function Definition: Fn_R_F3B(vf3; (global 3-component vector of float)
+0:27          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:27            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:27            Constant:
+0:27              3 (const uint)
+0:28  Function Definition: Fn_R_F3B(vf3; (temp 3-component vector of float)
 0:28    Function Parameters: 
 0:28      'p' (out 3-component vector of float)
 0:?     Sequence
 0:28      move second child to first child (temp 3-component vector of float)
 0:28        'p' (out 3-component vector of float)
 0:28        Convert bool to float (temp 3-component vector of float)
-0:28          'b3' (uniform 3-component vector of bool)
+0:28          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:28            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:28            Constant:
+0:28              1 (const uint)
 0:28      Branch: Return with expression
 0:28        Convert bool to float (temp 3-component vector of float)
-0:28          'b3' (uniform 3-component vector of bool)
-0:29  Function Definition: Fn_R_F3D(vf3; (global 3-component vector of float)
+0:28          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:28            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:28            Constant:
+0:28              1 (const uint)
+0:29  Function Definition: Fn_R_F3D(vf3; (temp 3-component vector of float)
 0:29    Function Parameters: 
 0:29      'p' (out 3-component vector of float)
 0:?     Sequence
 0:29      move second child to first child (temp 3-component vector of float)
 0:29        'p' (out 3-component vector of float)
 0:29        Convert double to float (temp 3-component vector of float)
-0:29          'd3' (uniform 3-component vector of double)
+0:29          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:29            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:29            Constant:
+0:29              4 (const uint)
 0:29      Branch: Return with expression
 0:29        Convert double to float (temp 3-component vector of float)
-0:29          'd3' (uniform 3-component vector of double)
-0:31  Function Definition: Fn_R_I3U(vi3; (global 3-component vector of int)
+0:29          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:29            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:29            Constant:
+0:29              4 (const uint)
+0:31  Function Definition: Fn_R_I3U(vi3; (temp 3-component vector of int)
 0:31    Function Parameters: 
 0:31      'p' (out 3-component vector of int)
 0:?     Sequence
 0:31      move second child to first child (temp 3-component vector of int)
 0:31        'p' (out 3-component vector of int)
 0:31        Convert uint to int (temp 3-component vector of int)
-0:31          'u3' (uniform 3-component vector of uint)
+0:31          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:31            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:31            Constant:
+0:31              3 (const uint)
 0:31      Branch: Return with expression
 0:31        Convert uint to int (temp 3-component vector of int)
-0:31          'u3' (uniform 3-component vector of uint)
-0:32  Function Definition: Fn_R_I3B(vi3; (global 3-component vector of int)
+0:31          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:31            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:31            Constant:
+0:31              3 (const uint)
+0:32  Function Definition: Fn_R_I3B(vi3; (temp 3-component vector of int)
 0:32    Function Parameters: 
 0:32      'p' (out 3-component vector of int)
 0:?     Sequence
 0:32      move second child to first child (temp 3-component vector of int)
 0:32        'p' (out 3-component vector of int)
 0:32        Convert bool to int (temp 3-component vector of int)
-0:32          'b3' (uniform 3-component vector of bool)
+0:32          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:32            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:32            Constant:
+0:32              1 (const uint)
 0:32      Branch: Return with expression
 0:32        Convert bool to int (temp 3-component vector of int)
-0:32          'b3' (uniform 3-component vector of bool)
-0:33  Function Definition: Fn_R_I3F(vi3; (global 3-component vector of int)
+0:32          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:32            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:32            Constant:
+0:32              1 (const uint)
+0:33  Function Definition: Fn_R_I3F(vi3; (temp 3-component vector of int)
 0:33    Function Parameters: 
 0:33      'p' (out 3-component vector of int)
 0:?     Sequence
 0:33      move second child to first child (temp 3-component vector of int)
 0:33        'p' (out 3-component vector of int)
 0:33        Convert float to int (temp 3-component vector of int)
-0:33          'f3' (uniform 3-component vector of float)
+0:33          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:33            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:33            Constant:
+0:33              2 (const uint)
 0:33      Branch: Return with expression
 0:33        Convert float to int (temp 3-component vector of int)
-0:33          'f3' (uniform 3-component vector of float)
-0:34  Function Definition: Fn_R_I3D(vi3; (global 3-component vector of int)
+0:33          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:33            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:33            Constant:
+0:33              2 (const uint)
+0:34  Function Definition: Fn_R_I3D(vi3; (temp 3-component vector of int)
 0:34    Function Parameters: 
 0:34      'p' (out 3-component vector of int)
 0:?     Sequence
 0:34      move second child to first child (temp 3-component vector of int)
 0:34        'p' (out 3-component vector of int)
 0:34        Convert double to int (temp 3-component vector of int)
-0:34          'd3' (uniform 3-component vector of double)
+0:34          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:34            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:34            Constant:
+0:34              4 (const uint)
 0:34      Branch: Return with expression
 0:34        Convert double to int (temp 3-component vector of int)
-0:34          'd3' (uniform 3-component vector of double)
-0:36  Function Definition: Fn_R_U3I(vu3; (global 3-component vector of uint)
+0:34          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:34            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:34            Constant:
+0:34              4 (const uint)
+0:36  Function Definition: Fn_R_U3I(vu3; (temp 3-component vector of uint)
 0:36    Function Parameters: 
 0:36      'p' (out 3-component vector of uint)
 0:?     Sequence
 0:36      move second child to first child (temp 3-component vector of uint)
 0:36        'p' (out 3-component vector of uint)
 0:36        Convert int to uint (temp 3-component vector of uint)
-0:36          'i3' (uniform 3-component vector of int)
+0:36          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:36            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:36            Constant:
+0:36              0 (const uint)
 0:36      Branch: Return with expression
 0:36        Convert int to uint (temp 3-component vector of uint)
-0:36          'i3' (uniform 3-component vector of int)
-0:37  Function Definition: Fn_R_U3F(vu3; (global 3-component vector of uint)
+0:36          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:36            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:36            Constant:
+0:36              0 (const uint)
+0:37  Function Definition: Fn_R_U3F(vu3; (temp 3-component vector of uint)
 0:37    Function Parameters: 
 0:37      'p' (out 3-component vector of uint)
 0:?     Sequence
 0:37      move second child to first child (temp 3-component vector of uint)
 0:37        'p' (out 3-component vector of uint)
 0:37        Convert float to uint (temp 3-component vector of uint)
-0:37          'f3' (uniform 3-component vector of float)
+0:37          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:37            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:37            Constant:
+0:37              2 (const uint)
 0:37      Branch: Return with expression
 0:37        Convert float to uint (temp 3-component vector of uint)
-0:37          'f3' (uniform 3-component vector of float)
-0:38  Function Definition: Fn_R_U3B(vu3; (global 3-component vector of uint)
+0:37          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:37            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:37            Constant:
+0:37              2 (const uint)
+0:38  Function Definition: Fn_R_U3B(vu3; (temp 3-component vector of uint)
 0:38    Function Parameters: 
 0:38      'p' (out 3-component vector of uint)
 0:?     Sequence
 0:38      move second child to first child (temp 3-component vector of uint)
 0:38        'p' (out 3-component vector of uint)
 0:38        Convert bool to uint (temp 3-component vector of uint)
-0:38          'b3' (uniform 3-component vector of bool)
+0:38          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:38            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:38            Constant:
+0:38              1 (const uint)
 0:38      Branch: Return with expression
 0:38        Convert bool to uint (temp 3-component vector of uint)
-0:38          'b3' (uniform 3-component vector of bool)
-0:39  Function Definition: Fn_R_U3D(vu3; (global 3-component vector of uint)
+0:38          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:38            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:38            Constant:
+0:38              1 (const uint)
+0:39  Function Definition: Fn_R_U3D(vu3; (temp 3-component vector of uint)
 0:39    Function Parameters: 
 0:39      'p' (out 3-component vector of uint)
 0:?     Sequence
 0:39      move second child to first child (temp 3-component vector of uint)
 0:39        'p' (out 3-component vector of uint)
 0:39        Convert double to uint (temp 3-component vector of uint)
-0:39          'd3' (uniform 3-component vector of double)
+0:39          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:39            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:39            Constant:
+0:39              4 (const uint)
 0:39      Branch: Return with expression
 0:39        Convert double to uint (temp 3-component vector of uint)
-0:39          'd3' (uniform 3-component vector of double)
-0:41  Function Definition: Fn_R_B3I(vb3; (global 3-component vector of bool)
+0:39          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:39            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:39            Constant:
+0:39              4 (const uint)
+0:41  Function Definition: Fn_R_B3I(vb3; (temp 3-component vector of bool)
 0:41    Function Parameters: 
 0:41      'p' (out 3-component vector of bool)
 0:?     Sequence
 0:41      move second child to first child (temp 3-component vector of bool)
 0:41        'p' (out 3-component vector of bool)
 0:41        Convert int to bool (temp 3-component vector of bool)
-0:41          'i3' (uniform 3-component vector of int)
+0:41          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:41            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:41            Constant:
+0:41              0 (const uint)
 0:41      Branch: Return with expression
 0:41        Convert int to bool (temp 3-component vector of bool)
-0:41          'i3' (uniform 3-component vector of int)
-0:42  Function Definition: Fn_R_B3U(vb3; (global 3-component vector of bool)
+0:41          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:41            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:41            Constant:
+0:41              0 (const uint)
+0:42  Function Definition: Fn_R_B3U(vb3; (temp 3-component vector of bool)
 0:42    Function Parameters: 
 0:42      'p' (out 3-component vector of bool)
 0:?     Sequence
 0:42      move second child to first child (temp 3-component vector of bool)
 0:42        'p' (out 3-component vector of bool)
 0:42        Convert uint to bool (temp 3-component vector of bool)
-0:42          'u3' (uniform 3-component vector of uint)
+0:42          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:42            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:42            Constant:
+0:42              3 (const uint)
 0:42      Branch: Return with expression
 0:42        Convert uint to bool (temp 3-component vector of bool)
-0:42          'u3' (uniform 3-component vector of uint)
-0:43  Function Definition: Fn_R_B3F(vb3; (global 3-component vector of bool)
+0:42          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:42            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:42            Constant:
+0:42              3 (const uint)
+0:43  Function Definition: Fn_R_B3F(vb3; (temp 3-component vector of bool)
 0:43    Function Parameters: 
 0:43      'p' (out 3-component vector of bool)
 0:?     Sequence
 0:43      move second child to first child (temp 3-component vector of bool)
 0:43        'p' (out 3-component vector of bool)
 0:43        Convert float to bool (temp 3-component vector of bool)
-0:43          'f3' (uniform 3-component vector of float)
+0:43          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:43            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:43            Constant:
+0:43              2 (const uint)
 0:43      Branch: Return with expression
 0:43        Convert float to bool (temp 3-component vector of bool)
-0:43          'f3' (uniform 3-component vector of float)
-0:44  Function Definition: Fn_R_B3D(vb3; (global 3-component vector of bool)
+0:43          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:43            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:43            Constant:
+0:43              2 (const uint)
+0:44  Function Definition: Fn_R_B3D(vb3; (temp 3-component vector of bool)
 0:44    Function Parameters: 
 0:44      'p' (out 3-component vector of bool)
 0:?     Sequence
 0:44      move second child to first child (temp 3-component vector of bool)
 0:44        'p' (out 3-component vector of bool)
 0:44        Convert double to bool (temp 3-component vector of bool)
-0:44          'd3' (uniform 3-component vector of double)
+0:44          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:44            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:44            Constant:
+0:44              4 (const uint)
 0:44      Branch: Return with expression
 0:44        Convert double to bool (temp 3-component vector of bool)
-0:44          'd3' (uniform 3-component vector of double)
-0:46  Function Definition: Fn_R_D3I(vd3; (global 3-component vector of double)
+0:44          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:44            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:44            Constant:
+0:44              4 (const uint)
+0:46  Function Definition: Fn_R_D3I(vd3; (temp 3-component vector of double)
 0:46    Function Parameters: 
 0:46      'p' (out 3-component vector of double)
 0:?     Sequence
 0:46      move second child to first child (temp 3-component vector of double)
 0:46        'p' (out 3-component vector of double)
 0:46        Convert int to double (temp 3-component vector of double)
-0:46          'i3' (uniform 3-component vector of int)
+0:46          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:46            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:46            Constant:
+0:46              0 (const uint)
 0:46      Branch: Return with expression
 0:46        Convert int to double (temp 3-component vector of double)
-0:46          'i3' (uniform 3-component vector of int)
-0:47  Function Definition: Fn_R_D3U(vd3; (global 3-component vector of double)
+0:46          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:46            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:46            Constant:
+0:46              0 (const uint)
+0:47  Function Definition: Fn_R_D3U(vd3; (temp 3-component vector of double)
 0:47    Function Parameters: 
 0:47      'p' (out 3-component vector of double)
 0:?     Sequence
 0:47      move second child to first child (temp 3-component vector of double)
 0:47        'p' (out 3-component vector of double)
 0:47        Convert uint to double (temp 3-component vector of double)
-0:47          'u3' (uniform 3-component vector of uint)
+0:47          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:47            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:47            Constant:
+0:47              3 (const uint)
 0:47      Branch: Return with expression
 0:47        Convert uint to double (temp 3-component vector of double)
-0:47          'u3' (uniform 3-component vector of uint)
-0:48  Function Definition: Fn_R_D3B(vd3; (global 3-component vector of double)
+0:47          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:47            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:47            Constant:
+0:47              3 (const uint)
+0:48  Function Definition: Fn_R_D3B(vd3; (temp 3-component vector of double)
 0:48    Function Parameters: 
 0:48      'p' (out 3-component vector of double)
 0:?     Sequence
 0:48      move second child to first child (temp 3-component vector of double)
 0:48        'p' (out 3-component vector of double)
 0:48        Convert bool to double (temp 3-component vector of double)
-0:48          'b3' (uniform 3-component vector of bool)
+0:48          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:48            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:48            Constant:
+0:48              1 (const uint)
 0:48      Branch: Return with expression
 0:48        Convert bool to double (temp 3-component vector of double)
-0:48          'b3' (uniform 3-component vector of bool)
-0:49  Function Definition: Fn_R_D3F(vd3; (global 3-component vector of double)
+0:48          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:48            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:48            Constant:
+0:48              1 (const uint)
+0:49  Function Definition: Fn_R_D3F(vd3; (temp 3-component vector of double)
 0:49    Function Parameters: 
 0:49      'p' (out 3-component vector of double)
 0:?     Sequence
 0:49      move second child to first child (temp 3-component vector of double)
 0:49        'p' (out 3-component vector of double)
 0:49        Convert float to double (temp 3-component vector of double)
-0:49          'f3' (uniform 3-component vector of float)
+0:49          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:49            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:49            Constant:
+0:49              2 (const uint)
 0:49      Branch: Return with expression
 0:49        Convert float to double (temp 3-component vector of double)
-0:49          'f3' (uniform 3-component vector of float)
-0:52  Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:49          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:49            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:49            Constant:
+0:49              2 (const uint)
+0:52  Function Definition: main( (temp structure{temp 4-component vector of float Color})
 0:52    Function Parameters: 
 0:?     Sequence
 0:54      Sequence
 0:54        move second child to first child (temp 3-component vector of float)
 0:54          'r00' (temp 3-component vector of float)
 0:54          Convert int to float (temp 3-component vector of float)
-0:54            'i3' (uniform 3-component vector of int)
+0:54            i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:54              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:54              Constant:
+0:54                0 (const uint)
 0:55      Sequence
 0:55        move second child to first child (temp 3-component vector of float)
 0:55          'r01' (temp 3-component vector of float)
 0:55          Convert bool to float (temp 3-component vector of float)
-0:55            'b3' (uniform 3-component vector of bool)
+0:55            b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:55              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:55              Constant:
+0:55                1 (const uint)
 0:56      Sequence
 0:56        move second child to first child (temp 3-component vector of float)
 0:56          'r02' (temp 3-component vector of float)
 0:56          Convert uint to float (temp 3-component vector of float)
-0:56            'u3' (uniform 3-component vector of uint)
+0:56            u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:56              Constant:
+0:56                3 (const uint)
 0:57      Sequence
 0:57        move second child to first child (temp 3-component vector of float)
 0:57          'r03' (temp 3-component vector of float)
 0:57          Convert double to float (temp 3-component vector of float)
-0:57            'd3' (uniform 3-component vector of double)
+0:57            d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:57              Constant:
+0:57                4 (const uint)
 0:59      Sequence
 0:59        move second child to first child (temp 3-component vector of int)
 0:59          'r10' (temp 3-component vector of int)
 0:59          Convert bool to int (temp 3-component vector of int)
-0:59            'b3' (uniform 3-component vector of bool)
+0:59            b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:59              Constant:
+0:59                1 (const uint)
 0:60      Sequence
 0:60        move second child to first child (temp 3-component vector of int)
 0:60          'r11' (temp 3-component vector of int)
 0:60          Convert uint to int (temp 3-component vector of int)
-0:60            'u3' (uniform 3-component vector of uint)
+0:60            u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:60              Constant:
+0:60                3 (const uint)
 0:61      Sequence
 0:61        move second child to first child (temp 3-component vector of int)
 0:61          'r12' (temp 3-component vector of int)
 0:61          Convert float to int (temp 3-component vector of int)
-0:61            'f3' (uniform 3-component vector of float)
+0:61            f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:61              Constant:
+0:61                2 (const uint)
 0:62      Sequence
 0:62        move second child to first child (temp 3-component vector of int)
 0:62          'r13' (temp 3-component vector of int)
 0:62          Convert double to int (temp 3-component vector of int)
-0:62            'd3' (uniform 3-component vector of double)
+0:62            d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:62              Constant:
+0:62                4 (const uint)
 0:64      Sequence
 0:64        move second child to first child (temp 3-component vector of uint)
 0:64          'r20' (temp 3-component vector of uint)
 0:64          Convert bool to uint (temp 3-component vector of uint)
-0:64            'b3' (uniform 3-component vector of bool)
+0:64            b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:64              Constant:
+0:64                1 (const uint)
 0:65      Sequence
 0:65        move second child to first child (temp 3-component vector of uint)
 0:65          'r21' (temp 3-component vector of uint)
 0:65          Convert int to uint (temp 3-component vector of uint)
-0:65            'i3' (uniform 3-component vector of int)
+0:65            i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:65              Constant:
+0:65                0 (const uint)
 0:66      Sequence
 0:66        move second child to first child (temp 3-component vector of uint)
 0:66          'r22' (temp 3-component vector of uint)
 0:66          Convert float to uint (temp 3-component vector of uint)
-0:66            'f3' (uniform 3-component vector of float)
+0:66            f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:66              Constant:
+0:66                2 (const uint)
 0:67      Sequence
 0:67        move second child to first child (temp 3-component vector of uint)
 0:67          'r23' (temp 3-component vector of uint)
 0:67          Convert double to uint (temp 3-component vector of uint)
-0:67            'd3' (uniform 3-component vector of double)
+0:67            d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:67              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:67              Constant:
+0:67                4 (const uint)
 0:69      Sequence
 0:69        move second child to first child (temp 3-component vector of bool)
 0:69          'r30' (temp 3-component vector of bool)
 0:69          Convert int to bool (temp 3-component vector of bool)
-0:69            'i3' (uniform 3-component vector of int)
+0:69            i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:69              Constant:
+0:69                0 (const uint)
 0:70      Sequence
 0:70        move second child to first child (temp 3-component vector of bool)
 0:70          'r31' (temp 3-component vector of bool)
 0:70          Convert uint to bool (temp 3-component vector of bool)
-0:70            'u3' (uniform 3-component vector of uint)
+0:70            u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:70              Constant:
+0:70                3 (const uint)
 0:71      Sequence
 0:71        move second child to first child (temp 3-component vector of bool)
 0:71          'r32' (temp 3-component vector of bool)
 0:71          Convert float to bool (temp 3-component vector of bool)
-0:71            'f3' (uniform 3-component vector of float)
+0:71            f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:71              Constant:
+0:71                2 (const uint)
 0:72      Sequence
 0:72        move second child to first child (temp 3-component vector of bool)
 0:72          'r33' (temp 3-component vector of bool)
 0:72          Convert double to bool (temp 3-component vector of bool)
-0:72            'd3' (uniform 3-component vector of double)
+0:72            d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:72              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:72              Constant:
+0:72                4 (const uint)
 0:74      Sequence
 0:74        move second child to first child (temp 3-component vector of double)
 0:74          'r40' (temp 3-component vector of double)
 0:74          Convert int to double (temp 3-component vector of double)
-0:74            'i3' (uniform 3-component vector of int)
+0:74            i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:74              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:74              Constant:
+0:74                0 (const uint)
 0:75      Sequence
 0:75        move second child to first child (temp 3-component vector of double)
 0:75          'r41' (temp 3-component vector of double)
 0:75          Convert uint to double (temp 3-component vector of double)
-0:75            'u3' (uniform 3-component vector of uint)
+0:75            u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:75              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:75              Constant:
+0:75                3 (const uint)
 0:76      Sequence
 0:76        move second child to first child (temp 3-component vector of double)
 0:76          'r42' (temp 3-component vector of double)
 0:76          Convert float to double (temp 3-component vector of double)
-0:76            'f3' (uniform 3-component vector of float)
+0:76            f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:76              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:76              Constant:
+0:76                2 (const uint)
 0:77      Sequence
 0:77        move second child to first child (temp 3-component vector of double)
 0:77          'r43' (temp 3-component vector of double)
 0:77          Convert bool to double (temp 3-component vector of double)
-0:77            'b3' (uniform 3-component vector of bool)
+0:77            b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:77              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:77              Constant:
+0:77                1 (const uint)
 0:80      multiply second child into first child (temp 3-component vector of float)
 0:80        'r00' (temp 3-component vector of float)
 0:80        Convert int to float (temp 3-component vector of float)
-0:80          'i3' (uniform 3-component vector of int)
+0:80          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:80            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:80            Constant:
+0:80              0 (const uint)
 0:81      multiply second child into first child (temp 3-component vector of float)
 0:81        'r01' (temp 3-component vector of float)
 0:81        Convert bool to float (temp 3-component vector of float)
-0:81          'b3' (uniform 3-component vector of bool)
+0:81          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:81            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:81            Constant:
+0:81              1 (const uint)
 0:82      multiply second child into first child (temp 3-component vector of float)
 0:82        'r02' (temp 3-component vector of float)
 0:82        Convert uint to float (temp 3-component vector of float)
-0:82          'u3' (uniform 3-component vector of uint)
+0:82          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:82            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:82            Constant:
+0:82              3 (const uint)
 0:83      multiply second child into first child (temp 3-component vector of float)
 0:83        'r03' (temp 3-component vector of float)
 0:83        Convert double to float (temp 3-component vector of float)
-0:83          'd3' (uniform 3-component vector of double)
+0:83          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:83            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:83            Constant:
+0:83              4 (const uint)
 0:85      multiply second child into first child (temp 3-component vector of int)
 0:85        'r10' (temp 3-component vector of int)
 0:85        Convert bool to int (temp 3-component vector of int)
-0:85          'b3' (uniform 3-component vector of bool)
+0:85          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:85            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:85            Constant:
+0:85              1 (const uint)
 0:86      multiply second child into first child (temp 3-component vector of int)
 0:86        'r11' (temp 3-component vector of int)
 0:86        Convert uint to int (temp 3-component vector of int)
-0:86          'u3' (uniform 3-component vector of uint)
+0:86          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:86            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:86            Constant:
+0:86              3 (const uint)
 0:87      multiply second child into first child (temp 3-component vector of int)
 0:87        'r12' (temp 3-component vector of int)
 0:87        Convert float to int (temp 3-component vector of int)
-0:87          'f3' (uniform 3-component vector of float)
+0:87          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:87            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:87            Constant:
+0:87              2 (const uint)
 0:88      multiply second child into first child (temp 3-component vector of int)
 0:88        'r13' (temp 3-component vector of int)
 0:88        Convert double to int (temp 3-component vector of int)
-0:88          'd3' (uniform 3-component vector of double)
+0:88          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:88            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:88            Constant:
+0:88              4 (const uint)
 0:90      multiply second child into first child (temp 3-component vector of uint)
 0:90        'r20' (temp 3-component vector of uint)
 0:90        Convert bool to uint (temp 3-component vector of uint)
-0:90          'b3' (uniform 3-component vector of bool)
+0:90          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:90            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:90            Constant:
+0:90              1 (const uint)
 0:91      multiply second child into first child (temp 3-component vector of uint)
 0:91        'r21' (temp 3-component vector of uint)
 0:91        Convert int to uint (temp 3-component vector of uint)
-0:91          'i3' (uniform 3-component vector of int)
+0:91          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:91            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:91            Constant:
+0:91              0 (const uint)
 0:92      multiply second child into first child (temp 3-component vector of uint)
 0:92        'r22' (temp 3-component vector of uint)
 0:92        Convert float to uint (temp 3-component vector of uint)
-0:92          'f3' (uniform 3-component vector of float)
+0:92          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:92            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:92            Constant:
+0:92              2 (const uint)
 0:93      multiply second child into first child (temp 3-component vector of uint)
 0:93        'r23' (temp 3-component vector of uint)
 0:93        Convert double to uint (temp 3-component vector of uint)
-0:93          'd3' (uniform 3-component vector of double)
+0:93          d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double)
+0:93            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:93            Constant:
+0:93              4 (const uint)
 0:97      multiply second child into first child (temp 3-component vector of double)
 0:97        'r40' (temp 3-component vector of double)
 0:97        Convert int to double (temp 3-component vector of double)
-0:97          'i3' (uniform 3-component vector of int)
+0:97          i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int)
+0:97            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:97            Constant:
+0:97              0 (const uint)
 0:98      multiply second child into first child (temp 3-component vector of double)
 0:98        'r41' (temp 3-component vector of double)
 0:98        Convert uint to double (temp 3-component vector of double)
-0:98          'u3' (uniform 3-component vector of uint)
+0:98          u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint)
+0:98            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:98            Constant:
+0:98              3 (const uint)
 0:99      multiply second child into first child (temp 3-component vector of double)
 0:99        'r42' (temp 3-component vector of double)
 0:99        Convert float to double (temp 3-component vector of double)
-0:99          'f3' (uniform 3-component vector of float)
+0:99          f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
+0:99            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:99            Constant:
+0:99              2 (const uint)
 0:100      multiply second child into first child (temp 3-component vector of double)
 0:100        'r43' (temp 3-component vector of double)
 0:100        Convert bool to double (temp 3-component vector of double)
-0:100          'b3' (uniform 3-component vector of bool)
+0:100          b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool)
+0:100            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:100            Constant:
+0:100              1 (const uint)
 0:103      vector scale second child into first child (temp 3-component vector of float)
 0:103        'r00' (temp 3-component vector of float)
 0:103        Convert int to float (temp float)
-0:103          'is' (uniform int)
+0:103          is: direct index for structure (layout(offset=88 ) uniform int)
+0:103            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:103            Constant:
+0:103              5 (const uint)
 0:104      vector scale second child into first child (temp 3-component vector of float)
 0:104        'r01' (temp 3-component vector of float)
 0:104        Convert bool to float (temp float)
-0:104          'bs' (uniform bool)
+0:104          bs: direct index for structure (layout(offset=92 ) uniform bool)
+0:104            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:104            Constant:
+0:104              6 (const uint)
 0:105      vector scale second child into first child (temp 3-component vector of float)
 0:105        'r02' (temp 3-component vector of float)
 0:105        Convert uint to float (temp float)
-0:105          'us' (uniform uint)
+0:105          us: direct index for structure (layout(offset=100 ) uniform uint)
+0:105            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:105            Constant:
+0:105              8 (const uint)
 0:106      vector scale second child into first child (temp 3-component vector of float)
 0:106        'r03' (temp 3-component vector of float)
 0:106        Convert double to float (temp float)
-0:106          'ds' (uniform double)
+0:106          ds: direct index for structure (layout(offset=104 ) uniform double)
+0:106            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:106            Constant:
+0:106              9 (const uint)
 0:108      vector scale second child into first child (temp 3-component vector of int)
 0:108        'r10' (temp 3-component vector of int)
 0:108        Convert bool to int (temp int)
-0:108          'bs' (uniform bool)
+0:108          bs: direct index for structure (layout(offset=92 ) uniform bool)
+0:108            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:108            Constant:
+0:108              6 (const uint)
 0:109      vector scale second child into first child (temp 3-component vector of int)
 0:109        'r11' (temp 3-component vector of int)
 0:109        Convert uint to int (temp int)
-0:109          'us' (uniform uint)
+0:109          us: direct index for structure (layout(offset=100 ) uniform uint)
+0:109            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:109            Constant:
+0:109              8 (const uint)
 0:110      vector scale second child into first child (temp 3-component vector of int)
 0:110        'r12' (temp 3-component vector of int)
 0:110        Convert float to int (temp int)
-0:110          'fs' (uniform float)
+0:110          fs: direct index for structure (layout(offset=96 ) uniform float)
+0:110            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:110            Constant:
+0:110              7 (const uint)
 0:111      vector scale second child into first child (temp 3-component vector of int)
 0:111        'r13' (temp 3-component vector of int)
 0:111        Convert double to int (temp int)
-0:111          'ds' (uniform double)
+0:111          ds: direct index for structure (layout(offset=104 ) uniform double)
+0:111            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:111            Constant:
+0:111              9 (const uint)
 0:113      vector scale second child into first child (temp 3-component vector of uint)
 0:113        'r20' (temp 3-component vector of uint)
 0:113        Convert bool to uint (temp uint)
-0:113          'bs' (uniform bool)
+0:113          bs: direct index for structure (layout(offset=92 ) uniform bool)
+0:113            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:113            Constant:
+0:113              6 (const uint)
 0:114      vector scale second child into first child (temp 3-component vector of uint)
 0:114        'r21' (temp 3-component vector of uint)
 0:114        Convert int to uint (temp uint)
-0:114          'is' (uniform int)
+0:114          is: direct index for structure (layout(offset=88 ) uniform int)
+0:114            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:114            Constant:
+0:114              5 (const uint)
 0:115      vector scale second child into first child (temp 3-component vector of uint)
 0:115        'r22' (temp 3-component vector of uint)
 0:115        Convert float to uint (temp uint)
-0:115          'fs' (uniform float)
+0:115          fs: direct index for structure (layout(offset=96 ) uniform float)
+0:115            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:115            Constant:
+0:115              7 (const uint)
 0:116      vector scale second child into first child (temp 3-component vector of uint)
 0:116        'r23' (temp 3-component vector of uint)
 0:116        Convert double to uint (temp uint)
-0:116          'ds' (uniform double)
+0:116          ds: direct index for structure (layout(offset=104 ) uniform double)
+0:116            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:116            Constant:
+0:116              9 (const uint)
 0:120      vector scale second child into first child (temp 3-component vector of double)
 0:120        'r40' (temp 3-component vector of double)
 0:120        Convert int to double (temp double)
-0:120          'is' (uniform int)
+0:120          is: direct index for structure (layout(offset=88 ) uniform int)
+0:120            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:120            Constant:
+0:120              5 (const uint)
 0:121      vector scale second child into first child (temp 3-component vector of double)
 0:121        'r41' (temp 3-component vector of double)
 0:121        Convert uint to double (temp double)
-0:121          'us' (uniform uint)
+0:121          us: direct index for structure (layout(offset=100 ) uniform uint)
+0:121            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:121            Constant:
+0:121              8 (const uint)
 0:122      vector scale second child into first child (temp 3-component vector of double)
 0:122        'r42' (temp 3-component vector of double)
 0:122        Convert float to double (temp double)
-0:122          'fs' (uniform float)
+0:122          fs: direct index for structure (layout(offset=96 ) uniform float)
+0:122            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:122            Constant:
+0:122              7 (const uint)
 0:123      vector scale second child into first child (temp 3-component vector of double)
 0:123        'r43' (temp 3-component vector of double)
 0:123        Convert bool to double (temp double)
-0:123          'bs' (uniform bool)
+0:123          bs: direct index for structure (layout(offset=92 ) uniform bool)
+0:123            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
+0:123            Constant:
+0:123              6 (const uint)
 0:193      Sequence
 0:193        move second child to first child (temp int)
 0:193          'c1' (temp int)
@@ -1029,27 +1572,18 @@ gl_FragCoord origin is upper left
 0:200                0 (const int)
 0:200        Branch: Return
 0:?   Linker Objects
-0:?     'i3' (uniform 3-component vector of int)
-0:?     'b3' (uniform 3-component vector of bool)
-0:?     'f3' (uniform 3-component vector of float)
-0:?     'u3' (uniform 3-component vector of uint)
-0:?     'd3' (uniform 3-component vector of double)
-0:?     'is' (uniform int)
-0:?     'bs' (uniform bool)
-0:?     'fs' (uniform float)
-0:?     'us' (uniform uint)
-0:?     'ds' (uniform double)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds})
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 481
+// Id's are bound by 591
 
                               Capability Shader
                               Capability Float64
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 477
+                              EntryPoint Fragment 4  "main" 587
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 11  "Fn_F3(vf3;"
@@ -1102,44 +1636,58 @@ gl_FragCoord origin is upper left
                               Name 100  "p"
                               Name 104  "Fn_R_D3F(vd3;"
                               Name 103  "p"
-                              Name 107  "i3"
-                              Name 115  "u3"
-                              Name 123  "b3"
-                              Name 135  "d3"
-                              Name 159  "f3"
-                              Name 252  "r00"
-                              Name 255  "r01"
-                              Name 258  "r02"
-                              Name 261  "r03"
-                              Name 264  "r10"
-                              Name 267  "r11"
-                              Name 270  "r12"
-                              Name 273  "r13"
-                              Name 276  "r20"
-                              Name 279  "r21"
-                              Name 282  "r22"
-                              Name 285  "r23"
-                              Name 288  "r30"
-                              Name 291  "r31"
-                              Name 294  "r32"
-                              Name 297  "r33"
-                              Name 300  "r40"
-                              Name 303  "r41"
-                              Name 306  "r42"
-                              Name 309  "r43"
-                              Name 377  "is"
-                              Name 383  "bs"
-                              Name 389  "us"
-                              Name 395  "ds"
-                              Name 411  "fs"
-                              Name 459  "c1"
-                              Name 461  "c2"
-                              Name 464  "outval"
-                              Name 471  "PS_OUTPUT"
-                              MemberName 471(PS_OUTPUT) 0  "Color"
-                              Name 473  "psout"
-                              Name 477  "Color"
-                              Decorate 477(Color) Location 0
+                              Name 106  "$Global"
+                              MemberName 106($Global) 0  "i3"
+                              MemberName 106($Global) 1  "b3"
+                              MemberName 106($Global) 2  "f3"
+                              MemberName 106($Global) 3  "u3"
+                              MemberName 106($Global) 4  "d3"
+                              MemberName 106($Global) 5  "is"
+                              MemberName 106($Global) 6  "bs"
+                              MemberName 106($Global) 7  "fs"
+                              MemberName 106($Global) 8  "us"
+                              MemberName 106($Global) 9  "ds"
+                              Name 108  ""
+                              Name 300  "r00"
+                              Name 304  "r01"
+                              Name 309  "r02"
+                              Name 313  "r03"
+                              Name 317  "r10"
+                              Name 322  "r11"
+                              Name 326  "r12"
+                              Name 330  "r13"
+                              Name 334  "r20"
+                              Name 339  "r21"
+                              Name 343  "r22"
+                              Name 347  "r23"
+                              Name 351  "r30"
+                              Name 355  "r31"
+                              Name 359  "r32"
+                              Name 363  "r33"
+                              Name 367  "r40"
+                              Name 371  "r41"
+                              Name 375  "r42"
+                              Name 379  "r43"
+                              Name 570  "c1"
+                              Name 571  "c2"
+                              Name 574  "outval"
+                              Name 581  "PS_OUTPUT"
+                              MemberName 581(PS_OUTPUT) 0  "Color"
+                              Name 583  "psout"
+                              Name 587  "Color"
+                              MemberDecorate 106($Global) 0 Offset 0
+                              MemberDecorate 106($Global) 1 Offset 16
+                              MemberDecorate 106($Global) 2 Offset 32
+                              MemberDecorate 106($Global) 3 Offset 48
+                              MemberDecorate 106($Global) 4 Offset 64
+                              MemberDecorate 106($Global) 5 Offset 88
+                              MemberDecorate 106($Global) 6 Offset 92
+                              MemberDecorate 106($Global) 7 Offset 96
+                              MemberDecorate 106($Global) 8 Offset 100
+                              MemberDecorate 106($Global) 9 Offset 104
+                              Decorate 106($Global) Block
+                              Decorate 108 DescriptorSet 0
+                              Decorate 587(Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -1167,319 +1715,381 @@ gl_FragCoord origin is upper left
               67:             TypeFunction 21(ivec3) 22(ptr)
               80:             TypeFunction 28(bvec3) 29(ptr)
               93:             TypeFunction 35(fvec3) 36(ptr)
-             106:             TypePointer UniformConstant 14(ivec3)
-         107(i3):    106(ptr) Variable UniformConstant
-             114:             TypePointer UniformConstant 21(ivec3)
-         115(u3):    114(ptr) Variable UniformConstant
-             122:             TypePointer UniformConstant 28(bvec3)
-         123(b3):    122(ptr) Variable UniformConstant
-             125:    6(float) Constant 0
-             126:    6(float) Constant 1065353216
-             127:    7(fvec3) ConstantComposite 125 125 125
-             128:    7(fvec3) ConstantComposite 126 126 126
-             134:             TypePointer UniformConstant 35(fvec3)
-         135(d3):    134(ptr) Variable UniformConstant
-             149:     13(int) Constant 0
-             150:     13(int) Constant 1
-             151:   14(ivec3) ConstantComposite 149 149 149
-             152:   14(ivec3) ConstantComposite 150 150 150
-             158:             TypePointer UniformConstant 7(fvec3)
-         159(f3):    158(ptr) Variable UniformConstant
-             185:     20(int) Constant 0
-             186:     20(int) Constant 1
-             187:   21(ivec3) ConstantComposite 185 185 185
-             188:   21(ivec3) ConstantComposite 186 186 186
-             219:   34(float) Constant 0 0
-             220:   35(fvec3) ConstantComposite 219 219 219
-             239:   34(float) Constant 0 1072693248
-             240:   35(fvec3) ConstantComposite 239 239 239
-             376:             TypePointer UniformConstant 13(int)
-         377(is):    376(ptr) Variable UniformConstant
-             382:             TypePointer UniformConstant 27(bool)
-         383(bs):    382(ptr) Variable UniformConstant
-             388:             TypePointer UniformConstant 20(int)
-         389(us):    388(ptr) Variable UniformConstant
-             394:             TypePointer UniformConstant 34(float)
-         395(ds):    394(ptr) Variable UniformConstant
-             410:             TypePointer UniformConstant 6(float)
-         411(fs):    410(ptr) Variable UniformConstant
-             458:             TypePointer Function 13(int)
-             460:     13(int) Constant 3
-             462:             TypeVector 6(float) 4
-             463:             TypePointer Function 462(fvec4)
-             465:    6(float) Constant 1080452710
-  471(PS_OUTPUT):             TypeStruct 462(fvec4)
-             472:             TypePointer Function 471(PS_OUTPUT)
-             476:             TypePointer Output 462(fvec4)
-      477(Color):    476(ptr) Variable Output
+    106($Global):             TypeStruct 14(ivec3) 21(ivec3) 7(fvec3) 21(ivec3) 35(fvec3) 13(int) 20(int) 6(float) 20(int) 34(float)
+             107:             TypePointer Uniform 106($Global)
+             108:    107(ptr) Variable Uniform
+             109:     13(int) Constant 0
+             110:             TypePointer Uniform 14(ivec3)
+             119:     13(int) Constant 3
+             120:             TypePointer Uniform 21(ivec3)
+             129:     13(int) Constant 1
+             132:     20(int) Constant 0
+             133:   21(ivec3) ConstantComposite 132 132 132
+             135:    6(float) Constant 0
+             136:    6(float) Constant 1065353216
+             137:    7(fvec3) ConstantComposite 135 135 135
+             138:    7(fvec3) ConstantComposite 136 136 136
+             146:     13(int) Constant 4
+             147:             TypePointer Uniform 35(fvec3)
+             167:   14(ivec3) ConstantComposite 109 109 109
+             168:   14(ivec3) ConstantComposite 129 129 129
+             176:     13(int) Constant 2
+             177:             TypePointer Uniform 7(fvec3)
+             213:     20(int) Constant 1
+             214:   21(ivec3) ConstantComposite 213 213 213
+             256:   34(float) Constant 0 0
+             257:   35(fvec3) ConstantComposite 256 256 256
+             283:   34(float) Constant 0 1072693248
+             284:   35(fvec3) ConstantComposite 283 283 283
+             468:     13(int) Constant 5
+             469:             TypePointer Uniform 13(int)
+             475:     13(int) Constant 6
+             476:             TypePointer Uniform 20(int)
+             483:     13(int) Constant 8
+             489:     13(int) Constant 9
+             490:             TypePointer Uniform 34(float)
+             509:     13(int) Constant 7
+             510:             TypePointer Uniform 6(float)
+             569:             TypePointer Function 13(int)
+             572:             TypeVector 6(float) 4
+             573:             TypePointer Function 572(fvec4)
+             575:    6(float) Constant 1080452710
+  581(PS_OUTPUT):             TypeStruct 572(fvec4)
+             582:             TypePointer Function 581(PS_OUTPUT)
+             586:             TypePointer Output 572(fvec4)
+      587(Color):    586(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-        252(r00):      8(ptr) Variable Function
-        255(r01):      8(ptr) Variable Function
-        258(r02):      8(ptr) Variable Function
-        261(r03):      8(ptr) Variable Function
-        264(r10):     15(ptr) Variable Function
-        267(r11):     15(ptr) Variable Function
-        270(r12):     15(ptr) Variable Function
-        273(r13):     15(ptr) Variable Function
-        276(r20):     22(ptr) Variable Function
-        279(r21):     22(ptr) Variable Function
-        282(r22):     22(ptr) Variable Function
-        285(r23):     22(ptr) Variable Function
-        288(r30):     29(ptr) Variable Function
-        291(r31):     29(ptr) Variable Function
-        294(r32):     29(ptr) Variable Function
-        297(r33):     29(ptr) Variable Function
-        300(r40):     36(ptr) Variable Function
-        303(r41):     36(ptr) Variable Function
-        306(r42):     36(ptr) Variable Function
-        309(r43):     36(ptr) Variable Function
-         459(c1):    458(ptr) Variable Function
-         461(c2):    458(ptr) Variable Function
-     464(outval):    463(ptr) Variable Function
-      473(psout):    472(ptr) Variable Function
-             253:   14(ivec3) Load 107(i3)
-             254:    7(fvec3) ConvertSToF 253
-                              Store 252(r00) 254
-             256:   28(bvec3) Load 123(b3)
-             257:    7(fvec3) Select 256 128 127
-                              Store 255(r01) 257
-             259:   21(ivec3) Load 115(u3)
-             260:    7(fvec3) ConvertUToF 259
-                              Store 258(r02) 260
-             262:   35(fvec3) Load 135(d3)
-             263:    7(fvec3) FConvert 262
-                              Store 261(r03) 263
-             265:   28(bvec3) Load 123(b3)
-             266:   14(ivec3) Select 265 152 151
-                              Store 264(r10) 266
-             268:   21(ivec3) Load 115(u3)
-             269:   14(ivec3) Bitcast 268
-                              Store 267(r11) 269
-             271:    7(fvec3) Load 159(f3)
-             272:   14(ivec3) ConvertFToS 271
-                              Store 270(r12) 272
-             274:   35(fvec3) Load 135(d3)
-             275:   14(ivec3) ConvertFToS 274
-                              Store 273(r13) 275
-             277:   28(bvec3) Load 123(b3)
-             278:   21(ivec3) Select 277 188 187
-                              Store 276(r20) 278
-             280:   14(ivec3) Load 107(i3)
-             281:   21(ivec3) Bitcast 280
-                              Store 279(r21) 281
-             283:    7(fvec3) Load 159(f3)
-             284:   21(ivec3) ConvertFToU 283
-                              Store 282(r22) 284
-             286:   35(fvec3) Load 135(d3)
-             287:   21(ivec3) ConvertFToU 286
-                              Store 285(r23) 287
-             289:   14(ivec3) Load 107(i3)
-             290:   28(bvec3) INotEqual 289 187
-                              Store 288(r30) 290
-             292:   21(ivec3) Load 115(u3)
-             293:   28(bvec3) INotEqual 292 187
-                              Store 291(r31) 293
-             295:    7(fvec3) Load 159(f3)
-             296:   28(bvec3) FOrdNotEqual 295 127
-                              Store 294(r32) 296
-             298:   35(fvec3) Load 135(d3)
-             299:   28(bvec3) FOrdNotEqual 298 220
-                              Store 297(r33) 299
-             301:   14(ivec3) Load 107(i3)
-             302:   35(fvec3) ConvertSToF 301
-                              Store 300(r40) 302
-             304:   21(ivec3) Load 115(u3)
-             305:   35(fvec3) ConvertUToF 304
-                              Store 303(r41) 305
-             307:    7(fvec3) Load 159(f3)
-             308:   35(fvec3) FConvert 307
-                              Store 306(r42) 308
-             310:   28(bvec3) Load 123(b3)
-             311:   35(fvec3) Select 310 240 220
-                              Store 309(r43) 311
-             312:   14(ivec3) Load 107(i3)
-             313:    7(fvec3) ConvertSToF 312
-             314:    7(fvec3) Load 252(r00)
-             315:    7(fvec3) FMul 314 313
-                              Store 252(r00) 315
-             316:   28(bvec3) Load 123(b3)
-             317:    7(fvec3) Select 316 128 127
-             318:    7(fvec3) Load 255(r01)
-             319:    7(fvec3) FMul 318 317
-                              Store 255(r01) 319
-             320:   21(ivec3) Load 115(u3)
-             321:    7(fvec3) ConvertUToF 320
-             322:    7(fvec3) Load 258(r02)
-             323:    7(fvec3) FMul 322 321
-                              Store 258(r02) 323
-             324:   35(fvec3) Load 135(d3)
-             325:    7(fvec3) FConvert 324
-             326:    7(fvec3) Load 261(r03)
-             327:    7(fvec3) FMul 326 325
-                              Store 261(r03) 327
-             328:   28(bvec3) Load 123(b3)
-             329:   14(ivec3) Select 328 152 151
-             330:   14(ivec3) Load 264(r10)
-             331:   14(ivec3) IMul 330 329
-                              Store 264(r10) 331
-             332:   21(ivec3) Load 115(u3)
-             333:   14(ivec3) Bitcast 332
-             334:   14(ivec3) Load 267(r11)
-             335:   14(ivec3) IMul 334 333
-                              Store 267(r11) 335
-             336:    7(fvec3) Load 159(f3)
-             337:   14(ivec3) ConvertFToS 336
-             338:   14(ivec3) Load 270(r12)
-             339:   14(ivec3) IMul 338 337
-                              Store 270(r12) 339
-             340:   35(fvec3) Load 135(d3)
-             341:   14(ivec3) ConvertFToS 340
-             342:   14(ivec3) Load 273(r13)
-             343:   14(ivec3) IMul 342 341
-                              Store 273(r13) 343
-             344:   28(bvec3) Load 123(b3)
-             345:   21(ivec3) Select 344 188 187
-             346:   21(ivec3) Load 276(r20)
-             347:   21(ivec3) IMul 346 345
-                              Store 276(r20) 347
-             348:   14(ivec3) Load 107(i3)
-             349:   21(ivec3) Bitcast 348
-             350:   21(ivec3) Load 279(r21)
-             351:   21(ivec3) IMul 350 349
-                              Store 279(r21) 351
-             352:    7(fvec3) Load 159(f3)
-             353:   21(ivec3) ConvertFToU 352
-             354:   21(ivec3) Load 282(r22)
-             355:   21(ivec3) IMul 354 353
-                              Store 282(r22) 355
-             356:   35(fvec3) Load 135(d3)
-             357:   21(ivec3) ConvertFToU 356
-             358:   21(ivec3) Load 285(r23)
-             359:   21(ivec3) IMul 358 357
-                              Store 285(r23) 359
-             360:   14(ivec3) Load 107(i3)
-             361:   35(fvec3) ConvertSToF 360
-             362:   35(fvec3) Load 300(r40)
-             363:   35(fvec3) FMul 362 361
-                              Store 300(r40) 363
-             364:   21(ivec3) Load 115(u3)
-             365:   35(fvec3) ConvertUToF 364
-             366:   35(fvec3) Load 303(r41)
-             367:   35(fvec3) FMul 366 365
-                              Store 303(r41) 367
-             368:    7(fvec3) Load 159(f3)
-             369:   35(fvec3) FConvert 368
-             370:   35(fvec3) Load 306(r42)
-             371:   35(fvec3) FMul 370 369
-                              Store 306(r42) 371
-             372:   28(bvec3) Load 123(b3)
-             373:   35(fvec3) Select 372 240 220
-             374:   35(fvec3) Load 309(r43)
-             375:   35(fvec3) FMul 374 373
-                              Store 309(r43) 375
-             378:     13(int) Load 377(is)
-             379:    6(float) ConvertSToF 378
-             380:    7(fvec3) Load 252(r00)
-             381:    7(fvec3) VectorTimesScalar 380 379
-                              Store 252(r00) 381
-             384:    27(bool) Load 383(bs)
-             385:    6(float) Select 384 126 125
-             386:    7(fvec3) Load 255(r01)
-             387:    7(fvec3) VectorTimesScalar 386 385
-                              Store 255(r01) 387
-             390:     20(int) Load 389(us)
-             391:    6(float) ConvertUToF 390
-             392:    7(fvec3) Load 258(r02)
-             393:    7(fvec3) VectorTimesScalar 392 391
-                              Store 258(r02) 393
-             396:   34(float) Load 395(ds)
-             397:    6(float) FConvert 396
-             398:    7(fvec3) Load 261(r03)
-             399:    7(fvec3) VectorTimesScalar 398 397
-                              Store 261(r03) 399
-             400:    27(bool) Load 383(bs)
-             401:     13(int) Select 400 150 149
-             402:   14(ivec3) Load 264(r10)
-             403:   14(ivec3) CompositeConstruct 401 401 401
-             404:   14(ivec3) IMul 402 403
-                              Store 264(r10) 404
-             405:     20(int) Load 389(us)
-             406:     13(int) Bitcast 405
-             407:   14(ivec3) Load 267(r11)
-             408:   14(ivec3) CompositeConstruct 406 406 406
-             409:   14(ivec3) IMul 407 408
-                              Store 267(r11) 409
-             412:    6(float) Load 411(fs)
-             413:     13(int) ConvertFToS 412
-             414:   14(ivec3) Load 270(r12)
-             415:   14(ivec3) CompositeConstruct 413 413 413
-             416:   14(ivec3) IMul 414 415
-                              Store 270(r12) 416
-             417:   34(float) Load 395(ds)
-             418:     13(int) ConvertFToS 417
-             419:   14(ivec3) Load 273(r13)
-             420:   14(ivec3) CompositeConstruct 418 418 418
-             421:   14(ivec3) IMul 419 420
-                              Store 273(r13) 421
-             422:    27(bool) Load 383(bs)
-             423:     20(int) Select 422 186 185
-             424:   21(ivec3) Load 276(r20)
-             425:   21(ivec3) CompositeConstruct 423 423 423
-             426:   21(ivec3) IMul 424 425
-                              Store 276(r20) 426
-             427:     13(int) Load 377(is)
-             428:     20(int) Bitcast 427
-             429:   21(ivec3) Load 279(r21)
-             430:   21(ivec3) CompositeConstruct 428 428 428
-             431:   21(ivec3) IMul 429 430
-                              Store 279(r21) 431
-             432:    6(float) Load 411(fs)
-             433:     20(int) ConvertFToU 432
-             434:   21(ivec3) Load 282(r22)
-             435:   21(ivec3) CompositeConstruct 433 433 433
-             436:   21(ivec3) IMul 434 435
-                              Store 282(r22) 436
-             437:   34(float) Load 395(ds)
-             438:     20(int) ConvertFToU 437
-             439:   21(ivec3) Load 285(r23)
-             440:   21(ivec3) CompositeConstruct 438 438 438
-             441:   21(ivec3) IMul 439 440
-                              Store 285(r23) 441
-             442:     13(int) Load 377(is)
-             443:   34(float) ConvertSToF 442
-             444:   35(fvec3) Load 300(r40)
-             445:   35(fvec3) VectorTimesScalar 444 443
-                              Store 300(r40) 445
-             446:     20(int) Load 389(us)
-             447:   34(float) ConvertUToF 446
-             448:   35(fvec3) Load 303(r41)
-             449:   35(fvec3) VectorTimesScalar 448 447
-                              Store 303(r41) 449
-             450:    6(float) Load 411(fs)
-             451:   34(float) FConvert 450
-             452:   35(fvec3) Load 306(r42)
-             453:   35(fvec3) VectorTimesScalar 452 451
-                              Store 306(r42) 453
-             454:    27(bool) Load 383(bs)
-             455:   34(float) Select 454 239 219
-             456:   35(fvec3) Load 309(r43)
-             457:   35(fvec3) VectorTimesScalar 456 455
-                              Store 309(r43) 457
-                              Store 459(c1) 460
-                              Store 461(c2) 460
-             466:     13(int) Load 459(c1)
-             467:    6(float) ConvertSToF 466
-             468:     13(int) Load 461(c2)
-             469:    6(float) ConvertSToF 468
-             470:  462(fvec4) CompositeConstruct 465 465 467 469
-                              Store 464(outval) 470
-             474:  462(fvec4) Load 464(outval)
-             475:    463(ptr) AccessChain 473(psout) 149
-                              Store 475 474
-             478:    463(ptr) AccessChain 473(psout) 149
-             479:  462(fvec4) Load 478
-                              Store 477(Color) 479
+        300(r00):      8(ptr) Variable Function
+        304(r01):      8(ptr) Variable Function
+        309(r02):      8(ptr) Variable Function
+        313(r03):      8(ptr) Variable Function
+        317(r10):     15(ptr) Variable Function
+        322(r11):     15(ptr) Variable Function
+        326(r12):     15(ptr) Variable Function
+        330(r13):     15(ptr) Variable Function
+        334(r20):     22(ptr) Variable Function
+        339(r21):     22(ptr) Variable Function
+        343(r22):     22(ptr) Variable Function
+        347(r23):     22(ptr) Variable Function
+        351(r30):     29(ptr) Variable Function
+        355(r31):     29(ptr) Variable Function
+        359(r32):     29(ptr) Variable Function
+        363(r33):     29(ptr) Variable Function
+        367(r40):     36(ptr) Variable Function
+        371(r41):     36(ptr) Variable Function
+        375(r42):     36(ptr) Variable Function
+        379(r43):     36(ptr) Variable Function
+         570(c1):    569(ptr) Variable Function
+         571(c2):    569(ptr) Variable Function
+     574(outval):    573(ptr) Variable Function
+      583(psout):    582(ptr) Variable Function
+             301:    110(ptr) AccessChain 108 109
+             302:   14(ivec3) Load 301
+             303:    7(fvec3) ConvertSToF 302
+                              Store 300(r00) 303
+             305:    120(ptr) AccessChain 108 129
+             306:   21(ivec3) Load 305
+             307:   28(bvec3) INotEqual 306 133
+             308:    7(fvec3) Select 307 138 137
+                              Store 304(r01) 308
+             310:    120(ptr) AccessChain 108 119
+             311:   21(ivec3) Load 310
+             312:    7(fvec3) ConvertUToF 311
+                              Store 309(r02) 312
+             314:    147(ptr) AccessChain 108 146
+             315:   35(fvec3) Load 314
+             316:    7(fvec3) FConvert 315
+                              Store 313(r03) 316
+             318:    120(ptr) AccessChain 108 129
+             319:   21(ivec3) Load 318
+             320:   28(bvec3) INotEqual 319 133
+             321:   14(ivec3) Select 320 168 167
+                              Store 317(r10) 321
+             323:    120(ptr) AccessChain 108 119
+             324:   21(ivec3) Load 323
+             325:   14(ivec3) Bitcast 324
+                              Store 322(r11) 325
+             327:    177(ptr) AccessChain 108 176
+             328:    7(fvec3) Load 327
+             329:   14(ivec3) ConvertFToS 328
+                              Store 326(r12) 329
+             331:    147(ptr) AccessChain 108 146
+             332:   35(fvec3) Load 331
+             333:   14(ivec3) ConvertFToS 332
+                              Store 330(r13) 333
+             335:    120(ptr) AccessChain 108 129
+             336:   21(ivec3) Load 335
+             337:   28(bvec3) INotEqual 336 133
+             338:   21(ivec3) Select 337 214 133
+                              Store 334(r20) 338
+             340:    110(ptr) AccessChain 108 109
+             341:   14(ivec3) Load 340
+             342:   21(ivec3) Bitcast 341
+                              Store 339(r21) 342
+             344:    177(ptr) AccessChain 108 176
+             345:    7(fvec3) Load 344
+             346:   21(ivec3) ConvertFToU 345
+                              Store 343(r22) 346
+             348:    147(ptr) AccessChain 108 146
+             349:   35(fvec3) Load 348
+             350:   21(ivec3) ConvertFToU 349
+                              Store 347(r23) 350
+             352:    110(ptr) AccessChain 108 109
+             353:   14(ivec3) Load 352
+             354:   28(bvec3) INotEqual 353 133
+                              Store 351(r30) 354
+             356:    120(ptr) AccessChain 108 119
+             357:   21(ivec3) Load 356
+             358:   28(bvec3) INotEqual 357 133
+                              Store 355(r31) 358
+             360:    177(ptr) AccessChain 108 176
+             361:    7(fvec3) Load 360
+             362:   28(bvec3) FOrdNotEqual 361 137
+                              Store 359(r32) 362
+             364:    147(ptr) AccessChain 108 146
+             365:   35(fvec3) Load 364
+             366:   28(bvec3) FOrdNotEqual 365 257
+                              Store 363(r33) 366
+             368:    110(ptr) AccessChain 108 109
+             369:   14(ivec3) Load 368
+             370:   35(fvec3) ConvertSToF 369
+                              Store 367(r40) 370
+             372:    120(ptr) AccessChain 108 119
+             373:   21(ivec3) Load 372
+             374:   35(fvec3) ConvertUToF 373
+                              Store 371(r41) 374
+             376:    177(ptr) AccessChain 108 176
+             377:    7(fvec3) Load 376
+             378:   35(fvec3) FConvert 377
+                              Store 375(r42) 378
+             380:    120(ptr) AccessChain 108 129
+             381:   21(ivec3) Load 380
+             382:   28(bvec3) INotEqual 381 133
+             383:   35(fvec3) Select 382 284 257
+                              Store 379(r43) 383
+             384:    110(ptr) AccessChain 108 109
+             385:   14(ivec3) Load 384
+             386:    7(fvec3) ConvertSToF 385
+             387:    7(fvec3) Load 300(r00)
+             388:    7(fvec3) FMul 387 386
+                              Store 300(r00) 388
+             389:    120(ptr) AccessChain 108 129
+             390:   21(ivec3) Load 389
+             391:   28(bvec3) INotEqual 390 133
+             392:    7(fvec3) Select 391 138 137
+             393:    7(fvec3) Load 304(r01)
+             394:    7(fvec3) FMul 393 392
+                              Store 304(r01) 394
+             395:    120(ptr) AccessChain 108 119
+             396:   21(ivec3) Load 395
+             397:    7(fvec3) ConvertUToF 396
+             398:    7(fvec3) Load 309(r02)
+             399:    7(fvec3) FMul 398 397
+                              Store 309(r02) 399
+             400:    147(ptr) AccessChain 108 146
+             401:   35(fvec3) Load 400
+             402:    7(fvec3) FConvert 401
+             403:    7(fvec3) Load 313(r03)
+             404:    7(fvec3) FMul 403 402
+                              Store 313(r03) 404
+             405:    120(ptr) AccessChain 108 129
+             406:   21(ivec3) Load 405
+             407:   28(bvec3) INotEqual 406 133
+             408:   14(ivec3) Select 407 168 167
+             409:   14(ivec3) Load 317(r10)
+             410:   14(ivec3) IMul 409 408
+                              Store 317(r10) 410
+             411:    120(ptr) AccessChain 108 119
+             412:   21(ivec3) Load 411
+             413:   14(ivec3) Bitcast 412
+             414:   14(ivec3) Load 322(r11)
+             415:   14(ivec3) IMul 414 413
+                              Store 322(r11) 415
+             416:    177(ptr) AccessChain 108 176
+             417:    7(fvec3) Load 416
+             418:   14(ivec3) ConvertFToS 417
+             419:   14(ivec3) Load 326(r12)
+             420:   14(ivec3) IMul 419 418
+                              Store 326(r12) 420
+             421:    147(ptr) AccessChain 108 146
+             422:   35(fvec3) Load 421
+             423:   14(ivec3) ConvertFToS 422
+             424:   14(ivec3) Load 330(r13)
+             425:   14(ivec3) IMul 424 423
+                              Store 330(r13) 425
+             426:    120(ptr) AccessChain 108 129
+             427:   21(ivec3) Load 426
+             428:   28(bvec3) INotEqual 427 133
+             429:   21(ivec3) Select 428 214 133
+             430:   21(ivec3) Load 334(r20)
+             431:   21(ivec3) IMul 430 429
+                              Store 334(r20) 431
+             432:    110(ptr) AccessChain 108 109
+             433:   14(ivec3) Load 432
+             434:   21(ivec3) Bitcast 433
+             435:   21(ivec3) Load 339(r21)
+             436:   21(ivec3) IMul 435 434
+                              Store 339(r21) 436
+             437:    177(ptr) AccessChain 108 176
+             438:    7(fvec3) Load 437
+             439:   21(ivec3) ConvertFToU 438
+             440:   21(ivec3) Load 343(r22)
+             441:   21(ivec3) IMul 440 439
+                              Store 343(r22) 441
+             442:    147(ptr) AccessChain 108 146
+             443:   35(fvec3) Load 442
+             444:   21(ivec3) ConvertFToU 443
+             445:   21(ivec3) Load 347(r23)
+             446:   21(ivec3) IMul 445 444
+                              Store 347(r23) 446
+             447:    110(ptr) AccessChain 108 109
+             448:   14(ivec3) Load 447
+             449:   35(fvec3) ConvertSToF 448
+             450:   35(fvec3) Load 367(r40)
+             451:   35(fvec3) FMul 450 449
+                              Store 367(r40) 451
+             452:    120(ptr) AccessChain 108 119
+             453:   21(ivec3) Load 452
+             454:   35(fvec3) ConvertUToF 453
+             455:   35(fvec3) Load 371(r41)
+             456:   35(fvec3) FMul 455 454
+                              Store 371(r41) 456
+             457:    177(ptr) AccessChain 108 176
+             458:    7(fvec3) Load 457
+             459:   35(fvec3) FConvert 458
+             460:   35(fvec3) Load 375(r42)
+             461:   35(fvec3) FMul 460 459
+                              Store 375(r42) 461
+             462:    120(ptr) AccessChain 108 129
+             463:   21(ivec3) Load 462
+             464:   28(bvec3) INotEqual 463 133
+             465:   35(fvec3) Select 464 284 257
+             466:   35(fvec3) Load 379(r43)
+             467:   35(fvec3) FMul 466 465
+                              Store 379(r43) 467
+             470:    469(ptr) AccessChain 108 468
+             471:     13(int) Load 470
+             472:    6(float) ConvertSToF 471
+             473:    7(fvec3) Load 300(r00)
+             474:    7(fvec3) VectorTimesScalar 473 472
+                              Store 300(r00) 474
+             477:    476(ptr) AccessChain 108 475
+             478:     20(int) Load 477
+             479:    27(bool) INotEqual 478 132
+             480:    6(float) Select 479 136 135
+             481:    7(fvec3) Load 304(r01)
+             482:    7(fvec3) VectorTimesScalar 481 480
+                              Store 304(r01) 482
+             484:    476(ptr) AccessChain 108 483
+             485:     20(int) Load 484
+             486:    6(float) ConvertUToF 485
+             487:    7(fvec3) Load 309(r02)
+             488:    7(fvec3) VectorTimesScalar 487 486
+                              Store 309(r02) 488
+             491:    490(ptr) AccessChain 108 489
+             492:   34(float) Load 491
+             493:    6(float) FConvert 492
+             494:    7(fvec3) Load 313(r03)
+             495:    7(fvec3) VectorTimesScalar 494 493
+                              Store 313(r03) 495
+             496:    476(ptr) AccessChain 108 475
+             497:     20(int) Load 496
+             498:    27(bool) INotEqual 497 132
+             499:     13(int) Select 498 129 109
+             500:   14(ivec3) Load 317(r10)
+             501:   14(ivec3) CompositeConstruct 499 499 499
+             502:   14(ivec3) IMul 500 501
+                              Store 317(r10) 502
+             503:    476(ptr) AccessChain 108 483
+             504:     20(int) Load 503
+             505:     13(int) Bitcast 504
+             506:   14(ivec3) Load 322(r11)
+             507:   14(ivec3) CompositeConstruct 505 505 505
+             508:   14(ivec3) IMul 506 507
+                              Store 322(r11) 508
+             511:    510(ptr) AccessChain 108 509
+             512:    6(float) Load 511
+             513:     13(int) ConvertFToS 512
+             514:   14(ivec3) Load 326(r12)
+             515:   14(ivec3) CompositeConstruct 513 513 513
+             516:   14(ivec3) IMul 514 515
+                              Store 326(r12) 516
+             517:    490(ptr) AccessChain 108 489
+             518:   34(float) Load 517
+             519:     13(int) ConvertFToS 518
+             520:   14(ivec3) Load 330(r13)
+             521:   14(ivec3) CompositeConstruct 519 519 519
+             522:   14(ivec3) IMul 520 521
+                              Store 330(r13) 522
+             523:    476(ptr) AccessChain 108 475
+             524:     20(int) Load 523
+             525:    27(bool) INotEqual 524 132
+             526:     20(int) Select 525 213 132
+             527:   21(ivec3) Load 334(r20)
+             528:   21(ivec3) CompositeConstruct 526 526 526
+             529:   21(ivec3) IMul 527 528
+                              Store 334(r20) 529
+             530:    469(ptr) AccessChain 108 468
+             531:     13(int) Load 530
+             532:     20(int) Bitcast 531
+             533:   21(ivec3) Load 339(r21)
+             534:   21(ivec3) CompositeConstruct 532 532 532
+             535:   21(ivec3) IMul 533 534
+                              Store 339(r21) 535
+             536:    510(ptr) AccessChain 108 509
+             537:    6(float) Load 536
+             538:     20(int) ConvertFToU 537
+             539:   21(ivec3) Load 343(r22)
+             540:   21(ivec3) CompositeConstruct 538 538 538
+             541:   21(ivec3) IMul 539 540
+                              Store 343(r22) 541
+             542:    490(ptr) AccessChain 108 489
+             543:   34(float) Load 542
+             544:     20(int) ConvertFToU 543
+             545:   21(ivec3) Load 347(r23)
+             546:   21(ivec3) CompositeConstruct 544 544 544
+             547:   21(ivec3) IMul 545 546
+                              Store 347(r23) 547
+             548:    469(ptr) AccessChain 108 468
+             549:     13(int) Load 548
+             550:   34(float) ConvertSToF 549
+             551:   35(fvec3) Load 367(r40)
+             552:   35(fvec3) VectorTimesScalar 551 550
+                              Store 367(r40) 552
+             553:    476(ptr) AccessChain 108 483
+             554:     20(int) Load 553
+             555:   34(float) ConvertUToF 554
+             556:   35(fvec3) Load 371(r41)
+             557:   35(fvec3) VectorTimesScalar 556 555
+                              Store 371(r41) 557
+             558:    510(ptr) AccessChain 108 509
+             559:    6(float) Load 558
+             560:   34(float) FConvert 559
+             561:   35(fvec3) Load 375(r42)
+             562:   35(fvec3) VectorTimesScalar 561 560
+                              Store 375(r42) 562
+             563:    476(ptr) AccessChain 108 475
+             564:     20(int) Load 563
+             565:    27(bool) INotEqual 564 132
+             566:   34(float) Select 565 283 256
+             567:   35(fvec3) Load 379(r43)
+             568:   35(fvec3) VectorTimesScalar 567 566
+                              Store 379(r43) 568
+                              Store 570(c1) 119
+                              Store 571(c2) 119
+             576:     13(int) Load 570(c1)
+             577:    6(float) ConvertSToF 576
+             578:     13(int) Load 571(c2)
+             579:    6(float) ConvertSToF 578
+             580:  572(fvec4) CompositeConstruct 575 575 577 579
+                              Store 574(outval) 580
+             584:  572(fvec4) Load 574(outval)
+             585:    573(ptr) AccessChain 583(psout) 109
+                              Store 585 584
+             588:    573(ptr) AccessChain 583(psout) 109
+             589:  572(fvec4) Load 588
+                              Store 587(Color) 589
                               Return
                               FunctionEnd
   11(Fn_F3(vf3;):           2 Function None 9
@@ -1510,200 +2120,248 @@ gl_FragCoord origin is upper left
 43(Fn_R_F3I(vf3;):    7(fvec3) Function None 41
            42(p):      8(ptr) FunctionParameter
               44:             Label
-             108:   14(ivec3) Load 107(i3)
-             109:    7(fvec3) ConvertSToF 108
-                              Store 42(p) 109
-             110:   14(ivec3) Load 107(i3)
-             111:    7(fvec3) ConvertSToF 110
-                              ReturnValue 111
+             111:    110(ptr) AccessChain 108 109
+             112:   14(ivec3) Load 111
+             113:    7(fvec3) ConvertSToF 112
+                              Store 42(p) 113
+             114:    110(ptr) AccessChain 108 109
+             115:   14(ivec3) Load 114
+             116:    7(fvec3) ConvertSToF 115
+                              ReturnValue 116
                               FunctionEnd
 46(Fn_R_F3U(vf3;):    7(fvec3) Function None 41
            45(p):      8(ptr) FunctionParameter
               47:             Label
-             116:   21(ivec3) Load 115(u3)
-             117:    7(fvec3) ConvertUToF 116
-                              Store 45(p) 117
-             118:   21(ivec3) Load 115(u3)
-             119:    7(fvec3) ConvertUToF 118
-                              ReturnValue 119
+             121:    120(ptr) AccessChain 108 119
+             122:   21(ivec3) Load 121
+             123:    7(fvec3) ConvertUToF 122
+                              Store 45(p) 123
+             124:    120(ptr) AccessChain 108 119
+             125:   21(ivec3) Load 124
+             126:    7(fvec3) ConvertUToF 125
+                              ReturnValue 126
                               FunctionEnd
 49(Fn_R_F3B(vf3;):    7(fvec3) Function None 41
            48(p):      8(ptr) FunctionParameter
               50:             Label
-             124:   28(bvec3) Load 123(b3)
-             129:    7(fvec3) Select 124 128 127
-                              Store 48(p) 129
-             130:   28(bvec3) Load 123(b3)
-             131:    7(fvec3) Select 130 128 127
-                              ReturnValue 131
+             130:    120(ptr) AccessChain 108 129
+             131:   21(ivec3) Load 130
+             134:   28(bvec3) INotEqual 131 133
+             139:    7(fvec3) Select 134 138 137
+                              Store 48(p) 139
+             140:    120(ptr) AccessChain 108 129
+             141:   21(ivec3) Load 140
+             142:   28(bvec3) INotEqual 141 133
+             143:    7(fvec3) Select 142 138 137
+                              ReturnValue 143
                               FunctionEnd
 52(Fn_R_F3D(vf3;):    7(fvec3) Function None 41
            51(p):      8(ptr) FunctionParameter
               53:             Label
-             136:   35(fvec3) Load 135(d3)
-             137:    7(fvec3) FConvert 136
-                              Store 51(p) 137
-             138:   35(fvec3) Load 135(d3)
-             139:    7(fvec3) FConvert 138
-                              ReturnValue 139
+             148:    147(ptr) AccessChain 108 146
+             149:   35(fvec3) Load 148
+             150:    7(fvec3) FConvert 149
+                              Store 51(p) 150
+             151:    147(ptr) AccessChain 108 146
+             152:   35(fvec3) Load 151
+             153:    7(fvec3) FConvert 152
+                              ReturnValue 153
                               FunctionEnd
 56(Fn_R_I3U(vi3;):   14(ivec3) Function None 54
            55(p):     15(ptr) FunctionParameter
               57:             Label
-             142:   21(ivec3) Load 115(u3)
-             143:   14(ivec3) Bitcast 142
-                              Store 55(p) 143
-             144:   21(ivec3) Load 115(u3)
-             145:   14(ivec3) Bitcast 144
-                              ReturnValue 145
+             156:    120(ptr) AccessChain 108 119
+             157:   21(ivec3) Load 156
+             158:   14(ivec3) Bitcast 157
+                              Store 55(p) 158
+             159:    120(ptr) AccessChain 108 119
+             160:   21(ivec3) Load 159
+             161:   14(ivec3) Bitcast 160
+                              ReturnValue 161
                               FunctionEnd
 59(Fn_R_I3B(vi3;):   14(ivec3) Function None 54
            58(p):     15(ptr) FunctionParameter
               60:             Label
-             148:   28(bvec3) Load 123(b3)
-             153:   14(ivec3) Select 148 152 151
-                              Store 58(p) 153
-             154:   28(bvec3) Load 123(b3)
-             155:   14(ivec3) Select 154 152 151
-                              ReturnValue 155
+             164:    120(ptr) AccessChain 108 129
+             165:   21(ivec3) Load 164
+             166:   28(bvec3) INotEqual 165 133
+             169:   14(ivec3) Select 166 168 167
+                              Store 58(p) 169
+             170:    120(ptr) AccessChain 108 129
+             171:   21(ivec3) Load 170
+             172:   28(bvec3) INotEqual 171 133
+             173:   14(ivec3) Select 172 168 167
+                              ReturnValue 173
                               FunctionEnd
 62(Fn_R_I3F(vi3;):   14(ivec3) Function None 54
            61(p):     15(ptr) FunctionParameter
               63:             Label
-             160:    7(fvec3) Load 159(f3)
-             161:   14(ivec3) ConvertFToS 160
-                              Store 61(p) 161
-             162:    7(fvec3) Load 159(f3)
-             163:   14(ivec3) ConvertFToS 162
-                              ReturnValue 163
+             178:    177(ptr) AccessChain 108 176
+             179:    7(fvec3) Load 178
+             180:   14(ivec3) ConvertFToS 179
+                              Store 61(p) 180
+             181:    177(ptr) AccessChain 108 176
+             182:    7(fvec3) Load 181
+             183:   14(ivec3) ConvertFToS 182
+                              ReturnValue 183
                               FunctionEnd
 65(Fn_R_I3D(vi3;):   14(ivec3) Function None 54
            64(p):     15(ptr) FunctionParameter
               66:             Label
-             166:   35(fvec3) Load 135(d3)
-             167:   14(ivec3) ConvertFToS 166
-                              Store 64(p) 167
-             168:   35(fvec3) Load 135(d3)
-             169:   14(ivec3) ConvertFToS 168
-                              ReturnValue 169
+             186:    147(ptr) AccessChain 108 146
+             187:   35(fvec3) Load 186
+             188:   14(ivec3) ConvertFToS 187
+                              Store 64(p) 188
+             189:    147(ptr) AccessChain 108 146
+             190:   35(fvec3) Load 189
+             191:   14(ivec3) ConvertFToS 190
+                              ReturnValue 191
                               FunctionEnd
 69(Fn_R_U3I(vu3;):   21(ivec3) Function None 67
            68(p):     22(ptr) FunctionParameter
               70:             Label
-             172:   14(ivec3) Load 107(i3)
-             173:   21(ivec3) Bitcast 172
-                              Store 68(p) 173
-             174:   14(ivec3) Load 107(i3)
-             175:   21(ivec3) Bitcast 174
-                              ReturnValue 175
+             194:    110(ptr) AccessChain 108 109
+             195:   14(ivec3) Load 194
+             196:   21(ivec3) Bitcast 195
+                              Store 68(p) 196
+             197:    110(ptr) AccessChain 108 109
+             198:   14(ivec3) Load 197
+             199:   21(ivec3) Bitcast 198
+                              ReturnValue 199
                               FunctionEnd
 72(Fn_R_U3F(vu3;):   21(ivec3) Function None 67
            71(p):     22(ptr) FunctionParameter
               73:             Label
-             178:    7(fvec3) Load 159(f3)
-             179:   21(ivec3) ConvertFToU 178
-                              Store 71(p) 179
-             180:    7(fvec3) Load 159(f3)
-             181:   21(ivec3) ConvertFToU 180
-                              ReturnValue 181
+             202:    177(ptr) AccessChain 108 176
+             203:    7(fvec3) Load 202
+             204:   21(ivec3) ConvertFToU 203
+                              Store 71(p) 204
+             205:    177(ptr) AccessChain 108 176
+             206:    7(fvec3) Load 205
+             207:   21(ivec3) ConvertFToU 206
+                              ReturnValue 207
                               FunctionEnd
 75(Fn_R_U3B(vu3;):   21(ivec3) Function None 67
            74(p):     22(ptr) FunctionParameter
               76:             Label
-             184:   28(bvec3) Load 123(b3)
-             189:   21(ivec3) Select 184 188 187
-                              Store 74(p) 189
-             190:   28(bvec3) Load 123(b3)
-             191:   21(ivec3) Select 190 188 187
-                              ReturnValue 191
+             210:    120(ptr) AccessChain 108 129
+             211:   21(ivec3) Load 210
+             212:   28(bvec3) INotEqual 211 133
+             215:   21(ivec3) Select 212 214 133
+                              Store 74(p) 215
+             216:    120(ptr) AccessChain 108 129
+             217:   21(ivec3) Load 216
+             218:   28(bvec3) INotEqual 217 133
+             219:   21(ivec3) Select 218 214 133
+                              ReturnValue 219
                               FunctionEnd
 78(Fn_R_U3D(vu3;):   21(ivec3) Function None 67
            77(p):     22(ptr) FunctionParameter
               79:             Label
-             194:   35(fvec3) Load 135(d3)
-             195:   21(ivec3) ConvertFToU 194
-                              Store 77(p) 195
-             196:   35(fvec3) Load 135(d3)
-             197:   21(ivec3) ConvertFToU 196
-                              ReturnValue 197
+             222:    147(ptr) AccessChain 108 146
+             223:   35(fvec3) Load 222
+             224:   21(ivec3) ConvertFToU 223
+                              Store 77(p) 224
+             225:    147(ptr) AccessChain 108 146
+             226:   35(fvec3) Load 225
+             227:   21(ivec3) ConvertFToU 226
+                              ReturnValue 227
                               FunctionEnd
 82(Fn_R_B3I(vb3;):   28(bvec3) Function None 80
            81(p):     29(ptr) FunctionParameter
               83:             Label
-             200:   14(ivec3) Load 107(i3)
-             201:   28(bvec3) INotEqual 200 187
-                              Store 81(p) 201
-             202:   14(ivec3) Load 107(i3)
-             203:   28(bvec3) INotEqual 202 187
-                              ReturnValue 203
+             230:    110(ptr) AccessChain 108 109
+             231:   14(ivec3) Load 230
+             232:   28(bvec3) INotEqual 231 133
+                              Store 81(p) 232
+             233:    110(ptr) AccessChain 108 109
+             234:   14(ivec3) Load 233
+             235:   28(bvec3) INotEqual 234 133
+                              ReturnValue 235
                               FunctionEnd
 85(Fn_R_B3U(vb3;):   28(bvec3) Function None 80
            84(p):     29(ptr) FunctionParameter
               86:             Label
-             206:   21(ivec3) Load 115(u3)
-             207:   28(bvec3) INotEqual 206 187
-                              Store 84(p) 207
-             208:   21(ivec3) Load 115(u3)
-             209:   28(bvec3) INotEqual 208 187
-                              ReturnValue 209
+             238:    120(ptr) AccessChain 108 119
+             239:   21(ivec3) Load 238
+             240:   28(bvec3) INotEqual 239 133
+                              Store 84(p) 240
+             241:    120(ptr) AccessChain 108 119
+             242:   21(ivec3) Load 241
+             243:   28(bvec3) INotEqual 242 133
+                              ReturnValue 243
                               FunctionEnd
 88(Fn_R_B3F(vb3;):   28(bvec3) Function None 80
            87(p):     29(ptr) FunctionParameter
               89:             Label
-             212:    7(fvec3) Load 159(f3)
-             213:   28(bvec3) FOrdNotEqual 212 127
-                              Store 87(p) 213
-             214:    7(fvec3) Load 159(f3)
-             215:   28(bvec3) FOrdNotEqual 214 127
-                              ReturnValue 215
+             246:    177(ptr) AccessChain 108 176
+             247:    7(fvec3) Load 246
+             248:   28(bvec3) FOrdNotEqual 247 137
+                              Store 87(p) 248
+             249:    177(ptr) AccessChain 108 176
+             250:    7(fvec3) Load 249
+             251:   28(bvec3) FOrdNotEqual 250 137
+                              ReturnValue 251
                               FunctionEnd
 91(Fn_R_B3D(vb3;):   28(bvec3) Function None 80
            90(p):     29(ptr) FunctionParameter
               92:             Label
-             218:   35(fvec3) Load 135(d3)
-             221:   28(bvec3) FOrdNotEqual 218 220
-                              Store 90(p) 221
-             222:   35(fvec3) Load 135(d3)
-             223:   28(bvec3) FOrdNotEqual 222 220
-                              ReturnValue 223
+             254:    147(ptr) AccessChain 108 146
+             255:   35(fvec3) Load 254
+             258:   28(bvec3) FOrdNotEqual 255 257
+                              Store 90(p) 258
+             259:    147(ptr) AccessChain 108 146
+             260:   35(fvec3) Load 259
+             261:   28(bvec3) FOrdNotEqual 260 257
+                              ReturnValue 261
                               FunctionEnd
 95(Fn_R_D3I(vd3;):   35(fvec3) Function None 93
            94(p):     36(ptr) FunctionParameter
               96:             Label
-             226:   14(ivec3) Load 107(i3)
-             227:   35(fvec3) ConvertSToF 226
-                              Store 94(p) 227
-             228:   14(ivec3) Load 107(i3)
-             229:   35(fvec3) ConvertSToF 228
-                              ReturnValue 229
+             264:    110(ptr) AccessChain 108 109
+             265:   14(ivec3) Load 264
+             266:   35(fvec3) ConvertSToF 265
+                              Store 94(p) 266
+             267:    110(ptr) AccessChain 108 109
+             268:   14(ivec3) Load 267
+             269:   35(fvec3) ConvertSToF 268
+                              ReturnValue 269
                               FunctionEnd
 98(Fn_R_D3U(vd3;):   35(fvec3) Function None 93
            97(p):     36(ptr) FunctionParameter
               99:             Label
-             232:   21(ivec3) Load 115(u3)
-             233:   35(fvec3) ConvertUToF 232
-                              Store 97(p) 233
-             234:   21(ivec3) Load 115(u3)
-             235:   35(fvec3) ConvertUToF 234
-                              ReturnValue 235
+             272:    120(ptr) AccessChain 108 119
+             273:   21(ivec3) Load 272
+             274:   35(fvec3) ConvertUToF 273
+                              Store 97(p) 274
+             275:    120(ptr) AccessChain 108 119
+             276:   21(ivec3) Load 275
+             277:   35(fvec3) ConvertUToF 276
+                              ReturnValue 277
                               FunctionEnd
 101(Fn_R_D3B(vd3;):   35(fvec3) Function None 93
           100(p):     36(ptr) FunctionParameter
              102:             Label
-             238:   28(bvec3) Load 123(b3)
-             241:   35(fvec3) Select 238 240 220
-                              Store 100(p) 241
-             242:   28(bvec3) Load 123(b3)
-             243:   35(fvec3) Select 242 240 220
-                              ReturnValue 243
+             280:    120(ptr) AccessChain 108 129
+             281:   21(ivec3) Load 280
+             282:   28(bvec3) INotEqual 281 133
+             285:   35(fvec3) Select 282 284 257
+                              Store 100(p) 285
+             286:    120(ptr) AccessChain 108 129
+             287:   21(ivec3) Load 286
+             288:   28(bvec3) INotEqual 287 133
+             289:   35(fvec3) Select 288 284 257
+                              ReturnValue 289
                               FunctionEnd
 104(Fn_R_D3F(vd3;):   35(fvec3) Function None 93
           103(p):     36(ptr) FunctionParameter
              105:             Label
-             246:    7(fvec3) Load 159(f3)
-             247:   35(fvec3) FConvert 246
-                              Store 103(p) 247
-             248:    7(fvec3) Load 159(f3)
-             249:   35(fvec3) FConvert 248
-                              ReturnValue 249
+             292:    177(ptr) AccessChain 108 176
+             293:    7(fvec3) Load 292
+             294:   35(fvec3) FConvert 293
+                              Store 103(p) 294
+             295:    177(ptr) AccessChain 108 176
+             296:    7(fvec3) Load 295
+             297:   35(fvec3) FConvert 296
+                              ReturnValue 297
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.reflection.vert.out b/Test/baseResults/hlsl.reflection.vert.out
index 466b2a6f2..4ed4ddf66 100644
--- a/Test/baseResults/hlsl.reflection.vert.out
+++ b/Test/baseResults/hlsl.reflection.vert.out
@@ -5,7 +5,7 @@ Linked vertex stage:
 
 Uniform reflection:
 anonMember3: offset 80, type 8b52, size 1, index 0
-s.a: offset -1, type 1404, size 1, index -1
+s.a: offset 0, type 1404, size 1, index 1
 scalar: offset 12, type 1404, size 1, index 0
 m23: offset 16, type 8b67, size 1, index 0
 scalarAfterm23: offset 48, type 1404, size 1, index 0
@@ -20,60 +20,57 @@ memf2: offset 60, type 8b56, size 1, index 0
 memf3: offset 64, type 1404, size 1, index 0
 memfloat2a: offset 72, type 8b50, size 1, index 0
 m22: offset 80, type 8b5a, size 7, index 0
-dm22: offset -1, type 8b5a, size 4, index -1
+dm22: offset 32, type 8b5a, size 4, index 1
 foo.n1.a: offset 0, type 1406, size 1, index 0
 foo.n2.b: offset 16, type 1406, size 1, index 0
 foo.n2.c: offset 20, type 1406, size 1, index 0
 foo.n2.d: offset 24, type 1406, size 1, index 0
-deepA[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1
-deepA[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1
-deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1
-deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1
-deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1
-deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1
-deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1
-deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1
-deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1
-deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1
-deepC[1].iv4: offset -1, type 8b52, size 1, index -1
-deepC[1].d2.i: offset -1, type 1404, size 1, index -1
-deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1
-deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1
-deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1
-deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1
-deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1
-deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1
-deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1
-deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1
-deepC[1].v3: offset -1, type 8b54, size 1, index -1
-deepD[0].iv4: offset -1, type 8b52, size 1, index -1
-deepD[0].d2.i: offset -1, type 1404, size 1, index -1
-deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1
-deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1
-deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1
-deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1
-deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1
-deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1
-deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1
-deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1
-deepD[0].v3: offset -1, type 8b54, size 1, index -1
-deepD[1].iv4: offset -1, type 8b52, size 1, index -1
-deepD[1].d2.i: offset -1, type 1404, size 1, index -1
-deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1
-deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1
-deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1
-deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1
-deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1
-deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1
-deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1
-deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1
-deepD[1].v3: offset -1, type 8b54, size 1, index -1
+deepA.d2.d1[2].va: offset 376, type 8b50, size 2, index 1
+deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1
+deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1
+deepB.d2.d1[1].va: offset 984, type 8b50, size 2, index 1
+deepB.d2.d1[2].va: offset 984, type 8b50, size 2, index 1
+deepB.d2.d1[3].va: offset 984, type 8b50, size 2, index 1
+deepC.iv4: offset 1568, type 8b52, size 1, index 1
+deepC.d2.i: offset 1568, type 1404, size 1, index 1
+deepC.d2.d1[0].va: offset 1568, type 8b50, size 3, index 1
+deepC.d2.d1[0].b: offset 1568, type 8b56, size 1, index 1
+deepC.d2.d1[1].va: offset 1568, type 8b50, size 3, index 1
+deepC.d2.d1[1].b: offset 1568, type 8b56, size 1, index 1
+deepC.d2.d1[2].va: offset 1568, type 8b50, size 3, index 1
+deepC.d2.d1[2].b: offset 1568, type 8b56, size 1, index 1
+deepC.d2.d1[3].va: offset 1568, type 8b50, size 3, index 1
+deepC.d2.d1[3].b: offset 1568, type 8b56, size 1, index 1
+deepC.v3: offset 1568, type 8b54, size 1, index 1
+deepD[0].iv4: offset 2480, type 8b52, size 1, index 1
+deepD[0].d2.i: offset 2480, type 1404, size 1, index 1
+deepD[0].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1
+deepD[0].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1
+deepD[0].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1
+deepD[0].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1
+deepD[0].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1
+deepD[0].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1
+deepD[0].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1
+deepD[0].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1
+deepD[0].v3: offset 2480, type 8b54, size 1, index 1
+deepD[1].iv4: offset 2480, type 8b52, size 1, index 1
+deepD[1].d2.i: offset 2480, type 1404, size 1, index 1
+deepD[1].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1
+deepD[1].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1
+deepD[1].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1
+deepD[1].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1
+deepD[1].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1
+deepD[1].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1
+deepD[1].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1
+deepD[1].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1
+deepD[1].v3: offset 2480, type 8b54, size 1, index 1
 foo: offset 0, type 1406, size 1, index 0
 anonMember1: offset 0, type 8b51, size 1, index 0
-uf1: offset -1, type 1406, size 1, index -1
+uf1: offset 16, type 1406, size 1, index 1
 
 Uniform block reflection:
 : offset -1, type ffffffff, size 496, index -1
+$Global: offset -1, type ffffffff, size 3088, index -1
 
 Vertex attribute reflection:
 attributeFloat: offset 0, type 1406, size 0, index 0
diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out
index 54c3553a0..701229e07 100644
--- a/Test/baseResults/hlsl.sample.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.sample.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
@@ -158,7 +158,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
index dca7f774a..2746f16f8 100644
--- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
@@ -4,7 +4,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:53  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:53  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:53    Function Parameters: 
 0:?     Sequence
 0:57      move second child to first child (temp int)
@@ -273,7 +273,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:53  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:53  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:53    Function Parameters: 
 0:?     Sequence
 0:57      move second child to first child (temp int)
diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index b8c7d5ccc..48e3d85cc 100644
--- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.sample.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
@@ -179,7 +179,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
index b30a4e2d5..4d64fa0b4 100644
--- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.sample.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:20  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:20    Function Parameters: 
 0:?     Sequence
 0:23      Sequence
@@ -134,7 +134,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:20  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:20    Function Parameters: 
 0:?     Sequence
 0:23      Sequence
diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
index 66f4629a0..236889ba1 100644
--- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplebias.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
@@ -176,7 +176,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
index faba4bef2..408c5ffa6 100644
--- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplebias.basic.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
@@ -209,7 +209,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index e83058b07..ce7c4d337 100644
--- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplebias.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
@@ -197,7 +197,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
index a9e44041a..2bad0c311 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplebias.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:20  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:20    Function Parameters: 
 0:?     Sequence
 0:23      Sequence
@@ -146,7 +146,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:20  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:20    Function Parameters: 
 0:?     Sequence
 0:23      Sequence
diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
index 660db5b25..a968b7490 100644
--- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplecmp.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
@@ -196,7 +196,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
index 253a59e26..94986cfd4 100644
--- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplecmp.basic.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
@@ -187,7 +187,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
index 3d744bd3d..7e3d0de97 100644
--- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplecmp.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
@@ -160,7 +160,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
index 2eb302e7b..fab86ff3f 100644
--- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplecmp.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
@@ -166,7 +166,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
index 949f7f2bd..adeb3cbc9 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplecmplevelzero.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
@@ -214,7 +214,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
index 5f83499a4..0492ae780 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplecmplevelzero.basic.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
@@ -205,7 +205,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
index ceb1415f8..c50872f4c 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplecmplevelzero.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
@@ -172,7 +172,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
index ea32bcecc..88f8d347f 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplecmplevelzero.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
@@ -178,7 +178,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:38  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:38    Function Parameters: 
 0:?     Sequence
 0:42      Sequence
diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
index 16f575af8..ca057fd72 100644
--- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplegrad.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
@@ -212,7 +212,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
index d0d275f13..326bd0166 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplegrad.basic.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
@@ -263,7 +263,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
index 5e95ae0d2..ba56951ef 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
@@ -1,7 +1,7 @@
 hlsl.samplegrad.basic.dx10.vert
 Shader version: 450
 0:? Sequence
-0:27  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:27  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:27    Function Parameters: 
 0:?     Sequence
 0:30      Sequence
@@ -247,7 +247,7 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:27  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:27  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:27    Function Parameters: 
 0:?     Sequence
 0:30      Sequence
diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
index ffe88328d..b000b538c 100644
--- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplegrad.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
@@ -233,7 +233,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
index 9e1417600..8eee2b503 100644
--- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplegrad.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
@@ -167,7 +167,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
index 766f6acb9..4254e04b1 100644
--- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplelevel.array.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
@@ -176,7 +176,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:24  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:24    Function Parameters: 
 0:?     Sequence
 0:27      Sequence
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
index ee53339b0..44802a987 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplelevel.basic.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:29  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:29  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:29    Function Parameters: 
 0:?     Sequence
 0:32      Sequence
@@ -210,7 +210,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:29  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:29  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:29    Function Parameters: 
 0:?     Sequence
 0:32      Sequence
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
index 9af7a9fcd..e76a3955a 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
@@ -1,7 +1,7 @@
 hlsl.samplelevel.basic.dx10.vert
 Shader version: 450
 0:? Sequence
-0:27  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:27  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:27    Function Parameters: 
 0:?     Sequence
 0:30      Sequence
@@ -193,7 +193,7 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:27  Function Definition: main( (global structure{temp 4-component vector of float Pos})
+0:27  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:27    Function Parameters: 
 0:?     Sequence
 0:30      Sequence
diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
index d669a9991..043a04ca9 100644
--- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplelevel.offset.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
@@ -197,7 +197,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:28  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:31      Sequence
diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
index fd2673b6a..bfc444da5 100644
--- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@ hlsl.samplelevel.offsetarray.dx10.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:20  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:20    Function Parameters: 
 0:?     Sequence
 0:23      Sequence
@@ -146,7 +146,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:20  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
+0:20  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:20    Function Parameters: 
 0:?     Sequence
 0:23      Sequence
diff --git a/Test/baseResults/hlsl.scope.frag.out b/Test/baseResults/hlsl.scope.frag.out
index 4218c4fb8..81c1a8442 100755
--- a/Test/baseResults/hlsl.scope.frag.out
+++ b/Test/baseResults/hlsl.scope.frag.out
@@ -2,7 +2,7 @@ hlsl.scope.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global void)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp void)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -47,7 +47,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global void)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp void)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out
index a37991d84..43232161d 100644
--- a/Test/baseResults/hlsl.semicolons.frag.out
+++ b/Test/baseResults/hlsl.semicolons.frag.out
@@ -2,11 +2,11 @@ hlsl.semicolons.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: MyFunc( (global void)
+0:2  Function Definition: MyFunc( (temp void)
 0:2    Function Parameters: 
-0:8  Function Definition: MyFunc2( (global void)
+0:8  Function Definition: MyFunc2( (temp void)
 0:8    Function Parameters: 
-0:13  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:13  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:13    Function Parameters: 
 0:?     Sequence
 0:16      move second child to first child (temp 4-component vector of float)
@@ -38,11 +38,11 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: MyFunc( (global void)
+0:2  Function Definition: MyFunc( (temp void)
 0:2    Function Parameters: 
-0:8  Function Definition: MyFunc2( (global void)
+0:8  Function Definition: MyFunc2( (temp void)
 0:8    Function Parameters: 
-0:13  Function Definition: main( (global structure{temp 4-component vector of float color})
+0:13  Function Definition: main( (temp structure{temp 4-component vector of float color})
 0:13    Function Parameters: 
 0:?     Sequence
 0:16      move second child to first child (temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out
index c7fdf8d02..9ea4f8391 100755
--- a/Test/baseResults/hlsl.shapeConv.frag.out
+++ b/Test/baseResults/hlsl.shapeConv.frag.out
@@ -2,7 +2,7 @@ hlsl.shapeConv.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4;f1; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (in 4-component vector of float)
 0:2      'f' (in float)
@@ -117,7 +117,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4;f1; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (in 4-component vector of float)
 0:2      'f' (in float)
diff --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out
index e4940ae60..0836a6188 100755
--- a/Test/baseResults/hlsl.sin.frag.out
+++ b/Test/baseResults/hlsl.sin.frag.out
@@ -2,7 +2,7 @@ hlsl.sin.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -23,7 +23,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.string.frag.out b/Test/baseResults/hlsl.string.frag.out
index 6016f52ee..3d80ce535 100755
--- a/Test/baseResults/hlsl.string.frag.out
+++ b/Test/baseResults/hlsl.string.frag.out
@@ -2,7 +2,7 @@ hlsl.string.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:10  Function Definition: main(f1; (global float)
+0:10  Function Definition: main(f1; (temp float)
 0:10    Function Parameters: 
 0:10      'f' (layout(location=0 ) in float)
 0:?     Sequence
@@ -22,7 +22,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:10  Function Definition: main(f1; (global float)
+0:10  Function Definition: main(f1; (temp float)
 0:10    Function Parameters: 
 0:10      'f' (layout(location=0 ) in float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out
index 42885bcf2..4fdfeccea 100644
--- a/Test/baseResults/hlsl.stringtoken.frag.out
+++ b/Test/baseResults/hlsl.stringtoken.frag.out
@@ -2,7 +2,7 @@ hlsl.stringtoken.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:16  Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:16  Function Definition: main( (temp structure{temp 4-component vector of float Color})
 0:16    Function Parameters: 
 0:?     Sequence
 0:18      move second child to first child (temp 4-component vector of float)
@@ -26,8 +26,8 @@ gl_FragCoord origin is upper left
 0:19        Branch: Return
 0:?   Linker Objects
 0:?     'TestTexture' (uniform texture2D)
-0:?     'TestUF' (uniform 4-component vector of float)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF})
 
 
 Linked fragment stage:
@@ -36,7 +36,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:16  Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:16  Function Definition: main( (temp structure{temp 4-component vector of float Color})
 0:16    Function Parameters: 
 0:?     Sequence
 0:18      move second child to first child (temp 4-component vector of float)
@@ -60,12 +60,12 @@ gl_FragCoord origin is upper left
 0:19        Branch: Return
 0:?   Linker Objects
 0:?     'TestTexture' (uniform texture2D)
-0:?     'TestUF' (uniform 4-component vector of float)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF})
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 28
+// Id's are bound by 29
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -78,9 +78,13 @@ gl_FragCoord origin is upper left
                               Name 10  "psout"
                               Name 19  "Color"
                               Name 25  "TestTexture"
-                              Name 27  "TestUF"
+                              Name 26  "$Global"
+                              MemberName 26($Global) 0  "TestUF"
+                              Name 28  ""
                               Decorate 19(Color) Location 0
                               Decorate 25(TestTexture) DescriptorSet 0
+                              Decorate 26($Global) Block
+                              Decorate 28 DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -98,8 +102,9 @@ gl_FragCoord origin is upper left
               23:             TypeImage 6(float) 2D sampled format:Unknown
               24:             TypePointer UniformConstant 23
  25(TestTexture):     24(ptr) Variable UniformConstant
-              26:             TypePointer UniformConstant 7(fvec4)
-      27(TestUF):     26(ptr) Variable UniformConstant
+     26($Global):             TypeStruct 7(fvec4)
+              27:             TypePointer Uniform 26($Global)
+              28:     27(ptr) Variable Uniform
          4(main):           2 Function None 3
                5:             Label
        10(psout):      9(ptr) Variable Function
diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out
index 3a4449533..04117d733 100755
--- a/Test/baseResults/hlsl.struct.frag.out
+++ b/Test/baseResults/hlsl.struct.frag.out
@@ -6,7 +6,7 @@ WARNING: 0:30: 'register' : ignoring shader_profile
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:34  Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float)
+0:34  Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
 0:34    Function Parameters: 
 0:34      'input' (layout(location=0 ) in 4-component vector of float)
 0:34      's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
@@ -16,7 +16,10 @@ gl_FragCoord origin is upper left
 0:39        's3' (temp structure{temp 3-component vector of bool b3})
 0:40      move second child to first child (temp 4-component vector of float)
 0:40        i: direct index for structure (temp 4-component vector of float)
-0:40          's2' (global structure{temp 4-component vector of float i})
+0:40          s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i})
+0:40            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
+0:40            Constant:
+0:40              1 (const uint)
 0:40          Constant:
 0:40            0 (const int)
 0:?         'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
@@ -26,11 +29,8 @@ gl_FragCoord origin is upper left
 0:42          'input' (layout(location=0 ) in 4-component vector of float)
 0:42        Branch: Return
 0:?   Linker Objects
-0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
-0:?     's2' (global structure{temp 4-component vector of float i})
-0:?     'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float)
-0:?     'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float)
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
 0:?     'input' (layout(location=0 ) in 4-component vector of float)
 0:?     'a' (layout(location=1 ) smooth in 4-component vector of float)
 0:?     'b' (layout(location=2 ) flat in bool)
@@ -48,7 +48,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:34  Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float)
+0:34  Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float)
 0:34    Function Parameters: 
 0:34      'input' (layout(location=0 ) in 4-component vector of float)
 0:34      's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
@@ -58,7 +58,10 @@ gl_FragCoord origin is upper left
 0:39        's3' (temp structure{temp 3-component vector of bool b3})
 0:40      move second child to first child (temp 4-component vector of float)
 0:40        i: direct index for structure (temp 4-component vector of float)
-0:40          's2' (global structure{temp 4-component vector of float i})
+0:40          s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i})
+0:40            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
+0:40            Constant:
+0:40              1 (const uint)
 0:40          Constant:
 0:40            0 (const int)
 0:?         'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
@@ -68,11 +71,8 @@ gl_FragCoord origin is upper left
 0:42          'input' (layout(location=0 ) in 4-component vector of float)
 0:42        Branch: Return
 0:?   Linker Objects
-0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
-0:?     's2' (global structure{temp 4-component vector of float i})
-0:?     'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float)
-0:?     'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float)
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
 0:?     'input' (layout(location=0 ) in 4-component vector of float)
 0:?     'a' (layout(location=1 ) smooth in 4-component vector of float)
 0:?     'b' (layout(location=2 ) flat in bool)
@@ -85,98 +85,104 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 52
+// Id's are bound by 49
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 25 30 31 41 43 45 48 49 50 51
+                              EntryPoint Fragment 4  "PixelShaderFunction" 29 34 35 38 40 42 45 46 47 48
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "PixelShaderFunction"
                               Name 8  "FS"
                               MemberName 8(FS) 0  "b3"
                               Name 10  "s3"
-                              Name 19  ""
-                              MemberName 19 0  "i"
-                              Name 21  "s2"
-                              Name 25  "ff4"
-                              Name 30  "@entryPointOutput"
-                              Name 31  "input"
-                              Name 34  "myS"
-                              MemberName 34(myS) 0  "b"
-                              MemberName 34(myS) 1  "c"
-                              MemberName 34(myS) 2  "a"
-                              MemberName 34(myS) 3  "d"
-                              Name 36  "s1"
-                              Name 39  "ff5"
-                              Name 40  "ff6"
-                              Name 41  "a"
-                              Name 43  "b"
-                              Name 45  "c"
-                              Name 48  "d"
-                              Name 49  "ff1"
-                              Name 50  "ff2"
-                              Name 51  "ff3"
-                              Decorate 25(ff4) Offset 4
-                              Decorate 25(ff4) Location 7
-                              Decorate 25(ff4) Binding 0
-                              Decorate 30(@entryPointOutput) Location 0
-                              Decorate 31(input) Location 0
-                              Decorate 39(ff5) Offset 20
-                              Decorate 39(ff5) Binding 5
-                              Decorate 40(ff6) Offset 36
-                              Decorate 40(ff6) Binding 8
-                              Decorate 41(a) Location 1
-                              Decorate 43(b) Flat
-                              Decorate 43(b) Location 2
-                              Decorate 45(c) NoPerspective
-                              Decorate 45(c) Centroid
-                              Decorate 45(c) Location 3
-                              Decorate 48(d) Centroid
-                              Decorate 48(d) Location 4
-                              Decorate 49(ff1) BuiltIn FrontFacing
-                              Decorate 50(ff2) Offset 4
-                              Decorate 50(ff2) Location 5
-                              Decorate 51(ff3) Offset 4
-                              Decorate 51(ff3) Location 6
-                              Decorate 51(ff3) Binding 0
+                              Name 20  "myS"
+                              MemberName 20(myS) 0  "b"
+                              MemberName 20(myS) 1  "c"
+                              MemberName 20(myS) 2  "a"
+                              MemberName 20(myS) 3  "d"
+                              Name 21  ""
+                              MemberName 21 0  "i"
+                              Name 22  "$Global"
+                              MemberName 22($Global) 0  "s1"
+                              MemberName 22($Global) 1  "s2"
+                              MemberName 22($Global) 2  "ff5"
+                              MemberName 22($Global) 3  "ff6"
+                              Name 24  ""
+                              Name 29  "ff4"
+                              Name 34  "@entryPointOutput"
+                              Name 35  "input"
+                              Name 38  "a"
+                              Name 40  "b"
+                              Name 42  "c"
+                              Name 45  "d"
+                              Name 46  "ff1"
+                              Name 47  "ff2"
+                              Name 48  "ff3"
+                              MemberDecorate 20(myS) 0 Offset 0
+                              MemberDecorate 20(myS) 1 Offset 4
+                              MemberDecorate 20(myS) 2 Offset 16
+                              MemberDecorate 20(myS) 3 Offset 32
+                              MemberDecorate 21 0 Offset 0
+                              MemberDecorate 22($Global) 0 Offset 0
+                              MemberDecorate 22($Global) 1 Offset 48
+                              MemberDecorate 22($Global) 2 Offset 1620
+                              MemberDecorate 22($Global) 3 Offset 1636
+                              Decorate 22($Global) Block
+                              Decorate 24 DescriptorSet 0
+                              Decorate 29(ff4) Offset 4
+                              Decorate 29(ff4) Location 7
+                              Decorate 29(ff4) Binding 0
+                              Decorate 34(@entryPointOutput) Location 0
+                              Decorate 35(input) Location 0
+                              Decorate 38(a) Location 1
+                              Decorate 40(b) Flat
+                              Decorate 40(b) Location 2
+                              Decorate 42(c) NoPerspective
+                              Decorate 42(c) Centroid
+                              Decorate 42(c) Location 3
+                              Decorate 45(d) Centroid
+                              Decorate 45(d) Location 4
+                              Decorate 46(ff1) BuiltIn FrontFacing
+                              Decorate 47(ff2) Offset 4
+                              Decorate 47(ff2) Location 5
+                              Decorate 48(ff3) Offset 4
+                              Decorate 48(ff3) Location 6
+                              Decorate 48(ff3) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeBool
                7:             TypeVector 6(bool) 3
            8(FS):             TypeStruct 7(bvec3)
                9:             TypePointer Function 8(FS)
-              17:             TypeFloat 32
-              18:             TypeVector 17(float) 4
-              19:             TypeStruct 18(fvec4)
-              20:             TypePointer Private 19(struct)
-          21(s2):     20(ptr) Variable Private
-              22:             TypeInt 32 1
-              23:     22(int) Constant 0
-              24:             TypePointer Input 18(fvec4)
-         25(ff4):     24(ptr) Variable Input
-              27:             TypePointer Private 18(fvec4)
-              29:             TypePointer Output 18(fvec4)
-30(@entryPointOutput):     29(ptr) Variable Output
-       31(input):     24(ptr) Variable Input
-         34(myS):             TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
-              35:             TypePointer Private 34(myS)
-          36(s1):     35(ptr) Variable Private
-              37:             TypeVector 17(float) 3
-              38:             TypePointer Private 37(fvec3)
-         39(ff5):     38(ptr) Variable Private
-         40(ff6):     38(ptr) Variable Private
-           41(a):     24(ptr) Variable Input
-              42:             TypePointer Input 6(bool)
-           43(b):     42(ptr) Variable Input
-              44:             TypePointer Input 17(float)
-           45(c):     44(ptr) Variable Input
-              46:             TypeVector 17(float) 2
-              47:             TypePointer Input 46(fvec2)
-           48(d):     47(ptr) Variable Input
-         49(ff1):     42(ptr) Variable Input
-         50(ff2):     42(ptr) Variable Input
-         51(ff3):     42(ptr) Variable Input
+              17:             TypeInt 32 0
+              18:             TypeFloat 32
+              19:             TypeVector 18(float) 4
+         20(myS):             TypeStruct 17(int) 17(int) 19(fvec4) 19(fvec4)
+              21:             TypeStruct 19(fvec4)
+     22($Global):             TypeStruct 20(myS) 21(struct) 18(float) 18(float)
+              23:             TypePointer Uniform 22($Global)
+              24:     23(ptr) Variable Uniform
+              25:             TypeInt 32 1
+              26:     25(int) Constant 1
+              27:     25(int) Constant 0
+              28:             TypePointer Input 19(fvec4)
+         29(ff4):     28(ptr) Variable Input
+              31:             TypePointer Uniform 19(fvec4)
+              33:             TypePointer Output 19(fvec4)
+34(@entryPointOutput):     33(ptr) Variable Output
+       35(input):     28(ptr) Variable Input
+           38(a):     28(ptr) Variable Input
+              39:             TypePointer Input 6(bool)
+           40(b):     39(ptr) Variable Input
+              41:             TypePointer Input 18(float)
+           42(c):     41(ptr) Variable Input
+              43:             TypeVector 18(float) 2
+              44:             TypePointer Input 43(fvec2)
+           45(d):     44(ptr) Variable Input
+         46(ff1):     39(ptr) Variable Input
+         47(ff2):     39(ptr) Variable Input
+         48(ff3):     39(ptr) Variable Input
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
           10(s3):      9(ptr) Variable Function
@@ -186,10 +192,10 @@ gl_FragCoord origin is upper left
               14:    7(bvec3) CompositeExtract 12 0
               15:    7(bvec3) LogicalEqual 13 14
               16:     6(bool) All 15
-              26:   18(fvec4) Load 25(ff4)
-              28:     27(ptr) AccessChain 21(s2) 23
-                              Store 28 26
-              32:   18(fvec4) Load 31(input)
-                              Store 30(@entryPointOutput) 32
+              30:   19(fvec4) Load 29(ff4)
+              32:     31(ptr) AccessChain 24 26 27
+                              Store 32 30
+              36:   19(fvec4) Load 35(input)
+                              Store 34(@entryPointOutput) 36
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out
index b27f210b1..193ccc1cc 100755
--- a/Test/baseResults/hlsl.structin.vert.out
+++ b/Test/baseResults/hlsl.structin.vert.out
@@ -1,7 +1,7 @@
 hlsl.structin.vert
 Shader version: 450
 0:? Sequence
-0:8  Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8  Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
 0:8    Function Parameters: 
 0:8      'd' (layout(location=0 ) in 4-component vector of float)
 0:8      'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
@@ -69,7 +69,7 @@ Linked vertex stage:
 
 Shader version: 450
 0:? Sequence
-0:8  Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8  Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (temp structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
 0:8    Function Parameters: 
 0:8      'd' (layout(location=0 ) in 4-component vector of float)
 0:8      'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
diff --git a/Test/baseResults/hlsl.switch.frag.out b/Test/baseResults/hlsl.switch.frag.out
index abf777ab6..af516e2c9 100755
--- a/Test/baseResults/hlsl.switch.frag.out
+++ b/Test/baseResults/hlsl.switch.frag.out
@@ -2,7 +2,7 @@ hlsl.switch.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4;i1;i1; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:2      'c' (layout(location=1 ) in int)
@@ -137,7 +137,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4;i1;i1; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:2      'c' (layout(location=1 ) in int)
diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out
index 0bc4bd069..16951a345 100755
--- a/Test/baseResults/hlsl.swizzle.frag.out
+++ b/Test/baseResults/hlsl.swizzle.frag.out
@@ -10,7 +10,7 @@ gl_FragCoord origin is upper left
 0:?         0.500000
 0:?         0.000000
 0:?         1.000000
-0:4  Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:4  Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' (in 4-component vector of float)
 0:?     Sequence
@@ -50,7 +50,7 @@ gl_FragCoord origin is upper left
 0:?         0.500000
 0:?         0.000000
 0:?         1.000000
-0:4  Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:4  Function Definition: ShaderFunction(vf4; (temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' (in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out
index f5260869e..c5c73ecb4 100644
--- a/Test/baseResults/hlsl.templatetypes.frag.out
+++ b/Test/baseResults/hlsl.templatetypes.frag.out
@@ -2,7 +2,7 @@ hlsl.templatetypes.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:3  Function Definition: PixelShaderFunction( (global float)
+0:3  Function Definition: PixelShaderFunction( (temp float)
 0:3    Function Parameters: 
 0:?     Sequence
 0:4      Sequence
@@ -255,7 +255,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:3  Function Definition: PixelShaderFunction( (global float)
+0:3  Function Definition: PixelShaderFunction( (temp float)
 0:3    Function Parameters: 
 0:?     Sequence
 0:4      Sequence
diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out
index 0600873f5..e8bda1af3 100755
--- a/Test/baseResults/hlsl.typedef.frag.out
+++ b/Test/baseResults/hlsl.typedef.frag.out
@@ -2,7 +2,7 @@ hlsl.typedef.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:4  Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float)
+0:4  Function Definition: ShaderFunction(vf4;i1; (temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' (in 4-component vector of float)
 0:4      'ii' (in int)
@@ -29,7 +29,7 @@ gl_FragCoord origin is upper left
 0:10          component-wise multiply (temp 4-component vector of float)
 0:10            'input' (in 4-component vector of float)
 0:10            'a1' (temp 4-component vector of float)
-0:10          Construct vec4 (global 4-component vector of float)
+0:10          Construct vec4 (uniform 4-component vector of float)
 0:10            Convert int to float (temp float)
 0:10              add (temp int)
 0:10                'i' (temp int)
@@ -43,7 +43,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:4  Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float)
+0:4  Function Definition: ShaderFunction(vf4;i1; (temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' (in 4-component vector of float)
 0:4      'ii' (in int)
@@ -70,7 +70,7 @@ gl_FragCoord origin is upper left
 0:10          component-wise multiply (temp 4-component vector of float)
 0:10            'input' (in 4-component vector of float)
 0:10            'a1' (temp 4-component vector of float)
-0:10          Construct vec4 (global 4-component vector of float)
+0:10          Construct vec4 (uniform 4-component vector of float)
 0:10            Convert int to float (temp float)
 0:10              add (temp int)
 0:10                'i' (temp int)
diff --git a/Test/baseResults/hlsl.void.frag.out b/Test/baseResults/hlsl.void.frag.out
index 3715166f2..6faa388a3 100755
--- a/Test/baseResults/hlsl.void.frag.out
+++ b/Test/baseResults/hlsl.void.frag.out
@@ -2,16 +2,16 @@ hlsl.void.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:1  Function Definition: foo1( (global void)
+0:1  Function Definition: foo1( (temp void)
 0:1    Function Parameters: 
-0:2  Function Definition: foo2( (global void)
+0:2  Function Definition: foo2( (temp void)
 0:2    Function Parameters: 
-0:5  Function Definition: PixelShaderFunction(vf4; (global void)
+0:5  Function Definition: PixelShaderFunction(vf4; (temp void)
 0:5    Function Parameters: 
 0:5      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
-0:6      Function Call: foo1( (global void)
-0:7      Function Call: foo2( (global void)
+0:6      Function Call: foo1( (temp void)
+0:7      Function Call: foo2( (temp void)
 0:8      Branch: Return
 0:?   Linker Objects
 0:?     'input' (layout(location=0 ) in 4-component vector of float)
@@ -23,16 +23,16 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:1  Function Definition: foo1( (global void)
+0:1  Function Definition: foo1( (temp void)
 0:1    Function Parameters: 
-0:2  Function Definition: foo2( (global void)
+0:2  Function Definition: foo2( (temp void)
 0:2    Function Parameters: 
-0:5  Function Definition: PixelShaderFunction(vf4; (global void)
+0:5  Function Definition: PixelShaderFunction(vf4; (temp void)
 0:5    Function Parameters: 
 0:5      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
-0:6      Function Call: foo1( (global void)
-0:7      Function Call: foo2( (global void)
+0:6      Function Call: foo1( (temp void)
+0:7      Function Call: foo2( (temp void)
 0:8      Branch: Return
 0:?   Linker Objects
 0:?     'input' (layout(location=0 ) in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out
index 63e14dcc6..28e326d22 100755
--- a/Test/baseResults/hlsl.whileLoop.frag.out
+++ b/Test/baseResults/hlsl.whileLoop.frag.out
@@ -2,7 +2,7 @@ hlsl.whileLoop.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
@@ -44,7 +44,7 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2  Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
 0:2    Function Parameters: 
 0:2      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out
index c2cd59a38..faf20cdd6 100644
--- a/Test/baseResults/spv.register.autoassign.frag.out
+++ b/Test/baseResults/spv.register.autoassign.frag.out
@@ -5,13 +5,13 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 154
+// Id's are bound by 150
 
                               Capability Shader
                               Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main_ep" 143
+                              EntryPoint Fragment 4  "main_ep" 145
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main_ep"
                               Name 9  "Func1("
@@ -31,19 +31,21 @@ Linked fragment stage:
                               MemberName 93(MyStruct_t) 0  "a"
                               MemberName 93(MyStruct_t) 1  "b"
                               MemberName 93(MyStruct_t) 2  "c"
-                              Name 95  "mystruct"
-                              Name 117  "g_tTex_unused1"
-                              Name 119  "g_sSamp_unused1"
-                              Name 124  "g_tTex_unused2"
-                              Name 126  "g_sSamp_unused2"
-                              Name 134  "PS_OUTPUT"
-                              MemberName 134(PS_OUTPUT) 0  "Color"
-                              Name 136  "psout"
-                              Name 143  "Color"
-                              Name 147  "g_tTex_unused3"
-                              Name 149  "myfloat4_a"
-                              Name 150  "myfloat4_b"
-                              Name 153  "myint4_a"
+                              Name 95  "$Global"
+                              MemberName 95($Global) 0  "mystruct"
+                              MemberName 95($Global) 1  "myfloat4_a"
+                              MemberName 95($Global) 2  "myfloat4_b"
+                              MemberName 95($Global) 3  "myint4_a"
+                              Name 97  ""
+                              Name 119  "g_tTex_unused1"
+                              Name 121  "g_sSamp_unused1"
+                              Name 126  "g_tTex_unused2"
+                              Name 128  "g_sSamp_unused2"
+                              Name 136  "PS_OUTPUT"
+                              MemberName 136(PS_OUTPUT) 0  "Color"
+                              Name 138  "psout"
+                              Name 145  "Color"
+                              Name 149  "g_tTex_unused3"
                               Decorate 17(g_tTex1) DescriptorSet 0
                               Decorate 17(g_tTex1) Binding 11
                               Decorate 21(g_sSamp1) DescriptorSet 0
@@ -64,15 +66,24 @@ Linked fragment stage:
                               Decorate 84(g_tTex5) Binding 6
                               Decorate 86(g_sSamp5) DescriptorSet 0
                               Decorate 86(g_sSamp5) Binding 8
-                              Decorate 95(mystruct) Binding 19
-                              Decorate 117(g_tTex_unused1) DescriptorSet 0
-                              Decorate 117(g_tTex_unused1) Binding 10
-                              Decorate 119(g_sSamp_unused1) DescriptorSet 0
-                              Decorate 124(g_tTex_unused2) DescriptorSet 0
-                              Decorate 124(g_tTex_unused2) Binding 12
-                              Decorate 126(g_sSamp_unused2) DescriptorSet 0
-                              Decorate 143(Color) Location 0
-                              Decorate 147(g_tTex_unused3) DescriptorSet 0
+                              MemberDecorate 93(MyStruct_t) 0 Offset 0
+                              MemberDecorate 93(MyStruct_t) 1 Offset 4
+                              MemberDecorate 93(MyStruct_t) 2 Offset 16
+                              MemberDecorate 95($Global) 0 Offset 0
+                              MemberDecorate 95($Global) 1 Offset 32
+                              MemberDecorate 95($Global) 2 Offset 48
+                              MemberDecorate 95($Global) 3 Offset 64
+                              Decorate 95($Global) Block
+                              Decorate 97 DescriptorSet 0
+                              Decorate 97 Binding 9
+                              Decorate 119(g_tTex_unused1) DescriptorSet 0
+                              Decorate 119(g_tTex_unused1) Binding 10
+                              Decorate 121(g_sSamp_unused1) DescriptorSet 0
+                              Decorate 126(g_tTex_unused2) DescriptorSet 0
+                              Decorate 126(g_tTex_unused2) Binding 12
+                              Decorate 128(g_sSamp_unused2) DescriptorSet 0
+                              Decorate 145(Color) Location 0
+                              Decorate 149(g_tTex_unused3) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -115,39 +126,35 @@ Linked fragment stage:
               89:    6(float) Constant 1056964608
               92:             TypeVector 6(float) 3
   93(MyStruct_t):             TypeStruct 40(int) 6(float) 92(fvec3)
-              94:             TypePointer UniformConstant 93(MyStruct_t)
-    95(mystruct):     94(ptr) Variable UniformConstant
-              96:     35(int) Constant 1
-              97:             TypePointer UniformConstant 6(float)
-117(g_tTex_unused1):     16(ptr) Variable UniformConstant
-119(g_sSamp_unused1):     20(ptr) Variable UniformConstant
-             122:    6(float) Constant 1066192077
-124(g_tTex_unused2):     16(ptr) Variable UniformConstant
-126(g_sSamp_unused2):     20(ptr) Variable UniformConstant
-             129:    6(float) Constant 1067030938
-  134(PS_OUTPUT):             TypeStruct 7(fvec4)
-             135:             TypePointer Function 134(PS_OUTPUT)
-             140:             TypePointer Function 7(fvec4)
-             142:             TypePointer Output 7(fvec4)
-      143(Color):    142(ptr) Variable Output
-147(g_tTex_unused3):     16(ptr) Variable UniformConstant
-             148:             TypePointer UniformConstant 7(fvec4)
- 149(myfloat4_a):    148(ptr) Variable UniformConstant
- 150(myfloat4_b):    148(ptr) Variable UniformConstant
-             151:             TypeVector 40(int) 4
-             152:             TypePointer UniformConstant 151(ivec4)
-   153(myint4_a):    152(ptr) Variable UniformConstant
+              94:             TypeVector 40(int) 4
+     95($Global):             TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4)
+              96:             TypePointer Uniform 95($Global)
+              97:     96(ptr) Variable Uniform
+              98:     35(int) Constant 1
+              99:             TypePointer Uniform 6(float)
+119(g_tTex_unused1):     16(ptr) Variable UniformConstant
+121(g_sSamp_unused1):     20(ptr) Variable UniformConstant
+             124:    6(float) Constant 1066192077
+126(g_tTex_unused2):     16(ptr) Variable UniformConstant
+128(g_sSamp_unused2):     20(ptr) Variable UniformConstant
+             131:    6(float) Constant 1067030938
+  136(PS_OUTPUT):             TypeStruct 7(fvec4)
+             137:             TypePointer Function 136(PS_OUTPUT)
+             142:             TypePointer Function 7(fvec4)
+             144:             TypePointer Output 7(fvec4)
+      145(Color):    144(ptr) Variable Output
+149(g_tTex_unused3):     16(ptr) Variable UniformConstant
       4(main_ep):           2 Function None 3
                5:             Label
-      136(psout):    135(ptr) Variable Function
-             137:    7(fvec4) FunctionCall 9(Func1()
-             138:    7(fvec4) FunctionCall 11(Func2()
-             139:    7(fvec4) FAdd 137 138
-             141:    140(ptr) AccessChain 136(psout) 41
-                              Store 141 139
-             144:    140(ptr) AccessChain 136(psout) 41
-             145:    7(fvec4) Load 144
-                              Store 143(Color) 145
+      138(psout):    137(ptr) Variable Function
+             139:    7(fvec4) FunctionCall 9(Func1()
+             140:    7(fvec4) FunctionCall 11(Func2()
+             141:    7(fvec4) FAdd 139 140
+             143:    142(ptr) AccessChain 138(psout) 41
+                              Store 143 141
+             146:    142(ptr) AccessChain 138(psout) 41
+             147:    7(fvec4) Load 146
+                              Store 145(Color) 147
                               Return
                               FunctionEnd
        9(Func1():    7(fvec4) Function None 8
@@ -194,37 +201,37 @@ Linked fragment stage:
               88:          23 SampledImage 85 87
               90:    7(fvec4) ImageSampleImplicitLod 88 89
               91:    7(fvec4) FAdd 83 90
-              98:     97(ptr) AccessChain 95(mystruct) 76 96
-              99:    6(float) Load 98
-             100:    7(fvec4) CompositeConstruct 99 99 99 99
-             101:    7(fvec4) FAdd 91 100
-                              ReturnValue 101
+             100:     99(ptr) AccessChain 97 41 76 98
+             101:    6(float) Load 100
+             102:    7(fvec4) CompositeConstruct 101 101 101 101
+             103:    7(fvec4) FAdd 91 102
+                              ReturnValue 103
                               FunctionEnd
       11(Func2():    7(fvec4) Function None 8
               12:             Label
-             104:          15 Load 17(g_tTex1)
-             105:          19 Load 21(g_sSamp1)
-             106:          23 SampledImage 104 105
-             107:    7(fvec4) ImageSampleImplicitLod 106 25
-             108:     16(ptr) AccessChain 39(g_tTex3) 53
-             109:          15 Load 108
-             110:     20(ptr) AccessChain 46(g_sSamp3) 53
-             111:          19 Load 110
-             112:          23 SampledImage 109 111
-             113:    7(fvec4) ImageSampleImplicitLod 112 50
-             114:    7(fvec4) FAdd 107 113
-                              ReturnValue 114
+             106:          15 Load 17(g_tTex1)
+             107:          19 Load 21(g_sSamp1)
+             108:          23 SampledImage 106 107
+             109:    7(fvec4) ImageSampleImplicitLod 108 25
+             110:     16(ptr) AccessChain 39(g_tTex3) 53
+             111:          15 Load 110
+             112:     20(ptr) AccessChain 46(g_sSamp3) 53
+             113:          19 Load 112
+             114:          23 SampledImage 111 113
+             115:    7(fvec4) ImageSampleImplicitLod 114 50
+             116:    7(fvec4) FAdd 109 115
+                              ReturnValue 116
                               FunctionEnd
 13(Func2_unused():    7(fvec4) Function None 8
               14:             Label
-             118:          15 Load 117(g_tTex_unused1)
-             120:          19 Load 119(g_sSamp_unused1)
-             121:          23 SampledImage 118 120
-             123:    7(fvec4) ImageSampleImplicitLod 121 122
-             125:          15 Load 124(g_tTex_unused2)
-             127:          19 Load 126(g_sSamp_unused2)
-             128:          23 SampledImage 125 127
-             130:    7(fvec4) ImageSampleImplicitLod 128 129
-             131:    7(fvec4) FAdd 123 130
-                              ReturnValue 131
+             120:          15 Load 119(g_tTex_unused1)
+             122:          19 Load 121(g_sSamp_unused1)
+             123:          23 SampledImage 120 122
+             125:    7(fvec4) ImageSampleImplicitLod 123 124
+             127:          15 Load 126(g_tTex_unused2)
+             129:          19 Load 128(g_sSamp_unused2)
+             130:          23 SampledImage 127 129
+             132:    7(fvec4) ImageSampleImplicitLod 130 131
+             133:    7(fvec4) FAdd 125 132
+                              ReturnValue 133
                               FunctionEnd
diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out
index 3a8ab1a36..ad476eeb3 100644
--- a/Test/baseResults/spv.register.noautoassign.frag.out
+++ b/Test/baseResults/spv.register.noautoassign.frag.out
@@ -5,13 +5,13 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 154
+// Id's are bound by 150
 
                               Capability Shader
                               Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main_ep" 143
+                              EntryPoint Fragment 4  "main_ep" 145
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main_ep"
                               Name 9  "Func1("
@@ -31,19 +31,21 @@ Linked fragment stage:
                               MemberName 93(MyStruct_t) 0  "a"
                               MemberName 93(MyStruct_t) 1  "b"
                               MemberName 93(MyStruct_t) 2  "c"
-                              Name 95  "mystruct"
-                              Name 117  "g_tTex_unused1"
-                              Name 119  "g_sSamp_unused1"
-                              Name 124  "g_tTex_unused2"
-                              Name 126  "g_sSamp_unused2"
-                              Name 134  "PS_OUTPUT"
-                              MemberName 134(PS_OUTPUT) 0  "Color"
-                              Name 136  "psout"
-                              Name 143  "Color"
-                              Name 147  "g_tTex_unused3"
-                              Name 149  "myfloat4_a"
-                              Name 150  "myfloat4_b"
-                              Name 153  "myint4_a"
+                              Name 95  "$Global"
+                              MemberName 95($Global) 0  "mystruct"
+                              MemberName 95($Global) 1  "myfloat4_a"
+                              MemberName 95($Global) 2  "myfloat4_b"
+                              MemberName 95($Global) 3  "myint4_a"
+                              Name 97  ""
+                              Name 119  "g_tTex_unused1"
+                              Name 121  "g_sSamp_unused1"
+                              Name 126  "g_tTex_unused2"
+                              Name 128  "g_sSamp_unused2"
+                              Name 136  "PS_OUTPUT"
+                              MemberName 136(PS_OUTPUT) 0  "Color"
+                              Name 138  "psout"
+                              Name 145  "Color"
+                              Name 149  "g_tTex_unused3"
                               Decorate 17(g_tTex1) DescriptorSet 0
                               Decorate 17(g_tTex1) Binding 11
                               Decorate 21(g_sSamp1) DescriptorSet 0
@@ -58,15 +60,23 @@ Linked fragment stage:
                               Decorate 69(g_sSamp4) DescriptorSet 0
                               Decorate 84(g_tTex5) DescriptorSet 0
                               Decorate 86(g_sSamp5) DescriptorSet 0
-                              Decorate 95(mystruct) Binding 19
-                              Decorate 117(g_tTex_unused1) DescriptorSet 0
-                              Decorate 117(g_tTex_unused1) Binding 10
-                              Decorate 119(g_sSamp_unused1) DescriptorSet 0
-                              Decorate 124(g_tTex_unused2) DescriptorSet 0
-                              Decorate 124(g_tTex_unused2) Binding 12
-                              Decorate 126(g_sSamp_unused2) DescriptorSet 0
-                              Decorate 143(Color) Location 0
-                              Decorate 147(g_tTex_unused3) DescriptorSet 0
+                              MemberDecorate 93(MyStruct_t) 0 Offset 0
+                              MemberDecorate 93(MyStruct_t) 1 Offset 4
+                              MemberDecorate 93(MyStruct_t) 2 Offset 16
+                              MemberDecorate 95($Global) 0 Offset 0
+                              MemberDecorate 95($Global) 1 Offset 32
+                              MemberDecorate 95($Global) 2 Offset 48
+                              MemberDecorate 95($Global) 3 Offset 64
+                              Decorate 95($Global) Block
+                              Decorate 97 DescriptorSet 0
+                              Decorate 119(g_tTex_unused1) DescriptorSet 0
+                              Decorate 119(g_tTex_unused1) Binding 10
+                              Decorate 121(g_sSamp_unused1) DescriptorSet 0
+                              Decorate 126(g_tTex_unused2) DescriptorSet 0
+                              Decorate 126(g_tTex_unused2) Binding 12
+                              Decorate 128(g_sSamp_unused2) DescriptorSet 0
+                              Decorate 145(Color) Location 0
+                              Decorate 149(g_tTex_unused3) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -109,39 +119,35 @@ Linked fragment stage:
               89:    6(float) Constant 1056964608
               92:             TypeVector 6(float) 3
   93(MyStruct_t):             TypeStruct 40(int) 6(float) 92(fvec3)
-              94:             TypePointer UniformConstant 93(MyStruct_t)
-    95(mystruct):     94(ptr) Variable UniformConstant
-              96:     35(int) Constant 1
-              97:             TypePointer UniformConstant 6(float)
-117(g_tTex_unused1):     16(ptr) Variable UniformConstant
-119(g_sSamp_unused1):     20(ptr) Variable UniformConstant
-             122:    6(float) Constant 1066192077
-124(g_tTex_unused2):     16(ptr) Variable UniformConstant
-126(g_sSamp_unused2):     20(ptr) Variable UniformConstant
-             129:    6(float) Constant 1067030938
-  134(PS_OUTPUT):             TypeStruct 7(fvec4)
-             135:             TypePointer Function 134(PS_OUTPUT)
-             140:             TypePointer Function 7(fvec4)
-             142:             TypePointer Output 7(fvec4)
-      143(Color):    142(ptr) Variable Output
-147(g_tTex_unused3):     16(ptr) Variable UniformConstant
-             148:             TypePointer UniformConstant 7(fvec4)
- 149(myfloat4_a):    148(ptr) Variable UniformConstant
- 150(myfloat4_b):    148(ptr) Variable UniformConstant
-             151:             TypeVector 40(int) 4
-             152:             TypePointer UniformConstant 151(ivec4)
-   153(myint4_a):    152(ptr) Variable UniformConstant
+              94:             TypeVector 40(int) 4
+     95($Global):             TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4)
+              96:             TypePointer Uniform 95($Global)
+              97:     96(ptr) Variable Uniform
+              98:     35(int) Constant 1
+              99:             TypePointer Uniform 6(float)
+119(g_tTex_unused1):     16(ptr) Variable UniformConstant
+121(g_sSamp_unused1):     20(ptr) Variable UniformConstant
+             124:    6(float) Constant 1066192077
+126(g_tTex_unused2):     16(ptr) Variable UniformConstant
+128(g_sSamp_unused2):     20(ptr) Variable UniformConstant
+             131:    6(float) Constant 1067030938
+  136(PS_OUTPUT):             TypeStruct 7(fvec4)
+             137:             TypePointer Function 136(PS_OUTPUT)
+             142:             TypePointer Function 7(fvec4)
+             144:             TypePointer Output 7(fvec4)
+      145(Color):    144(ptr) Variable Output
+149(g_tTex_unused3):     16(ptr) Variable UniformConstant
       4(main_ep):           2 Function None 3
                5:             Label
-      136(psout):    135(ptr) Variable Function
-             137:    7(fvec4) FunctionCall 9(Func1()
-             138:    7(fvec4) FunctionCall 11(Func2()
-             139:    7(fvec4) FAdd 137 138
-             141:    140(ptr) AccessChain 136(psout) 41
-                              Store 141 139
-             144:    140(ptr) AccessChain 136(psout) 41
-             145:    7(fvec4) Load 144
-                              Store 143(Color) 145
+      138(psout):    137(ptr) Variable Function
+             139:    7(fvec4) FunctionCall 9(Func1()
+             140:    7(fvec4) FunctionCall 11(Func2()
+             141:    7(fvec4) FAdd 139 140
+             143:    142(ptr) AccessChain 138(psout) 41
+                              Store 143 141
+             146:    142(ptr) AccessChain 138(psout) 41
+             147:    7(fvec4) Load 146
+                              Store 145(Color) 147
                               Return
                               FunctionEnd
        9(Func1():    7(fvec4) Function None 8
@@ -188,37 +194,37 @@ Linked fragment stage:
               88:          23 SampledImage 85 87
               90:    7(fvec4) ImageSampleImplicitLod 88 89
               91:    7(fvec4) FAdd 83 90
-              98:     97(ptr) AccessChain 95(mystruct) 76 96
-              99:    6(float) Load 98
-             100:    7(fvec4) CompositeConstruct 99 99 99 99
-             101:    7(fvec4) FAdd 91 100
-                              ReturnValue 101
+             100:     99(ptr) AccessChain 97 41 76 98
+             101:    6(float) Load 100
+             102:    7(fvec4) CompositeConstruct 101 101 101 101
+             103:    7(fvec4) FAdd 91 102
+                              ReturnValue 103
                               FunctionEnd
       11(Func2():    7(fvec4) Function None 8
               12:             Label
-             104:          15 Load 17(g_tTex1)
-             105:          19 Load 21(g_sSamp1)
-             106:          23 SampledImage 104 105
-             107:    7(fvec4) ImageSampleImplicitLod 106 25
-             108:     16(ptr) AccessChain 39(g_tTex3) 53
-             109:          15 Load 108
-             110:     20(ptr) AccessChain 46(g_sSamp3) 53
-             111:          19 Load 110
-             112:          23 SampledImage 109 111
-             113:    7(fvec4) ImageSampleImplicitLod 112 50
-             114:    7(fvec4) FAdd 107 113
-                              ReturnValue 114
+             106:          15 Load 17(g_tTex1)
+             107:          19 Load 21(g_sSamp1)
+             108:          23 SampledImage 106 107
+             109:    7(fvec4) ImageSampleImplicitLod 108 25
+             110:     16(ptr) AccessChain 39(g_tTex3) 53
+             111:          15 Load 110
+             112:     20(ptr) AccessChain 46(g_sSamp3) 53
+             113:          19 Load 112
+             114:          23 SampledImage 111 113
+             115:    7(fvec4) ImageSampleImplicitLod 114 50
+             116:    7(fvec4) FAdd 109 115
+                              ReturnValue 116
                               FunctionEnd
 13(Func2_unused():    7(fvec4) Function None 8
               14:             Label
-             118:          15 Load 117(g_tTex_unused1)
-             120:          19 Load 119(g_sSamp_unused1)
-             121:          23 SampledImage 118 120
-             123:    7(fvec4) ImageSampleImplicitLod 121 122
-             125:          15 Load 124(g_tTex_unused2)
-             127:          19 Load 126(g_sSamp_unused2)
-             128:          23 SampledImage 125 127
-             130:    7(fvec4) ImageSampleImplicitLod 128 129
-             131:    7(fvec4) FAdd 123 130
-                              ReturnValue 131
+             120:          15 Load 119(g_tTex_unused1)
+             122:          19 Load 121(g_sSamp_unused1)
+             123:          23 SampledImage 120 122
+             125:    7(fvec4) ImageSampleImplicitLod 123 124
+             127:          15 Load 126(g_tTex_unused2)
+             129:          19 Load 128(g_sSamp_unused2)
+             130:          23 SampledImage 127 129
+             132:    7(fvec4) ImageSampleImplicitLod 130 131
+             133:    7(fvec4) FAdd 125 132
+                              ReturnValue 133
                               FunctionEnd
diff --git a/Test/hlsl.array.flatten.frag b/Test/hlsl.array.flatten.frag
index b243bec27..987ce1bf3 100644
--- a/Test/hlsl.array.flatten.frag
+++ b/Test/hlsl.array.flatten.frag
@@ -23,7 +23,7 @@ float4 TestFn2(Texture1D l_tex[3], SamplerState l_samp[3])
     return l_tex[2].Sample(l_samp[2], 0.2);
 }
 
-int not_flattened_a[5] = { 1, 2, 3, 4, 5 };
+static int not_flattened_a[5] = { 1, 2, 3, 4, 5 };
 
 struct PS_OUTPUT { float4 color : SV_Target0; };
 
diff --git a/Test/hlsl.float1.frag b/Test/hlsl.float1.frag
index 6247e77be..f9c0a6e0b 100644
--- a/Test/hlsl.float1.frag
+++ b/Test/hlsl.float1.frag
@@ -1,5 +1,5 @@
-float1 f1 = float1(1.0);
-float scalar = 2.0;
+static float1 f1 = float1(1.0);
+static float scalar = 2.0;
 
 float1 ShaderFunction(float1 inFloat1 : COLOR, float inScalar) : COLOR0
 {
diff --git a/Test/hlsl.float4.frag b/Test/hlsl.float4.frag
index 5ae70db06..b541f5d32 100644
--- a/Test/hlsl.float4.frag
+++ b/Test/hlsl.float4.frag
@@ -1,9 +1,9 @@
 float4 AmbientColor = float4(1, 0.5, 0, 1);
 
 bool ff1 : SV_IsFrontFace;
-float4 ff2 : packoffset(c0.y);
-float4 ff3 : packoffset(c0.y) : register(ps_5_0, s0) ;
-float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s1) <int bambam=30;> ;
+float ff2 : packoffset(c1.y);
+float4 ff3 : packoffset(c2) : register(ps_5_0, s0) ;
+float4 ff4 : VPOS : packoffset(c3) : register(ps_5_0, s1) <int bambam=30;> ;
 
 float4 ShaderFunction(float4 input) : COLOR0
 {
diff --git a/Test/hlsl.init.frag b/Test/hlsl.init.frag
index c233d127d..a3f6f0e79 100644
--- a/Test/hlsl.init.frag
+++ b/Test/hlsl.init.frag
@@ -1,21 +1,21 @@
-float4 a1 = float4(1, 0.5, 0, 1), b1 = float4(2.0, 2.5, 2.1, 2.2);
-float4 a1i = {1, 0.5, 0, 1}, b1i = {2.0, 2.5, 2.1, 2.2};
-float a2 = 0.2, b2;
-float a3, b3 = 0.3;
-float a4, b4 = 0.4, c4;
-float a5 = 0.5, b5, c5 = 1.5;
+static float4 a1 = float4(1, 0.5, 0, 1), b1 = float4(2.0, 2.5, 2.1, 2.2);
+static float4 a1i = {1, 0.5, 0, 1}, b1i = {2.0, 2.5, 2.1, 2.2};
+static float a2 = 0.2, b2;
+static float a3, b3 = 0.3;
+static float a4, b4 = 0.4, c4;
+static float a5 = 0.5, b5, c5 = 1.5;
 
 struct Single1 { int f; };
-Single1 single1 = { 10 };
+static Single1 single1 = { 10 };
 
 struct Single2 { uint2 v; };
-Single2 single2 = { { 1, 2 } };
+static Single2 single2 = { { 1, 2 } };
 
 struct Single3 { Single1 s1; };
-Single3 single3 = { { 3 } };
+static Single3 single3 = { { 3 } };
 
 struct Single4 { Single2 s1; };
-Single4 single4 = { { { 4u, 5u } } };
+static Single4 single4 = { { { 4u, 5u } } };
 
 float4 ShaderFunction(float4 input) : COLOR0
 {
diff --git a/Test/hlsl.intrinsics.comp b/Test/hlsl.intrinsics.comp
index 642a0fc60..12b7caaba 100644
--- a/Test/hlsl.intrinsics.comp
+++ b/Test/hlsl.intrinsics.comp
@@ -1,5 +1,5 @@
 
-#define gs     // TODO: define as groupshared when available in the grammar
+#define gs static    // TODO: define as groupshared when available in the grammar
 gs uint gs_ua;
 gs uint gs_ub;
 gs uint gs_uc;
diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag
index c04acaeda..90387ccc9 100644
--- a/Test/hlsl.intrinsics.frag
+++ b/Test/hlsl.intrinsics.frag
@@ -1,5 +1,5 @@
 
-#define gs     // TODO: define as groupshared when available in the grammar
+#define gs static     // TODO: define as groupshared when available in the grammar
 gs uint gs_ua;
 gs uint gs_ub;
 gs uint gs_uc;
diff --git a/Test/hlsl.intrinsics.negative.vert b/Test/hlsl.intrinsics.negative.vert
index fcfb761a6..6224b25e4 100644
--- a/Test/hlsl.intrinsics.negative.vert
+++ b/Test/hlsl.intrinsics.negative.vert
@@ -1,15 +1,15 @@
-uint gs_ua;
-uint gs_ub;
-uint gs_uc;
-uint2 gs_ua2;
-uint2 gs_ub2;
-uint2 gs_uc2;
-uint3 gs_ua3;
-uint3 gs_ub3;
-uint3 gs_uc3;
-uint4 gs_ua4;
-uint4 gs_ub4;
-uint4 gs_uc4;
+static uint gs_ua;
+static uint gs_ub;
+static uint gs_uc;
+static uint2 gs_ua2;
+static uint2 gs_ub2;
+static uint2 gs_uc2;
+static uint3 gs_ua3;
+static uint3 gs_ub3;
+static uint3 gs_uc3;
+static uint4 gs_ua4;
+static uint4 gs_ub4;
+static uint4 gs_uc4;
 
 float VertexShaderFunctionS(float inF0, float inF1, float inF2, int inI0)
 {
diff --git a/Test/hlsl.precise.frag b/Test/hlsl.precise.frag
index 7518de542..77454e072 100644
--- a/Test/hlsl.precise.frag
+++ b/Test/hlsl.precise.frag
@@ -1,7 +1,7 @@
 
 struct PS_OUTPUT { precise float4 color : SV_Target0; };
 
-precise float precisefloat;
+static precise float precisefloat;
 
 void MyFunction(in precise float myfloat, out precise float3 myfloat3) { }
 
diff --git a/Test/hlsl.struct.frag b/Test/hlsl.struct.frag
index 58cd524be..2c511a6eb 100644
--- a/Test/hlsl.struct.frag
+++ b/Test/hlsl.struct.frag
@@ -27,8 +27,8 @@ struct IN_S {
     float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) <int bambam=30;> ;
 };
 
-float3 ff5 : packoffset(c1.y) : register(ps_5_0, s[5]);
-float3 ff6 : packoffset(c2.y) : register(s3[5]);
+float ff5 : packoffset(c101.y) : register(ps_5_0, s[5]);
+float ff6 : packoffset(c102.y) : register(s3[5]);
 
 float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0
 {
diff --git a/Test/hlsl.swizzle.frag b/Test/hlsl.swizzle.frag
index 231430a91..9e87c6d77 100644
--- a/Test/hlsl.swizzle.frag
+++ b/Test/hlsl.swizzle.frag
@@ -1,4 +1,4 @@
-float4 AmbientColor = float4(1, 0.5, 0, 1);
+static float4 AmbientColor = float4(1, 0.5, 0, 1);
 
 float4 ShaderFunction(float4 input) : COLOR0
 {
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index fb515df0c..7c9a47a53 100644
--- a/glslang/Include/revision.h
+++ b/glslang/Include/revision.h
@@ -2,5 +2,5 @@
 // For the version, it uses the latest git tag followed by the number of commits.
 // For the date, it uses the current date (when then script is run).
 
-#define GLSLANG_REVISION "Overload400-PrecQual.1524"
+#define GLSLANG_REVISION "Overload400-PrecQual.1525"
 #define GLSLANG_DATE "27-Sep-2016"
-- 
GitLab