hlsl.amend.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5  Function Definition: f1( (temp void)
0:5    Function Parameters: 
0:?     Sequence
0:6      vector-scale (temp 4-component vector of float)
0:6        a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float)
0:6          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:6          Constant:
0:6            0 (const uint)
0:6        b: direct index for structure (layout(offset=16 ) uniform float)
0:6          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:6          Constant:
0:6            1 (const uint)
0:12  Function Definition: f2( (temp void)
0:12    Function Parameters: 
0:?     Sequence
0:13      add (temp float)
0:13        add (temp float)
0:13          direct index (temp float)
0:13            a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float)
0:13              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:13              Constant:
0:13                0 (const uint)
0:13            Constant:
0:13              0 (const int)
0:13          b: direct index for structure (layout(offset=16 ) uniform float)
0:13            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:13            Constant:
0:13              1 (const uint)
0:13        direct index (temp float)
0:13          c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
0:13            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:13            Constant:
0:13              2 (const uint)
0:13          Constant:
0:13            0 (const int)
0:17  Function Definition: f3( (temp void)
0:17    Function Parameters: 
0:?     Sequence
0:18      c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
0:18        'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:18        Constant:
0:18          2 (const uint)
0:24  Function Definition: f4( (temp void)
0:24    Function Parameters: 
0:?     Sequence
0:25      vector-scale (temp 4-component vector of float)
0:25        Convert int to float (temp float)
0:25          d: direct index for structure (layout(offset=44 ) uniform int)
0:25            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:25            Constant:
0:25              3 (const uint)
0:25        a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float)
0:25          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:25          Constant:
0:25            0 (const uint)
0:?   Linker Objects
0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5  Function Definition: f1( (temp void)
0:5    Function Parameters: 
0:?     Sequence
0:6      vector-scale (temp 4-component vector of float)
0:6        a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float)
0:6          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:6          Constant:
0:6            0 (const uint)
0:6        b: direct index for structure (layout(offset=16 ) uniform float)
0:6          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:6          Constant:
0:6            1 (const uint)
0:12  Function Definition: f2( (temp void)
0:12    Function Parameters: 
0:?     Sequence
0:13      add (temp float)
0:13        add (temp float)
0:13          direct index (temp float)
0:13            a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float)
0:13              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:13              Constant:
0:13                0 (const uint)
0:13            Constant:
0:13              0 (const int)
0:13          b: direct index for structure (layout(offset=16 ) uniform float)
0:13            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:13            Constant:
0:13              1 (const uint)
0:13        direct index (temp float)
0:13          c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
0:13            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:13            Constant:
0:13              2 (const uint)
0:13          Constant:
0:13            0 (const int)
0:17  Function Definition: f3( (temp void)
0:17    Function Parameters: 
0:?     Sequence
0:18      c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float)
0:18        'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:18        Constant:
0:18          2 (const uint)
0:24  Function Definition: f4( (temp void)
0:24    Function Parameters: 
0:?     Sequence
0:25      vector-scale (temp 4-component vector of float)
0:25        Convert int to float (temp float)
0:25          d: direct index for structure (layout(offset=44 ) uniform int)
0:25            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:25            Constant:
0:25              3 (const uint)
0:25        a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float)
0:25          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
0:25          Constant:
0:25            0 (const uint)
0:?   Linker Objects
0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "f1"
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "f1"
                              Name 6  "f2("
                              Name 8  "f3("
                              Name 10  "f4("
                              Name 16  "$Global"
                              MemberName 16($Global) 0  "a"
                              MemberName 16($Global) 1  "b"
                              MemberName 16($Global) 2  "c"
                              MemberName 16($Global) 3  "d"
                              MemberName 16($Global) 4  "e"
                              Name 18  ""
                              MemberDecorate 16($Global) 0 Offset 0
                              MemberDecorate 16($Global) 1 Offset 16
                              MemberDecorate 16($Global) 2 Offset 32
                              MemberDecorate 16($Global) 3 Offset 44
                              MemberDecorate 16($Global) 4 Offset 48
                              Decorate 16($Global) Block
                              Decorate 18 DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
              12:             TypeFloat 32
              13:             TypeVector 12(float) 4
              14:             TypeVector 12(float) 3
              15:             TypeInt 32 1
     16($Global):             TypeStruct 13(fvec4) 12(float) 14(fvec3) 15(int) 15(int)
              17:             TypePointer Uniform 16($Global)
              18:     17(ptr) Variable Uniform
              19:     15(int) Constant 0
              20:             TypePointer Uniform 13(fvec4)
              23:     15(int) Constant 1
              24:             TypePointer Uniform 12(float)
              28:             TypeInt 32 0
              29:     28(int) Constant 0
              35:     15(int) Constant 2
              39:     15(int) Constant 3
              40:             TypePointer Uniform 15(int)
           4(f1):           2 Function None 3
               5:             Label
              21:     20(ptr) AccessChain 18 19
              22:   13(fvec4) Load 21
              25:     24(ptr) AccessChain 18 23
              26:   12(float) Load 25
              27:   13(fvec4) VectorTimesScalar 22 26
                              Return
                              FunctionEnd
          6(f2():           2 Function None 3
               7:             Label
              30:     24(ptr) AccessChain 18 19 29
              31:   12(float) Load 30
              32:     24(ptr) AccessChain 18 23
              33:   12(float) Load 32
              34:   12(float) FAdd 31 33
              36:     24(ptr) AccessChain 18 35 29
              37:   12(float) Load 36
              38:   12(float) FAdd 34 37
                              Return
                              FunctionEnd
          8(f3():           2 Function None 3
               9:             Label
                              Return
                              FunctionEnd
         10(f4():           2 Function None 3
              11:             Label
              41:     40(ptr) AccessChain 18 39
              42:     15(int) Load 41
              43:   12(float) ConvertSToF 42
              44:     20(ptr) AccessChain 18 19
              45:   13(fvec4) Load 44
              46:   13(fvec4) VectorTimesScalar 45 43
                              Return
                              FunctionEnd
