hlsl.matType.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:9  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:9    Function Parameters: 
0:9      'inFloat1' (in 1-component vector of float)
0:9      'inScalar' (in float)
0:?     Sequence
0:10      Branch: Return with expression
0:10        'inFloat1' (in 1-component vector of float)
0:?   Linker Objects
0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44})


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:9  Function Definition: ShaderFunction(vf1;f1; (temp 1-component vector of float)
0:9    Function Parameters: 
0:9      'inFloat1' (in 1-component vector of float)
0:9      'inScalar' (in float)
0:?     Sequence
0:10      Branch: Return with expression
0:10        'inFloat1' (in 1-component vector of float)
0:?   Linker Objects
0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44})

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

                              Capability Shader
                              Capability Float64
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction"
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "PixelShaderFunction"
                              Name 11  "ShaderFunction(vf1;f1;"
                              Name 9  "inFloat1"
                              Name 10  "inScalar"
                              Name 27  "$Global"
                              MemberName 27($Global) 0  "f1"
                              MemberName 27($Global) 1  "fmat11"
                              MemberName 27($Global) 2  "fmat41"
                              MemberName 27($Global) 3  "fmat12"
                              MemberName 27($Global) 4  "dmat23"
                              MemberName 27($Global) 5  "int44"
                              Name 29  ""
                              MemberDecorate 27($Global) 0 Offset 0
                              MemberDecorate 27($Global) 1 RowMajor
                              MemberDecorate 27($Global) 1 Offset 16
                              MemberDecorate 27($Global) 1 MatrixStride 16
                              MemberDecorate 27($Global) 2 RowMajor
                              MemberDecorate 27($Global) 2 Offset 32
                              MemberDecorate 27($Global) 2 MatrixStride 16
                              MemberDecorate 27($Global) 3 RowMajor
                              MemberDecorate 27($Global) 3 Offset 48
                              MemberDecorate 27($Global) 3 MatrixStride 16
                              MemberDecorate 27($Global) 4 RowMajor
                              MemberDecorate 27($Global) 4 Offset 80
                              MemberDecorate 27($Global) 4 MatrixStride 16
                              MemberDecorate 27($Global) 5 RowMajor
                              MemberDecorate 27($Global) 5 Offset 128
                              MemberDecorate 27($Global) 5 MatrixStride 16
                              Decorate 27($Global) Block
                              Decorate 29 DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeFunction 6(float) 7(ptr) 7(ptr)
              16:             TypeVector 6(float) 1
              17:             TypeMatrix 16(fvec) 1
              18:             TypeMatrix 16(fvec) 4
              19:             TypeVector 6(float) 2
              20:             TypeMatrix 19(fvec2) 1
              21:             TypeFloat 64
              22:             TypeVector 21(float) 3
              23:             TypeMatrix 22(fvec3) 2
              24:             TypeInt 32 1
              25:             TypeVector 24(int) 4
              26:             TypeMatrix 25(ivec4) 4
     27($Global):             TypeStruct 6(float) 17 18 20 23 26
              28:             TypePointer Uniform 27($Global)
              29:     28(ptr) Variable Uniform
4(PixelShaderFunction):           2 Function None 3
               5:             Label
                              FunctionEnd
11(ShaderFunction(vf1;f1;):    6(float) Function None 8
     9(inFloat1):      7(ptr) FunctionParameter
    10(inScalar):      7(ptr) FunctionParameter
              12:             Label
              13:    6(float) Load 9(inFloat1)
                              ReturnValue 13
                              FunctionEnd
