hlsl.matpack-pragma.frag
WARNING: 0:19: 'random_string_foo' : unknown pack_matrix pragma value 

Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:29  Function Definition: @main( ( temp 4-component vector of float)
0:29    Function Parameters: 
0:?     Sequence
0:32      Branch: Return with expression
0:32        add ( temp 4-component vector of float)
0:32          add ( temp 4-component vector of float)
0:31            add ( temp 4-component vector of float)
0:31              add ( temp 4-component vector of float)
0:31                add ( temp 4-component vector of float)
0:31                  direct index (layout( row_major) temp 4-component vector of float)
0:31                    mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
0:31                      g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
0:31                        'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:31                        Constant:
0:31                          0 (const uint)
0:31                      Constant:
0:31                        0 (const int)
0:31                    Constant:
0:31                      0 (const int)
0:31                  direct index (layout( column_major) temp 4-component vector of float)
0:31                    mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float)
0:31                      g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
0:31                        'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:31                        Constant:
0:31                          0 (const uint)
0:31                      Constant:
0:31                        1 (const int)
0:31                    Constant:
0:31                      0 (const int)
0:31                direct index (layout( column_major) temp 4-component vector of float)
0:31                  mat3: direct index for structure (layout( column_major) temp 4X4 matrix of float)
0:31                    g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
0:31                      'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:31                      Constant:
0:31                        0 (const uint)
0:31                    Constant:
0:31                      2 (const int)
0:31                  Constant:
0:31                    0 (const int)
0:32              direct index (layout( row_major) temp 4-component vector of float)
0:32                mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
0:32                  g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
0:32                    'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:32                    Constant:
0:32                      1 (const uint)
0:32                  Constant:
0:32                    0 (const int)
0:32                Constant:
0:32                  0 (const int)
0:32            direct index (layout( column_major) temp 4-component vector of float)
0:32              mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float)
0:32                g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
0:32                  'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:32                  Constant:
0:32                    1 (const uint)
0:32                Constant:
0:32                  1 (const int)
0:32              Constant:
0:32                0 (const int)
0:32          direct index (layout( row_major) temp 4-component vector of float)
0:32            mat3: direct index for structure (layout( row_major) temp 4X4 matrix of float)
0:32              g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
0:32                'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:32                Constant:
0:32                  1 (const uint)
0:32              Constant:
0:32                2 (const int)
0:32            Constant:
0:32              0 (const int)
0:29  Function Definition: main( ( temp void)
0:29    Function Parameters: 
0:?     Sequence
0:29      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:29        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:29  Function Definition: @main( ( temp 4-component vector of float)
0:29    Function Parameters: 
0:?     Sequence
0:32      Branch: Return with expression
0:32        add ( temp 4-component vector of float)
0:32          add ( temp 4-component vector of float)
0:31            add ( temp 4-component vector of float)
0:31              add ( temp 4-component vector of float)
0:31                add ( temp 4-component vector of float)
0:31                  direct index (layout( row_major) temp 4-component vector of float)
0:31                    mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
0:31                      g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
0:31                        'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:31                        Constant:
0:31                          0 (const uint)
0:31                      Constant:
0:31                        0 (const int)
0:31                    Constant:
0:31                      0 (const int)
0:31                  direct index (layout( column_major) temp 4-component vector of float)
0:31                    mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float)
0:31                      g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
0:31                        'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:31                        Constant:
0:31                          0 (const uint)
0:31                      Constant:
0:31                        1 (const int)
0:31                    Constant:
0:31                      0 (const int)
0:31                direct index (layout( column_major) temp 4-component vector of float)
0:31                  mat3: direct index for structure (layout( column_major) temp 4X4 matrix of float)
0:31                    g_MyBuffer1: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3})
0:31                      'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:31                      Constant:
0:31                        0 (const uint)
0:31                    Constant:
0:31                      2 (const int)
0:31                  Constant:
0:31                    0 (const int)
0:32              direct index (layout( row_major) temp 4-component vector of float)
0:32                mat1: direct index for structure (layout( row_major) temp 4X4 matrix of float)
0:32                  g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
0:32                    'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:32                    Constant:
0:32                      1 (const uint)
0:32                  Constant:
0:32                    0 (const int)
0:32                Constant:
0:32                  0 (const int)
0:32            direct index (layout( column_major) temp 4-component vector of float)
0:32              mat2: direct index for structure (layout( column_major) temp 4X4 matrix of float)
0:32                g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
0:32                  'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:32                  Constant:
0:32                    1 (const uint)
0:32                Constant:
0:32                  1 (const int)
0:32              Constant:
0:32                0 (const int)
0:32          direct index (layout( row_major) temp 4-component vector of float)
0:32            mat3: direct index for structure (layout( row_major) temp 4X4 matrix of float)
0:32              g_MyBuffer2: direct index for structure (layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3})
0:32                'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:32                Constant:
0:32                  1 (const uint)
0:32              Constant:
0:32                2 (const int)
0:32            Constant:
0:32              0 (const int)
0:29  Function Definition: main( ( temp void)
0:29    Function Parameters: 
0:?     Sequence
0:29      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:29        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( column_major) temp 4X4 matrix of float mat3} g_MyBuffer1, layout( row_major std140) uniform structure{layout( row_major) temp 4X4 matrix of float mat1, layout( column_major) temp 4X4 matrix of float mat2, layout( row_major) temp 4X4 matrix of float mat3} g_MyBuffer2, layout( row_major std140) uniform 4X4 matrix of float mat1a})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 42
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "@main("
                              Name 12  "MyBuffer1"
                              MemberName 12(MyBuffer1) 0  "mat1"
                              MemberName 12(MyBuffer1) 1  "mat2"
                              MemberName 12(MyBuffer1) 2  "mat3"
                              Name 13  "MyBuffer2"
                              MemberName 13(MyBuffer2) 0  "mat1"
                              MemberName 13(MyBuffer2) 1  "mat2"
                              MemberName 13(MyBuffer2) 2  "mat3"
                              Name 14  "Example"
                              MemberName 14(Example) 0  "g_MyBuffer1"
                              MemberName 14(Example) 1  "g_MyBuffer2"
                              MemberName 14(Example) 2  "mat1a"
                              Name 16  ""
                              Name 42  "@entryPointOutput"
                              MemberDecorate 12(MyBuffer1) 0 RowMajor
                              MemberDecorate 12(MyBuffer1) 0 Offset 0
                              MemberDecorate 12(MyBuffer1) 0 MatrixStride 16
                              MemberDecorate 12(MyBuffer1) 1 ColMajor
                              MemberDecorate 12(MyBuffer1) 1 Offset 64
                              MemberDecorate 12(MyBuffer1) 1 MatrixStride 16
                              MemberDecorate 12(MyBuffer1) 2 ColMajor
                              MemberDecorate 12(MyBuffer1) 2 Offset 128
                              MemberDecorate 12(MyBuffer1) 2 MatrixStride 16
                              MemberDecorate 13(MyBuffer2) 0 RowMajor
                              MemberDecorate 13(MyBuffer2) 0 Offset 0
                              MemberDecorate 13(MyBuffer2) 0 MatrixStride 16
                              MemberDecorate 13(MyBuffer2) 1 ColMajor
                              MemberDecorate 13(MyBuffer2) 1 Offset 64
                              MemberDecorate 13(MyBuffer2) 1 MatrixStride 16
                              MemberDecorate 13(MyBuffer2) 2 RowMajor
                              MemberDecorate 13(MyBuffer2) 2 Offset 128
                              MemberDecorate 13(MyBuffer2) 2 MatrixStride 16
                              MemberDecorate 14(Example) 0 Offset 0
                              MemberDecorate 14(Example) 1 Offset 192
                              MemberDecorate 14(Example) 2 RowMajor
                              MemberDecorate 14(Example) 2 Offset 384
                              MemberDecorate 14(Example) 2 MatrixStride 16
                              Decorate 14(Example) Block
                              Decorate 16 DescriptorSet 0
                              Decorate 42(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
              11:             TypeMatrix 7(fvec4) 4
   12(MyBuffer1):             TypeStruct 11 11 11
   13(MyBuffer2):             TypeStruct 11 11 11
     14(Example):             TypeStruct 12(MyBuffer1) 13(MyBuffer2) 11
              15:             TypePointer Uniform 14(Example)
              16:     15(ptr) Variable Uniform
              17:             TypeInt 32 1
              18:     17(int) Constant 0
              19:             TypePointer Uniform 7(fvec4)
              22:     17(int) Constant 1
              26:     17(int) Constant 2
              41:             TypePointer Output 7(fvec4)
42(@entryPointOutput):     41(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              43:    7(fvec4) FunctionCall 9(@main()
                              Store 42(@entryPointOutput) 43
                              Return
                              FunctionEnd
       9(@main():    7(fvec4) Function None 8
              10:             Label
              20:     19(ptr) AccessChain 16 18 18 18
              21:    7(fvec4) Load 20
              23:     19(ptr) AccessChain 16 18 22 18
              24:    7(fvec4) Load 23
              25:    7(fvec4) FAdd 21 24
              27:     19(ptr) AccessChain 16 18 26 18
              28:    7(fvec4) Load 27
              29:    7(fvec4) FAdd 25 28
              30:     19(ptr) AccessChain 16 22 18 18
              31:    7(fvec4) Load 30
              32:    7(fvec4) FAdd 29 31
              33:     19(ptr) AccessChain 16 22 22 18
              34:    7(fvec4) Load 33
              35:    7(fvec4) FAdd 32 34
              36:     19(ptr) AccessChain 16 22 26 18
              37:    7(fvec4) Load 36
              38:    7(fvec4) FAdd 35 37
                              ReturnValue 38
                              FunctionEnd
