hlsl.load.array.dx10.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
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 (temp 4-component vector of float)
0:52        'g_tTex1df4a' (uniform texture1DArray)
0:52        vector swizzle (temp 2-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: 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 (temp 4-component vector of int)
0:53        'g_tTex1di4a' (uniform itexture1DArray)
0:53        vector swizzle (temp 2-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: 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 (temp 4-component vector of uint)
0:54        'g_tTex1du4a' (uniform utexture1DArray)
0:54        vector swizzle (temp 2-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: 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 (temp 4-component vector of float)
0:57        'g_tTex2df4a' (uniform texture2DArray)
0:57        vector swizzle (temp 3-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)
0:57            Constant:
0:57              1 (const int)
0:57            Constant:
0:57              2 (const int)
0:57        direct index (temp 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 (temp 4-component vector of int)
0:58        'g_tTex2di4a' (uniform itexture2DArray)
0:58        vector swizzle (temp 3-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)
0:58            Constant:
0:58              1 (const int)
0:58            Constant:
0:58              2 (const int)
0:58        direct index (temp 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 (temp 4-component vector of uint)
0:59        'g_tTex2du4a' (uniform utexture2DArray)
0:59        vector swizzle (temp 3-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)
0:59            Constant:
0:59              1 (const int)
0:59            Constant:
0:59              2 (const int)
0:59        direct index (temp 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)
0:67        Color: direct index for structure (temp 4-component vector of float)
0:67          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:67          Constant:
0:67            0 (const int)
0:67        Constant:
0:67          1.000000
0:67          1.000000
0:67          1.000000
0:67          1.000000
0:68      move second child to first child (temp float)
0:68        Depth: direct index for structure (temp float)
0:68          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:68          Constant:
0:68            1 (const int)
0:68        Constant:
0:68          1.000000
0:70      Sequence
0:70        Sequence
0:70          move second child to first child (temp 4-component vector of float)
0:?             'Color' (layout(location=0 ) out 4-component vector of float)
0:70            Color: direct index for structure (temp 4-component vector of float)
0:70              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:70              Constant:
0:70                0 (const int)
0:70          move second child to first child (temp float)
0:?             'Depth' (out float FragDepth)
0:70            Depth: direct index for structure (temp float)
0:70              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:70              Constant:
0:70                1 (const int)
0:70        Branch: Return
0:?   Linker Objects
0:?     'Color' (layout(location=0 ) out 4-component vector of float)
0:?     'Depth' (out float FragDepth)
0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:?     'g_tTex1di4' (uniform itexture1D)
0:?     'g_tTex1du4' (uniform utexture1D)
0:?     'g_tTex2df4' (uniform texture2D)
0:?     'g_tTex2di4' (uniform itexture2D)
0:?     'g_tTex2du4' (uniform utexture2D)
0:?     'g_tTex3df4' (uniform texture3D)
0:?     'g_tTex3di4' (uniform itexture3D)
0:?     'g_tTex3du4' (uniform utexture3D)
0:?     'g_tTexcdf4' (uniform textureCube)
0:?     'g_tTexcdi4' (uniform itextureCube)
0:?     'g_tTexcdu4' (uniform utextureCube)
0:?     'g_tTex1df4a' (uniform texture1DArray)
0:?     'g_tTex1di4a' (uniform itexture1DArray)
0:?     'g_tTex1du4a' (uniform utexture1DArray)
0:?     'g_tTex2df4a' (uniform texture2DArray)
0:?     'g_tTex2di4a' (uniform itexture2DArray)
0:?     'g_tTex2du4a' (uniform utexture2DArray)
0:?     'g_tTexcdf4a' (uniform textureCubeArray)
0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
0:?     '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})


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
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 (temp 4-component vector of float)
0:52        'g_tTex1df4a' (uniform texture1DArray)
0:52        vector swizzle (temp 2-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: 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 (temp 4-component vector of int)
0:53        'g_tTex1di4a' (uniform itexture1DArray)
0:53        vector swizzle (temp 2-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: 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 (temp 4-component vector of uint)
0:54        'g_tTex1du4a' (uniform utexture1DArray)
0:54        vector swizzle (temp 2-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: 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 (temp 4-component vector of float)
0:57        'g_tTex2df4a' (uniform texture2DArray)
0:57        vector swizzle (temp 3-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)
0:57            Constant:
0:57              1 (const int)
0:57            Constant:
0:57              2 (const int)
0:57        direct index (temp 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 (temp 4-component vector of int)
0:58        'g_tTex2di4a' (uniform itexture2DArray)
0:58        vector swizzle (temp 3-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)
0:58            Constant:
0:58              1 (const int)
0:58            Constant:
0:58              2 (const int)
0:58        direct index (temp 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 (temp 4-component vector of uint)
0:59        'g_tTex2du4a' (uniform utexture2DArray)
0:59        vector swizzle (temp 3-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)
0:59            Constant:
0:59              1 (const int)
0:59            Constant:
0:59              2 (const int)
0:59        direct index (temp 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)
0:67        Color: direct index for structure (temp 4-component vector of float)
0:67          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:67          Constant:
0:67            0 (const int)
0:67        Constant:
0:67          1.000000
0:67          1.000000
0:67          1.000000
0:67          1.000000
0:68      move second child to first child (temp float)
0:68        Depth: direct index for structure (temp float)
0:68          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:68          Constant:
0:68            1 (const int)
0:68        Constant:
0:68          1.000000
0:70      Sequence
0:70        Sequence
0:70          move second child to first child (temp 4-component vector of float)
0:?             'Color' (layout(location=0 ) out 4-component vector of float)
0:70            Color: direct index for structure (temp 4-component vector of float)
0:70              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:70              Constant:
0:70                0 (const int)
0:70          move second child to first child (temp float)
0:?             'Depth' (out float FragDepth)
0:70            Depth: direct index for structure (temp float)
0:70              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:70              Constant:
0:70                1 (const int)
0:70        Branch: Return
0:?   Linker Objects
0:?     'Color' (layout(location=0 ) out 4-component vector of float)
0:?     'Depth' (out float FragDepth)
0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:?     'g_tTex1di4' (uniform itexture1D)
0:?     'g_tTex1du4' (uniform utexture1D)
0:?     'g_tTex2df4' (uniform texture2D)
0:?     'g_tTex2di4' (uniform itexture2D)
0:?     'g_tTex2du4' (uniform utexture2D)
0:?     'g_tTex3df4' (uniform texture3D)
0:?     'g_tTex3di4' (uniform itexture3D)
0:?     'g_tTex3du4' (uniform utexture3D)
0:?     'g_tTexcdf4' (uniform textureCube)
0:?     'g_tTexcdi4' (uniform itextureCube)
0:?     'g_tTexcdu4' (uniform utextureCube)
0:?     'g_tTex1df4a' (uniform texture1DArray)
0:?     'g_tTex1di4a' (uniform itexture1DArray)
0:?     'g_tTex1du4a' (uniform utexture1DArray)
0:?     'g_tTex2df4a' (uniform texture2DArray)
0:?     'g_tTex2di4a' (uniform itexture2DArray)
0:?     'g_tTex2du4a' (uniform utexture2DArray)
0:?     'g_tTexcdf4a' (uniform textureCubeArray)
0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
0:?     '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})

// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 152

                              Capability Shader
                              Capability Sampled1D
                              Capability SampledCubeArray
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 96 100
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "main"
                              Name 9  "g_tTex1df4a"
                              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
                              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
               7:             TypeImage 6(float) 1D array sampled format:Unknown
               8:             TypePointer UniformConstant 7
  9(g_tTex1df4a):      8(ptr) Variable UniformConstant
              11:             TypeInt 32 1
              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_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 23(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
             120:             TypePointer UniformConstant 119
 121(g_tTex2di4):    120(ptr) Variable UniformConstant
             122:             TypeImage 23(int) 2D sampled format:Unknown
             123:             TypePointer UniformConstant 122
 124(g_tTex2du4):    123(ptr) Variable UniformConstant
             125:             TypeImage 6(float) 3D sampled format:Unknown
             126:             TypePointer UniformConstant 125
 127(g_tTex3df4):    126(ptr) Variable UniformConstant
             128:             TypeImage 11(int) 3D sampled format:Unknown
             129:             TypePointer UniformConstant 128
 130(g_tTex3di4):    129(ptr) Variable UniformConstant
             131:             TypeImage 23(int) 3D sampled format:Unknown
             132:             TypePointer UniformConstant 131
 133(g_tTex3du4):    132(ptr) Variable UniformConstant
             134:             TypeImage 6(float) Cube sampled format:Unknown
             135:             TypePointer UniformConstant 134
 136(g_tTexcdf4):    135(ptr) Variable UniformConstant
             137:             TypeImage 11(int) Cube sampled format:Unknown
             138:             TypePointer UniformConstant 137
 139(g_tTexcdi4):    138(ptr) Variable UniformConstant
             140:             TypeImage 23(int) Cube sampled format:Unknown
             141:             TypePointer UniformConstant 140
 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
       86(psout):     85(ptr) Variable Function
              10:           7 Load 9(g_tTex1df4a)
              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
