hlsl.attributeC11.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20  Function Definition: @main(vf4; ( temp 4-component vector of float)
0:20    Function Parameters: 
0:20      'input' ( in 4-component vector of float)
0:?     Sequence
0:21      Branch: Return with expression
0:21        add ( temp 4-component vector of float)
0:21          'input' ( in 4-component vector of float)
0:21          textureFetch ( temp 4-component vector of float)
0:21            'attach' ( uniform texture2D)
0:21            vector swizzle ( temp int)
0:21              Constant:
0:21                0 (const int)
0:21                0 (const int)
0:21              Sequence
0:21                Constant:
0:21                  0 (const int)
0:21            direct index ( temp int)
0:21              Constant:
0:21                0 (const int)
0:21                0 (const int)
0:21              Constant:
0:21                1 (const int)
0:20  Function Definition: main( ( temp void)
0:20    Function Parameters: 
0:?     Sequence
0:20      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=8) in 4-component vector of float)
0:20      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:20        Function Call: @main(vf4; ( temp 4-component vector of float)
0:?           'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'buffer1' (layout( set=0 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 2-component vector of float f} @data})
0:?     'buffer3' (layout( set=2 binding=3 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 2-component vector of float f} @data})
0:?     'attach' ( uniform texture2D)
0:?     'ci' ( specialization-constant const int)
0:?       11 (const int)
0:?     'anon@0' (layout( row_major std430 push_constant) uniform block{layout( row_major std430 offset=0) uniform int a})
0:?     '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:?     'input' (layout( location=8) in 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20  Function Definition: @main(vf4; ( temp 4-component vector of float)
0:20    Function Parameters: 
0:20      'input' ( in 4-component vector of float)
0:?     Sequence
0:21      Branch: Return with expression
0:21        add ( temp 4-component vector of float)
0:21          'input' ( in 4-component vector of float)
0:21          textureFetch ( temp 4-component vector of float)
0:21            'attach' ( uniform texture2D)
0:21            vector swizzle ( temp int)
0:21              Constant:
0:21                0 (const int)
0:21                0 (const int)
0:21              Sequence
0:21                Constant:
0:21                  0 (const int)
0:21            direct index ( temp int)
0:21              Constant:
0:21                0 (const int)
0:21                0 (const int)
0:21              Constant:
0:21                1 (const int)
0:20  Function Definition: main( ( temp void)
0:20    Function Parameters: 
0:?     Sequence
0:20      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=8) in 4-component vector of float)
0:20      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:20        Function Call: @main(vf4; ( temp 4-component vector of float)
0:?           'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'buffer1' (layout( set=0 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 2-component vector of float f} @data})
0:?     'buffer3' (layout( set=2 binding=3 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 2-component vector of float f} @data})
0:?     'attach' ( uniform texture2D)
0:?     'ci' ( specialization-constant const int)
0:?       11 (const int)
0:?     'anon@0' (layout( row_major std430 push_constant) uniform block{layout( row_major std430 offset=0) uniform int a})
0:?     '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:?     'input' (layout( location=8) in 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 33 36
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(vf4;"
                              Name 10  "input"
                              Name 16  "attach"
                              Name 31  "input"
                              Name 33  "input"
                              Name 36  "@entryPointOutput"
                              Name 37  "param"
                              Name 41  "S"
                              MemberName 41(S) 0  "f"
                              Name 43  "buffer1"
                              MemberName 43(buffer1) 0  "@data"
                              Name 45  "buffer1"
                              Name 46  "buffer3"
                              Name 47  "ci"
                              Name 48  "pcBuf"
                              MemberName 48(pcBuf) 0  "a"
                              Name 50  ""
                              Decorate 16(attach) DescriptorSet 0
                              Decorate 16(attach) InputAttachmentIndex 4
                              Decorate 33(input) Location 8
                              Decorate 36(@entryPointOutput) Location 7
                              MemberDecorate 41(S) 0 Offset 0
                              Decorate 42 ArrayStride 8
                              MemberDecorate 43(buffer1) 0 NonWritable
                              MemberDecorate 43(buffer1) 0 Offset 0
                              Decorate 43(buffer1) BufferBlock
                              Decorate 45(buffer1) DescriptorSet 0
                              Decorate 45(buffer1) Binding 1
                              Decorate 46(buffer3) DescriptorSet 2
                              Decorate 46(buffer3) Binding 3
                              Decorate 47(ci) SpecId 13
                              MemberDecorate 48(pcBuf) 0 Offset 0
                              Decorate 48(pcBuf) Block
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypeFunction 7(fvec4) 8(ptr)
              14:             TypeImage 6(float) 2D sampled format:Unknown
              15:             TypePointer UniformConstant 14
      16(attach):     15(ptr) Variable UniformConstant
              18:             TypeInt 32 1
              19:             TypeVector 18(int) 2
              20:     18(int) Constant 0
              21:   19(ivec2) ConstantComposite 20 20
              22:             TypeInt 32 0
              23:     22(int) Constant 0
              25:     22(int) Constant 1
              32:             TypePointer Input 7(fvec4)
       33(input):     32(ptr) Variable Input
              35:             TypePointer Output 7(fvec4)
36(@entryPointOutput):     35(ptr) Variable Output
              40:             TypeVector 6(float) 2
           41(S):             TypeStruct 40(fvec2)
              42:             TypeRuntimeArray 41(S)
     43(buffer1):             TypeStruct 42
              44:             TypePointer Uniform 43(buffer1)
     45(buffer1):     44(ptr) Variable Uniform
     46(buffer3):     44(ptr) Variable Uniform
          47(ci):     18(int) SpecConstant 11
       48(pcBuf):             TypeStruct 18(int)
              49:             TypePointer PushConstant 48(pcBuf)
              50:     49(ptr) Variable PushConstant
         4(main):           2 Function None 3
               5:             Label
       31(input):      8(ptr) Variable Function
       37(param):      8(ptr) Variable Function
              34:    7(fvec4) Load 33(input)
                              Store 31(input) 34
              38:    7(fvec4) Load 31(input)
                              Store 37(param) 38
              39:    7(fvec4) FunctionCall 11(@main(vf4;) 37(param)
                              Store 36(@entryPointOutput) 39
                              Return
                              FunctionEnd
  11(@main(vf4;):    7(fvec4) Function None 9
       10(input):      8(ptr) FunctionParameter
              12:             Label
              13:    7(fvec4) Load 10(input)
              17:          14 Load 16(attach)
              24:     18(int) CompositeExtract 21 0
              26:     18(int) CompositeExtract 21 1
              27:    7(fvec4) ImageFetch 17 24 Lod 26
              28:    7(fvec4) FAdd 13 27
                              ReturnValue 28
                              FunctionEnd
