hlsl.buffer.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:29  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:26    Function Parameters: 
0:26      'input' (in 4-component vector of float)
0:?     Sequence
0:27      Branch: Return with expression
0:27        add (temp 4-component vector of float)
0:27          add (temp 4-component vector of float)
0:27            add (temp 4-component vector of float)
0:27              add (temp 4-component vector of float)
0:27                'input' (in 4-component vector of float)
0:27                v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
0:27                  'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
0:27                  Constant:
0:27                    0 (const uint)
0:27              v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float)
0:27                'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
0:27                Constant:
0:27                  0 (const uint)
0:27            v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
0:27              'anon@2' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
0:27              Constant:
0:27                0 (const uint)
0:27          v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
0:27            'anon@3' (layout(column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
0:27            Constant:
0:27              0 (const uint)
0:?   Linker Objects
0:?     'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
0:?     'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
0:?     'anon@2' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
0:?     'anon@3' (layout(column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:29  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:26    Function Parameters: 
0:26      'input' (in 4-component vector of float)
0:?     Sequence
0:27      Branch: Return with expression
0:27        add (temp 4-component vector of float)
0:27          add (temp 4-component vector of float)
0:27            add (temp 4-component vector of float)
0:27              add (temp 4-component vector of float)
0:27                'input' (in 4-component vector of float)
0:27                v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
0:27                  'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
0:27                  Constant:
0:27                    0 (const uint)
0:27              v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float)
0:27                'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
0:27                Constant:
0:27                  0 (const uint)
0:27            v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
0:27              'anon@2' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
0:27              Constant:
0:27                0 (const uint)
0:27          v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
0:27            'anon@3' (layout(column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
0:27            Constant:
0:27              0 (const uint)
0:?   Linker Objects
0:?     'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
0:?     'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
0:?     'anon@2' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
0:?     'anon@3' (layout(column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 9
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 450
                              Name 4  "PixelShaderFunction"
                              Name 9  "input"
                              Name 11  ""
                              MemberName 11 0  "v1"
                              Name 13  ""
                              Name 20  ""
                              MemberName 20 0  "v2"
                              Name 22  ""
                              Name 26  ""
                              MemberName 26 0  "v3"
                              MemberName 26 1  "i3"
                              Name 28  ""
                              Name 32  ""
                              MemberName 32 0  "v4"
                              MemberName 32 1  "i4"
                              MemberName 32 2  "f1"
                              MemberName 32 3  "f3"
                              MemberName 32 4  "f4"
                              MemberName 32 5  "f5"
                              MemberName 32 6  "f6"
                              MemberName 32 7  "f7"
                              Name 34  ""
                              MemberDecorate 11 0 Offset 0
                              Decorate 11 Block
                              Decorate 13 DescriptorSet 0
                              MemberDecorate 20 0 Offset 0
                              Decorate 20 BufferBlock
                              Decorate 22 DescriptorSet 0
                              MemberDecorate 26 0 Offset 0
                              MemberDecorate 26 1 Offset 20
                              Decorate 26 Block
                              Decorate 28 DescriptorSet 0
                              MemberDecorate 32 0 Offset 16
                              MemberDecorate 32 1 Offset 48
                              MemberDecorate 32 2 Offset 60
                              MemberDecorate 32 3 Offset 64
                              MemberDecorate 32 4 Offset 68
                              MemberDecorate 32 5 Offset 72
                              MemberDecorate 32 6 Offset 76
                              MemberDecorate 32 7 Offset 80
                              Decorate 32 BufferBlock
                              Decorate 34 DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Input 7(fvec4)
        9(input):      8(ptr) Variable Input
              11:             TypeStruct 7(fvec4)
              12:             TypePointer Uniform 11(struct)
              13:     12(ptr) Variable Uniform
              14:             TypeInt 32 1
              15:     14(int) Constant 0
              16:             TypePointer Uniform 7(fvec4)
              20:             TypeStruct 7(fvec4)
              21:             TypePointer Uniform 20(struct)
              22:     21(ptr) Variable Uniform
              26:             TypeStruct 7(fvec4) 14(int)
              27:             TypePointer Uniform 26(struct)
              28:     27(ptr) Variable Uniform
              32:             TypeStruct 7(fvec4) 14(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float)
              33:             TypePointer Uniform 32(struct)
              34:     33(ptr) Variable Uniform
4(PixelShaderFunction):           2 Function None 3
               5:             Label
              10:    7(fvec4) Load 9(input)
              17:     16(ptr) AccessChain 13 15
              18:    7(fvec4) Load 17
              19:    7(fvec4) FAdd 10 18
              23:     16(ptr) AccessChain 22 15
              24:    7(fvec4) Load 23
              25:    7(fvec4) FAdd 19 24
              29:     16(ptr) AccessChain 28 15
              30:    7(fvec4) Load 29
              31:    7(fvec4) FAdd 25 30
              35:     16(ptr) AccessChain 34 15
              36:    7(fvec4) Load 35
              37:    7(fvec4) FAdd 31 36
                              ReturnValue 37
                              FunctionEnd
