hlsl.load.offset.dx10.frag
Shader version: 500
gl_FragCoord origin is upper left
using depth_any
0:? Sequence
0:43  Function Definition: getOffset1( ( temp int)
0:43    Function Parameters: 
0:?     Sequence
0:44      Branch: Return with expression
0:44        Constant:
0:44          1 (const int)
0:48  Function Definition: getOffset2( ( temp 2-component vector of int)
0:48    Function Parameters: 
0:?     Sequence
0:49      Branch: Return with expression
0:49        Constant:
0:49          1 (const int)
0:49          1 (const int)
0:53  Function Definition: getOffset3( ( temp 3-component vector of int)
0:53    Function Parameters: 
0:?     Sequence
0:54      Branch: Return with expression
0:54        Constant:
0:54          1 (const int)
0:54          1 (const int)
0:54          1 (const int)
0:58  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58    Function Parameters: 
0:?     Sequence
0:62      textureFetchOffset ( temp 4-component vector of float)
0:62        'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:62        vector swizzle ( temp int)
0:62          c2: direct index for structure ( uniform 2-component vector of int)
0:62            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:62            Constant:
0:62              1 (const uint)
0:62          Sequence
0:62            Constant:
0:62              0 (const int)
0:62        direct index ( temp int)
0:62          c2: direct index for structure ( uniform 2-component vector of int)
0:62            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:62            Constant:
0:62              1 (const uint)
0:62          Constant:
0:62            1 (const int)
0:62        Function Call: getOffset1( ( temp int)
0:63      textureFetchOffset ( temp 4-component vector of int)
0:63        'g_tTex1di4' ( uniform itexture1D)
0:63        vector swizzle ( temp int)
0:63          c2: direct index for structure ( uniform 2-component vector of int)
0:63            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:63            Constant:
0:63              1 (const uint)
0:63          Sequence
0:63            Constant:
0:63              0 (const int)
0:63        direct index ( temp int)
0:63          c2: direct index for structure ( uniform 2-component vector of int)
0:63            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:63            Constant:
0:63              1 (const uint)
0:63          Constant:
0:63            1 (const int)
0:63        Function Call: getOffset1( ( temp int)
0:64      textureFetchOffset ( temp 4-component vector of uint)
0:64        'g_tTex1du4' ( uniform utexture1D)
0:64        vector swizzle ( temp int)
0:64          c2: direct index for structure ( uniform 2-component vector of int)
0:64            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:64            Constant:
0:64              1 (const uint)
0:64          Sequence
0:64            Constant:
0:64              0 (const int)
0:64        direct index ( temp int)
0:64          c2: direct index for structure ( uniform 2-component vector of int)
0:64            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:64            Constant:
0:64              1 (const uint)
0:64          Constant:
0:64            1 (const int)
0:64        Function Call: getOffset1( ( temp int)
0:67      textureFetchOffset ( temp 4-component vector of float)
0:67        'g_tTex2df4' ( uniform texture2D)
0:67        vector swizzle ( temp 2-component vector of int)
0:67          c3: direct index for structure ( uniform 3-component vector of int)
0:67            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:67            Constant:
0:67              2 (const uint)
0:67          Sequence
0:67            Constant:
0:67              0 (const int)
0:67            Constant:
0:67              1 (const int)
0:67        direct index ( temp int)
0:67          c3: direct index for structure ( uniform 3-component vector of int)
0:67            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:67            Constant:
0:67              2 (const uint)
0:67          Constant:
0:67            2 (const int)
0:67        Function Call: getOffset2( ( temp 2-component vector of int)
0:68      textureFetchOffset ( temp 4-component vector of int)
0:68        'g_tTex2di4' ( uniform itexture2D)
0:68        vector swizzle ( temp 2-component vector of int)
0:68          c3: direct index for structure ( uniform 3-component vector of int)
0:68            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:68            Constant:
0:68              2 (const uint)
0:68          Sequence
0:68            Constant:
0:68              0 (const int)
0:68            Constant:
0:68              1 (const int)
0:68        direct index ( temp int)
0:68          c3: direct index for structure ( uniform 3-component vector of int)
0:68            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:68            Constant:
0:68              2 (const uint)
0:68          Constant:
0:68            2 (const int)
0:68        Function Call: getOffset2( ( temp 2-component vector of int)
0:69      textureFetchOffset ( temp 4-component vector of uint)
0:69        'g_tTex2du4' ( uniform utexture2D)
0:69        vector swizzle ( temp 2-component vector of int)
0:69          c3: direct index for structure ( uniform 3-component vector of int)
0:69            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:69            Constant:
0:69              2 (const uint)
0:69          Sequence
0:69            Constant:
0:69              0 (const int)
0:69            Constant:
0:69              1 (const int)
0:69        direct index ( temp int)
0:69          c3: direct index for structure ( uniform 3-component vector of int)
0:69            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:69            Constant:
0:69              2 (const uint)
0:69          Constant:
0:69            2 (const int)
0:69        Function Call: getOffset2( ( temp 2-component vector of int)
0:72      textureFetchOffset ( temp 4-component vector of float)
0:72        'g_tTex3df4' ( uniform texture3D)
0:72        vector swizzle ( temp 3-component vector of int)
0:72          c4: direct index for structure ( uniform 4-component vector of int)
0:72            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:72            Constant:
0:72              3 (const uint)
0:72          Sequence
0:72            Constant:
0:72              0 (const int)
0:72            Constant:
0:72              1 (const int)
0:72            Constant:
0:72              2 (const int)
0:72        direct index ( temp int)
0:72          c4: direct index for structure ( uniform 4-component vector of int)
0:72            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:72            Constant:
0:72              3 (const uint)
0:72          Constant:
0:72            3 (const int)
0:72        Function Call: getOffset3( ( temp 3-component vector of int)
0:73      textureFetchOffset ( temp 4-component vector of int)
0:73        'g_tTex3di4' ( uniform itexture3D)
0:73        vector swizzle ( temp 3-component vector of int)
0:73          c4: direct index for structure ( uniform 4-component vector of int)
0:73            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:73            Constant:
0:73              3 (const uint)
0:73          Sequence
0:73            Constant:
0:73              0 (const int)
0:73            Constant:
0:73              1 (const int)
0:73            Constant:
0:73              2 (const int)
0:73        direct index ( temp int)
0:73          c4: direct index for structure ( uniform 4-component vector of int)
0:73            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:73            Constant:
0:73              3 (const uint)
0:73          Constant:
0:73            3 (const int)
0:73        Function Call: getOffset3( ( temp 3-component vector of int)
0:74      textureFetchOffset ( temp 4-component vector of uint)
0:74        'g_tTex3du4' ( uniform utexture3D)
0:74        vector swizzle ( temp 3-component vector of int)
0:74          c4: direct index for structure ( uniform 4-component vector of int)
0:74            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:74            Constant:
0:74              3 (const uint)
0:74          Sequence
0:74            Constant:
0:74              0 (const int)
0:74            Constant:
0:74              1 (const int)
0:74            Constant:
0:74              2 (const int)
0:74        direct index ( temp int)
0:74          c4: direct index for structure ( uniform 4-component vector of int)
0:74            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:74            Constant:
0:74              3 (const uint)
0:74          Constant:
0:74            3 (const int)
0:74        Function Call: getOffset3( ( temp 3-component vector of int)
0:82      move second child to first child ( temp 4-component vector of float)
0:82        Color: direct index for structure ( temp 4-component vector of float)
0:82          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:82          Constant:
0:82            0 (const int)
0:82        Constant:
0:82          1.000000
0:82          1.000000
0:82          1.000000
0:82          1.000000
0:83      move second child to first child ( temp float)
0:83        Depth: direct index for structure ( temp float)
0:83          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:83          Constant:
0:83            1 (const int)
0:83        Constant:
0:83          1.000000
0:85      Branch: Return with expression
0:85        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58  Function Definition: main( ( temp void)
0:58    Function Parameters: 
0:?     Sequence
0:58      Sequence
0:58        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:58          Color: direct index for structure ( temp 4-component vector of float)
0:58            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58            Constant:
0:58              0 (const int)
0:58        move second child to first child ( temp float)
0:?           '@entryPointOutput.Depth' ( out float FragDepth)
0:58          Depth: direct index for structure ( temp float)
0:58            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58            Constant:
0:58              1 (const int)
0:?   Linker Objects
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{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:?     '@entryPointOutput.Depth' ( out float FragDepth)
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
using depth_any
0:? Sequence
0:43  Function Definition: getOffset1( ( temp int)
0:43    Function Parameters: 
0:?     Sequence
0:44      Branch: Return with expression
0:44        Constant:
0:44          1 (const int)
0:48  Function Definition: getOffset2( ( temp 2-component vector of int)
0:48    Function Parameters: 
0:?     Sequence
0:49      Branch: Return with expression
0:49        Constant:
0:49          1 (const int)
0:49          1 (const int)
0:53  Function Definition: getOffset3( ( temp 3-component vector of int)
0:53    Function Parameters: 
0:?     Sequence
0:54      Branch: Return with expression
0:54        Constant:
0:54          1 (const int)
0:54          1 (const int)
0:54          1 (const int)
0:58  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58    Function Parameters: 
0:?     Sequence
0:62      textureFetchOffset ( temp 4-component vector of float)
0:62        'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:62        vector swizzle ( temp int)
0:62          c2: direct index for structure ( uniform 2-component vector of int)
0:62            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:62            Constant:
0:62              1 (const uint)
0:62          Sequence
0:62            Constant:
0:62              0 (const int)
0:62        direct index ( temp int)
0:62          c2: direct index for structure ( uniform 2-component vector of int)
0:62            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:62            Constant:
0:62              1 (const uint)
0:62          Constant:
0:62            1 (const int)
0:62        Function Call: getOffset1( ( temp int)
0:63      textureFetchOffset ( temp 4-component vector of int)
0:63        'g_tTex1di4' ( uniform itexture1D)
0:63        vector swizzle ( temp int)
0:63          c2: direct index for structure ( uniform 2-component vector of int)
0:63            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:63            Constant:
0:63              1 (const uint)
0:63          Sequence
0:63            Constant:
0:63              0 (const int)
0:63        direct index ( temp int)
0:63          c2: direct index for structure ( uniform 2-component vector of int)
0:63            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:63            Constant:
0:63              1 (const uint)
0:63          Constant:
0:63            1 (const int)
0:63        Function Call: getOffset1( ( temp int)
0:64      textureFetchOffset ( temp 4-component vector of uint)
0:64        'g_tTex1du4' ( uniform utexture1D)
0:64        vector swizzle ( temp int)
0:64          c2: direct index for structure ( uniform 2-component vector of int)
0:64            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:64            Constant:
0:64              1 (const uint)
0:64          Sequence
0:64            Constant:
0:64              0 (const int)
0:64        direct index ( temp int)
0:64          c2: direct index for structure ( uniform 2-component vector of int)
0:64            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:64            Constant:
0:64              1 (const uint)
0:64          Constant:
0:64            1 (const int)
0:64        Function Call: getOffset1( ( temp int)
0:67      textureFetchOffset ( temp 4-component vector of float)
0:67        'g_tTex2df4' ( uniform texture2D)
0:67        vector swizzle ( temp 2-component vector of int)
0:67          c3: direct index for structure ( uniform 3-component vector of int)
0:67            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:67            Constant:
0:67              2 (const uint)
0:67          Sequence
0:67            Constant:
0:67              0 (const int)
0:67            Constant:
0:67              1 (const int)
0:67        direct index ( temp int)
0:67          c3: direct index for structure ( uniform 3-component vector of int)
0:67            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:67            Constant:
0:67              2 (const uint)
0:67          Constant:
0:67            2 (const int)
0:67        Function Call: getOffset2( ( temp 2-component vector of int)
0:68      textureFetchOffset ( temp 4-component vector of int)
0:68        'g_tTex2di4' ( uniform itexture2D)
0:68        vector swizzle ( temp 2-component vector of int)
0:68          c3: direct index for structure ( uniform 3-component vector of int)
0:68            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:68            Constant:
0:68              2 (const uint)
0:68          Sequence
0:68            Constant:
0:68              0 (const int)
0:68            Constant:
0:68              1 (const int)
0:68        direct index ( temp int)
0:68          c3: direct index for structure ( uniform 3-component vector of int)
0:68            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:68            Constant:
0:68              2 (const uint)
0:68          Constant:
0:68            2 (const int)
0:68        Function Call: getOffset2( ( temp 2-component vector of int)
0:69      textureFetchOffset ( temp 4-component vector of uint)
0:69        'g_tTex2du4' ( uniform utexture2D)
0:69        vector swizzle ( temp 2-component vector of int)
0:69          c3: direct index for structure ( uniform 3-component vector of int)
0:69            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:69            Constant:
0:69              2 (const uint)
0:69          Sequence
0:69            Constant:
0:69              0 (const int)
0:69            Constant:
0:69              1 (const int)
0:69        direct index ( temp int)
0:69          c3: direct index for structure ( uniform 3-component vector of int)
0:69            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:69            Constant:
0:69              2 (const uint)
0:69          Constant:
0:69            2 (const int)
0:69        Function Call: getOffset2( ( temp 2-component vector of int)
0:72      textureFetchOffset ( temp 4-component vector of float)
0:72        'g_tTex3df4' ( uniform texture3D)
0:72        vector swizzle ( temp 3-component vector of int)
0:72          c4: direct index for structure ( uniform 4-component vector of int)
0:72            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:72            Constant:
0:72              3 (const uint)
0:72          Sequence
0:72            Constant:
0:72              0 (const int)
0:72            Constant:
0:72              1 (const int)
0:72            Constant:
0:72              2 (const int)
0:72        direct index ( temp int)
0:72          c4: direct index for structure ( uniform 4-component vector of int)
0:72            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:72            Constant:
0:72              3 (const uint)
0:72          Constant:
0:72            3 (const int)
0:72        Function Call: getOffset3( ( temp 3-component vector of int)
0:73      textureFetchOffset ( temp 4-component vector of int)
0:73        'g_tTex3di4' ( uniform itexture3D)
0:73        vector swizzle ( temp 3-component vector of int)
0:73          c4: direct index for structure ( uniform 4-component vector of int)
0:73            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:73            Constant:
0:73              3 (const uint)
0:73          Sequence
0:73            Constant:
0:73              0 (const int)
0:73            Constant:
0:73              1 (const int)
0:73            Constant:
0:73              2 (const int)
0:73        direct index ( temp int)
0:73          c4: direct index for structure ( uniform 4-component vector of int)
0:73            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:73            Constant:
0:73              3 (const uint)
0:73          Constant:
0:73            3 (const int)
0:73        Function Call: getOffset3( ( temp 3-component vector of int)
0:74      textureFetchOffset ( temp 4-component vector of uint)
0:74        'g_tTex3du4' ( uniform utexture3D)
0:74        vector swizzle ( temp 3-component vector of int)
0:74          c4: direct index for structure ( uniform 4-component vector of int)
0:74            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:74            Constant:
0:74              3 (const uint)
0:74          Sequence
0:74            Constant:
0:74              0 (const int)
0:74            Constant:
0:74              1 (const int)
0:74            Constant:
0:74              2 (const int)
0:74        direct index ( temp int)
0:74          c4: direct index for structure ( uniform 4-component vector of int)
0:74            'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:74            Constant:
0:74              3 (const uint)
0:74          Constant:
0:74            3 (const int)
0:74        Function Call: getOffset3( ( temp 3-component vector of int)
0:82      move second child to first child ( temp 4-component vector of float)
0:82        Color: direct index for structure ( temp 4-component vector of float)
0:82          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:82          Constant:
0:82            0 (const int)
0:82        Constant:
0:82          1.000000
0:82          1.000000
0:82          1.000000
0:82          1.000000
0:83      move second child to first child ( temp float)
0:83        Depth: direct index for structure ( temp float)
0:83          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:83          Constant:
0:83            1 (const int)
0:83        Constant:
0:83          1.000000
0:85      Branch: Return with expression
0:85        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58  Function Definition: main( ( temp void)
0:58    Function Parameters: 
0:?     Sequence
0:58      Sequence
0:58        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:58          Color: direct index for structure ( temp 4-component vector of float)
0:58            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58            Constant:
0:58              0 (const int)
0:58        move second child to first child ( temp float)
0:?           '@entryPointOutput.Depth' ( out float FragDepth)
0:58          Depth: direct index for structure ( temp float)
0:58            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:58            Constant:
0:58              1 (const int)
0:?   Linker Objects
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{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4})
0:?     '@entryPointOutput.Depth' ( out float FragDepth)
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)

// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 205

                              Capability Shader
                              Capability ImageGatherExtended
                              Capability Sampled1D
                              Capability SampledCubeArray
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 159 163
                              ExecutionMode 4 OriginUpperLeft
                              ExecutionMode 4 DepthReplacing
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "getOffset1("
                              Name 12  "getOffset2("
                              Name 16  "getOffset3("
                              Name 20  "PS_OUTPUT"
                              MemberName 20(PS_OUTPUT) 0  "Color"
                              MemberName 20(PS_OUTPUT) 1  "Depth"
                              Name 22  "@main("
                              Name 35  "g_tTex1df4"
                              Name 38  "$Global"
                              MemberName 38($Global) 0  "c1"
                              MemberName 38($Global) 1  "c2"
                              MemberName 38($Global) 2  "c3"
                              MemberName 38($Global) 3  "c4"
                              Name 40  ""
                              Name 53  "g_tTex1di4"
                              Name 63  "g_tTex1du4"
                              Name 74  "g_tTex2df4"
                              Name 88  "g_tTex2di4"
                              Name 99  "g_tTex2du4"
                              Name 110  "g_tTex3df4"
                              Name 124  "g_tTex3di4"
                              Name 135  "g_tTex3du4"
                              Name 145  "psout"
                              Name 156  "flattenTemp"
                              Name 159  "@entryPointOutput.Color"
                              Name 163  "@entryPointOutput.Depth"
                              Name 168  "g_sSamp"
                              Name 171  "g_tTexcdf4"
                              Name 174  "g_tTexcdi4"
                              Name 177  "g_tTexcdu4"
                              Name 180  "g_tTex1df4a"
                              Name 183  "g_tTex1di4a"
                              Name 186  "g_tTex1du4a"
                              Name 189  "g_tTex2df4a"
                              Name 192  "g_tTex2di4a"
                              Name 195  "g_tTex2du4a"
                              Name 198  "g_tTexcdf4a"
                              Name 201  "g_tTexcdi4a"
                              Name 204  "g_tTexcdu4a"
                              Decorate 35(g_tTex1df4) DescriptorSet 0
                              Decorate 35(g_tTex1df4) Binding 0
                              MemberDecorate 38($Global) 0 Offset 0
                              MemberDecorate 38($Global) 1 Offset 8
                              MemberDecorate 38($Global) 2 Offset 16
                              MemberDecorate 38($Global) 3 Offset 32
                              Decorate 38($Global) Block
                              Decorate 40 DescriptorSet 0
                              Decorate 40 Binding 9
                              Decorate 53(g_tTex1di4) DescriptorSet 0
                              Decorate 53(g_tTex1di4) Binding 1
                              Decorate 63(g_tTex1du4) DescriptorSet 0
                              Decorate 63(g_tTex1du4) Binding 2
                              Decorate 74(g_tTex2df4) DescriptorSet 0
                              Decorate 74(g_tTex2df4) Binding 3
                              Decorate 88(g_tTex2di4) DescriptorSet 0
                              Decorate 88(g_tTex2di4) Binding 4
                              Decorate 99(g_tTex2du4) DescriptorSet 0
                              Decorate 99(g_tTex2du4) Binding 5
                              Decorate 110(g_tTex3df4) DescriptorSet 0
                              Decorate 110(g_tTex3df4) Binding 6
                              Decorate 124(g_tTex3di4) DescriptorSet 0
                              Decorate 124(g_tTex3di4) Binding 7
                              Decorate 135(g_tTex3du4) DescriptorSet 0
                              Decorate 135(g_tTex3du4) Binding 8
                              Decorate 159(@entryPointOutput.Color) Location 0
                              Decorate 163(@entryPointOutput.Depth) BuiltIn FragDepth
                              Decorate 168(g_sSamp) DescriptorSet 0
                              Decorate 168(g_sSamp) Binding 0
                              Decorate 171(g_tTexcdf4) DescriptorSet 0
                              Decorate 171(g_tTexcdf4) Binding 0
                              Decorate 174(g_tTexcdi4) DescriptorSet 0
                              Decorate 174(g_tTexcdi4) Binding 0
                              Decorate 177(g_tTexcdu4) DescriptorSet 0
                              Decorate 177(g_tTexcdu4) Binding 0
                              Decorate 180(g_tTex1df4a) DescriptorSet 0
                              Decorate 180(g_tTex1df4a) Binding 0
                              Decorate 183(g_tTex1di4a) DescriptorSet 0
                              Decorate 183(g_tTex1di4a) Binding 0
                              Decorate 186(g_tTex1du4a) DescriptorSet 0
                              Decorate 186(g_tTex1du4a) Binding 0
                              Decorate 189(g_tTex2df4a) DescriptorSet 0
                              Decorate 189(g_tTex2df4a) Binding 0
                              Decorate 192(g_tTex2di4a) DescriptorSet 0
                              Decorate 192(g_tTex2di4a) Binding 0
                              Decorate 195(g_tTex2du4a) DescriptorSet 0
                              Decorate 195(g_tTex2du4a) Binding 0
                              Decorate 198(g_tTexcdf4a) DescriptorSet 0
                              Decorate 198(g_tTexcdf4a) Binding 0
                              Decorate 201(g_tTexcdi4a) DescriptorSet 0
                              Decorate 201(g_tTexcdi4a) Binding 0
                              Decorate 204(g_tTexcdu4a) DescriptorSet 0
                              Decorate 204(g_tTexcdu4a) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypeFunction 6(int)
              10:             TypeVector 6(int) 2
              11:             TypeFunction 10(ivec2)
              14:             TypeVector 6(int) 3
              15:             TypeFunction 14(ivec3)
              18:             TypeFloat 32
              19:             TypeVector 18(float) 4
   20(PS_OUTPUT):             TypeStruct 19(fvec4) 18(float)
              21:             TypeFunction 20(PS_OUTPUT)
              24:      6(int) Constant 1
              27:   10(ivec2) ConstantComposite 24 24
              30:   14(ivec3) ConstantComposite 24 24 24
              33:             TypeImage 18(float) 1D sampled format:Unknown
              34:             TypePointer UniformConstant 33
  35(g_tTex1df4):     34(ptr) Variable UniformConstant
              37:             TypeVector 6(int) 4
     38($Global):             TypeStruct 6(int) 10(ivec2) 14(ivec3) 37(ivec4)
              39:             TypePointer Uniform 38($Global)
              40:     39(ptr) Variable Uniform
              41:             TypeInt 32 0
              42:     41(int) Constant 0
              43:             TypePointer Uniform 6(int)
              46:     41(int) Constant 1
              51:             TypeImage 6(int) 1D sampled format:Unknown
              52:             TypePointer UniformConstant 51
  53(g_tTex1di4):     52(ptr) Variable UniformConstant
              61:             TypeImage 41(int) 1D sampled format:Unknown
              62:             TypePointer UniformConstant 61
  63(g_tTex1du4):     62(ptr) Variable UniformConstant
              70:             TypeVector 41(int) 4
              72:             TypeImage 18(float) 2D sampled format:Unknown
              73:             TypePointer UniformConstant 72
  74(g_tTex2df4):     73(ptr) Variable UniformConstant
              76:      6(int) Constant 2
              77:             TypePointer Uniform 14(ivec3)
              81:     41(int) Constant 2
              86:             TypeImage 6(int) 2D sampled format:Unknown
              87:             TypePointer UniformConstant 86
  88(g_tTex2di4):     87(ptr) Variable UniformConstant
              97:             TypeImage 41(int) 2D sampled format:Unknown
              98:             TypePointer UniformConstant 97
  99(g_tTex2du4):     98(ptr) Variable UniformConstant
             108:             TypeImage 18(float) 3D sampled format:Unknown
             109:             TypePointer UniformConstant 108
 110(g_tTex3df4):    109(ptr) Variable UniformConstant
             112:      6(int) Constant 3
             113:             TypePointer Uniform 37(ivec4)
             117:     41(int) Constant 3
             122:             TypeImage 6(int) 3D sampled format:Unknown
             123:             TypePointer UniformConstant 122
 124(g_tTex3di4):    123(ptr) Variable UniformConstant
             133:             TypeImage 41(int) 3D sampled format:Unknown
             134:             TypePointer UniformConstant 133
 135(g_tTex3du4):    134(ptr) Variable UniformConstant
             144:             TypePointer Function 20(PS_OUTPUT)
             146:      6(int) Constant 0
             147:   18(float) Constant 1065353216
             148:   19(fvec4) ConstantComposite 147 147 147 147
             149:             TypePointer Function 19(fvec4)
             151:             TypePointer Function 18(float)
             158:             TypePointer Output 19(fvec4)
159(@entryPointOutput.Color):    158(ptr) Variable Output
             162:             TypePointer Output 18(float)
163(@entryPointOutput.Depth):    162(ptr) Variable Output
             166:             TypeSampler
             167:             TypePointer UniformConstant 166
    168(g_sSamp):    167(ptr) Variable UniformConstant
             169:             TypeImage 18(float) Cube sampled format:Unknown
             170:             TypePointer UniformConstant 169
 171(g_tTexcdf4):    170(ptr) Variable UniformConstant
             172:             TypeImage 6(int) Cube sampled format:Unknown
             173:             TypePointer UniformConstant 172
 174(g_tTexcdi4):    173(ptr) Variable UniformConstant
             175:             TypeImage 41(int) Cube sampled format:Unknown
             176:             TypePointer UniformConstant 175
 177(g_tTexcdu4):    176(ptr) Variable UniformConstant
             178:             TypeImage 18(float) 1D array sampled format:Unknown
             179:             TypePointer UniformConstant 178
180(g_tTex1df4a):    179(ptr) Variable UniformConstant
             181:             TypeImage 6(int) 1D array sampled format:Unknown
             182:             TypePointer UniformConstant 181
183(g_tTex1di4a):    182(ptr) Variable UniformConstant
             184:             TypeImage 41(int) 1D array sampled format:Unknown
             185:             TypePointer UniformConstant 184
186(g_tTex1du4a):    185(ptr) Variable UniformConstant
             187:             TypeImage 18(float) 2D array sampled format:Unknown
             188:             TypePointer UniformConstant 187
189(g_tTex2df4a):    188(ptr) Variable UniformConstant
             190:             TypeImage 6(int) 2D array sampled format:Unknown
             191:             TypePointer UniformConstant 190
192(g_tTex2di4a):    191(ptr) Variable UniformConstant
             193:             TypeImage 41(int) 2D array sampled format:Unknown
             194:             TypePointer UniformConstant 193
195(g_tTex2du4a):    194(ptr) Variable UniformConstant
             196:             TypeImage 18(float) Cube array sampled format:Unknown
             197:             TypePointer UniformConstant 196
198(g_tTexcdf4a):    197(ptr) Variable UniformConstant
             199:             TypeImage 6(int) Cube array sampled format:Unknown
             200:             TypePointer UniformConstant 199
201(g_tTexcdi4a):    200(ptr) Variable UniformConstant
             202:             TypeImage 41(int) Cube array sampled format:Unknown
             203:             TypePointer UniformConstant 202
204(g_tTexcdu4a):    203(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
156(flattenTemp):    144(ptr) Variable Function
             157:20(PS_OUTPUT) FunctionCall 22(@main()
                              Store 156(flattenTemp) 157
             160:    149(ptr) AccessChain 156(flattenTemp) 146
             161:   19(fvec4) Load 160
                              Store 159(@entryPointOutput.Color) 161
             164:    151(ptr) AccessChain 156(flattenTemp) 24
             165:   18(float) Load 164
                              Store 163(@entryPointOutput.Depth) 165
                              Return
                              FunctionEnd
  8(getOffset1():      6(int) Function None 7
               9:             Label
                              ReturnValue 24
                              FunctionEnd
 12(getOffset2():   10(ivec2) Function None 11
              13:             Label
                              ReturnValue 27
                              FunctionEnd
 16(getOffset3():   14(ivec3) Function None 15
              17:             Label
                              ReturnValue 30
                              FunctionEnd
      22(@main():20(PS_OUTPUT) Function None 21
              23:             Label
      145(psout):    144(ptr) Variable Function
              36:          33 Load 35(g_tTex1df4)
              44:     43(ptr) AccessChain 40 24 42
              45:      6(int) Load 44
              47:     43(ptr) AccessChain 40 24 46
              48:      6(int) Load 47
              49:      6(int) FunctionCall 8(getOffset1()
              50:   19(fvec4) ImageFetch 36 45 Lod Offset 48 49
              54:          51 Load 53(g_tTex1di4)
              55:     43(ptr) AccessChain 40 24 42
              56:      6(int) Load 55
              57:     43(ptr) AccessChain 40 24 46
              58:      6(int) Load 57
              59:      6(int) FunctionCall 8(getOffset1()
              60:   37(ivec4) ImageFetch 54 56 Lod Offset 58 59
              64:          61 Load 63(g_tTex1du4)
              65:     43(ptr) AccessChain 40 24 42
              66:      6(int) Load 65
              67:     43(ptr) AccessChain 40 24 46
              68:      6(int) Load 67
              69:      6(int) FunctionCall 8(getOffset1()
              71:   70(ivec4) ImageFetch 64 66 Lod Offset 68 69
              75:          72 Load 74(g_tTex2df4)
              78:     77(ptr) AccessChain 40 76
              79:   14(ivec3) Load 78
              80:   10(ivec2) VectorShuffle 79 79 0 1
              82:     43(ptr) AccessChain 40 76 81
              83:      6(int) Load 82
              84:   10(ivec2) FunctionCall 12(getOffset2()
              85:   19(fvec4) ImageFetch 75 80 Lod Offset 83 84
              89:          86 Load 88(g_tTex2di4)
              90:     77(ptr) AccessChain 40 76
              91:   14(ivec3) Load 90
              92:   10(ivec2) VectorShuffle 91 91 0 1
              93:     43(ptr) AccessChain 40 76 81
              94:      6(int) Load 93
              95:   10(ivec2) FunctionCall 12(getOffset2()
              96:   37(ivec4) ImageFetch 89 92 Lod Offset 94 95
             100:          97 Load 99(g_tTex2du4)
             101:     77(ptr) AccessChain 40 76
             102:   14(ivec3) Load 101
             103:   10(ivec2) VectorShuffle 102 102 0 1
             104:     43(ptr) AccessChain 40 76 81
             105:      6(int) Load 104
             106:   10(ivec2) FunctionCall 12(getOffset2()
             107:   70(ivec4) ImageFetch 100 103 Lod Offset 105 106
             111:         108 Load 110(g_tTex3df4)
             114:    113(ptr) AccessChain 40 112
             115:   37(ivec4) Load 114
             116:   14(ivec3) VectorShuffle 115 115 0 1 2
             118:     43(ptr) AccessChain 40 112 117
             119:      6(int) Load 118
             120:   14(ivec3) FunctionCall 16(getOffset3()
             121:   19(fvec4) ImageFetch 111 116 Lod Offset 119 120
             125:         122 Load 124(g_tTex3di4)
             126:    113(ptr) AccessChain 40 112
             127:   37(ivec4) Load 126
             128:   14(ivec3) VectorShuffle 127 127 0 1 2
             129:     43(ptr) AccessChain 40 112 117
             130:      6(int) Load 129
             131:   14(ivec3) FunctionCall 16(getOffset3()
             132:   37(ivec4) ImageFetch 125 128 Lod Offset 130 131
             136:         133 Load 135(g_tTex3du4)
             137:    113(ptr) AccessChain 40 112
             138:   37(ivec4) Load 137
             139:   14(ivec3) VectorShuffle 138 138 0 1 2
             140:     43(ptr) AccessChain 40 112 117
             141:      6(int) Load 140
             142:   14(ivec3) FunctionCall 16(getOffset3()
             143:   70(ivec4) ImageFetch 136 139 Lod Offset 141 142
             150:    149(ptr) AccessChain 145(psout) 146
                              Store 150 148
             152:    151(ptr) AccessChain 145(psout) 24
                              Store 152 147
             153:20(PS_OUTPUT) Load 145(psout)
                              ReturnValue 153
                              FunctionEnd
