hlsl.load.offsetarray.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      textureFetchOffset (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: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 (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: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 (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: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 (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: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 (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: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 (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: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})
0:65          Constant:
0:65            0 (const int)
0:65        Constant:
0:65          1.000000
0:65          1.000000
0:65          1.000000
0:65          1.000000
0:66      move second child to first child (temp float)
0:66        Depth: direct index for structure (temp float)
0:66          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:66          Constant:
0:66            1 (const int)
0:66        Constant:
0:66          1.000000
0:68      Sequence
0:68        Sequence
0:68          move second child to first child (temp 4-component vector of float)
0:?             'Color' (layout(location=0 ) out 4-component vector of float)
0:68            Color: direct index for structure (temp 4-component vector of float)
0:68              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:68              Constant:
0:68                0 (const int)
0:68          move second child to first child (temp float)
0:?             'Depth' (out float FragDepth)
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        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      textureFetchOffset (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: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 (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: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 (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: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 (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: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 (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: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 (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: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})
0:65          Constant:
0:65            0 (const int)
0:65        Constant:
0:65          1.000000
0:65          1.000000
0:65          1.000000
0:65          1.000000
0:66      move second child to first child (temp float)
0:66        Depth: direct index for structure (temp float)
0:66          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:66          Constant:
0:66            1 (const int)
0:66        Constant:
0:66          1.000000
0:68      Sequence
0:68        Sequence
0:68          move second child to first child (temp 4-component vector of float)
0:?             'Color' (layout(location=0 ) out 4-component vector of float)
0:68            Color: direct index for structure (temp 4-component vector of float)
0:68              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:68              Constant:
0:68                0 (const int)
0:68          move second child to first child (temp float)
0:?             'Depth' (out float FragDepth)
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        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 167

                              Capability Shader
                              Capability ImageGatherExtended
                              Capability Sampled1D
                              Capability SampledCubeArray
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 111 115
                              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 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
                              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
               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:     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_sSamp):    120(ptr) Variable UniformConstant
             122:             TypeImage 6(float) 1D sampled format:Unknown
             123:             TypePointer UniformConstant 122
 124(g_tTex1df4):    123(ptr) Variable UniformConstant
             125:             TypeImage 11(int) 1D sampled format:Unknown
             126:             TypePointer UniformConstant 125
 127(g_tTex1di4):    126(ptr) Variable UniformConstant
             128:             TypeImage 23(int) 1D sampled format:Unknown
             129:             TypePointer UniformConstant 128
 130(g_tTex1du4):    129(ptr) Variable UniformConstant
             131:             TypeImage 6(float) 2D sampled format:Unknown
             132:             TypePointer UniformConstant 131
 133(g_tTex2df4):    132(ptr) Variable UniformConstant
             134:             TypeImage 11(int) 2D sampled format:Unknown
             135:             TypePointer UniformConstant 134
 136(g_tTex2di4):    135(ptr) Variable UniformConstant
             137:             TypeImage 23(int) 2D sampled format:Unknown
             138:             TypePointer UniformConstant 137
 139(g_tTex2du4):    138(ptr) Variable UniformConstant
             140:             TypeImage 6(float) 3D sampled format:Unknown
             141:             TypePointer UniformConstant 140
 142(g_tTex3df4):    141(ptr) Variable UniformConstant
             143:             TypeImage 11(int) 3D sampled format:Unknown
             144:             TypePointer UniformConstant 143
 145(g_tTex3di4):    144(ptr) Variable UniformConstant
             146:             TypeImage 23(int) 3D sampled format:Unknown
             147:             TypePointer UniformConstant 146
 148(g_tTex3du4):    147(ptr) Variable UniformConstant
             149:             TypeImage 6(float) Cube sampled format:Unknown
             150:             TypePointer UniformConstant 149
 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
      101(psout):    100(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:     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
