spv.buffer.autoassign.frag
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 50

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 47
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_OUTPUT"
                              MemberName 8(PS_OUTPUT) 0  "Color"
                              Name 10  "@main("
                              Name 13  "psout"
                              Name 16  "MyUB1"
                              MemberName 16(MyUB1) 0  "g_a"
                              MemberName 16(MyUB1) 1  "g_b"
                              Name 18  ""
                              Name 28  "MyUB2"
                              MemberName 28(MyUB2) 0  "g_c"
                              Name 30  ""
                              Name 34  "MyUB3"
                              MemberName 34(MyUB3) 0  "g_d"
                              Name 36  ""
                              Name 47  "Color"
                              MemberDecorate 16(MyUB1) 0 Offset 0
                              MemberDecorate 16(MyUB1) 1 Offset 4
                              Decorate 16(MyUB1) Block
                              Decorate 18 DescriptorSet 0
                              Decorate 18 Binding 20
                              MemberDecorate 28(MyUB2) 0 Offset 0
                              Decorate 28(MyUB2) Block
                              Decorate 30 DescriptorSet 0
                              Decorate 30 Binding 15
                              MemberDecorate 34(MyUB3) 0 Offset 0
                              Decorate 34(MyUB3) Block
                              Decorate 36 DescriptorSet 0
                              Decorate 36 Binding 16
                              Decorate 47(Color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
    8(PS_OUTPUT):             TypeStruct 7(fvec4)
               9:             TypeFunction 8(PS_OUTPUT)
              12:             TypePointer Function 8(PS_OUTPUT)
              14:             TypeInt 32 1
              15:     14(int) Constant 0
       16(MyUB1):             TypeStruct 6(float) 14(int)
              17:             TypePointer Uniform 16(MyUB1)
              18:     17(ptr) Variable Uniform
              19:             TypePointer Uniform 6(float)
              22:     14(int) Constant 1
              23:             TypePointer Uniform 14(int)
       28(MyUB2):             TypeStruct 6(float)
              29:             TypePointer Uniform 28(MyUB2)
              30:     29(ptr) Variable Uniform
       34(MyUB3):             TypeStruct 6(float)
              35:             TypePointer Uniform 34(MyUB3)
              36:     35(ptr) Variable Uniform
              41:             TypePointer Function 7(fvec4)
              46:             TypePointer Output 7(fvec4)
       47(Color):     46(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              48:8(PS_OUTPUT) FunctionCall 10(@main()
              49:    7(fvec4) CompositeExtract 48 0
                              Store 47(Color) 49
                              Return
                              FunctionEnd
      10(@main():8(PS_OUTPUT) Function None 9
              11:             Label
       13(psout):     12(ptr) Variable Function
              20:     19(ptr) AccessChain 18 15
              21:    6(float) Load 20
              24:     23(ptr) AccessChain 18 22
              25:     14(int) Load 24
              26:    6(float) ConvertSToF 25
              27:    6(float) FAdd 21 26
              31:     19(ptr) AccessChain 30 15
              32:    6(float) Load 31
              33:    6(float) FAdd 27 32
              37:     19(ptr) AccessChain 36 15
              38:    6(float) Load 37
              39:    6(float) FAdd 33 38
              40:    7(fvec4) CompositeConstruct 39 39 39 39
              42:     41(ptr) AccessChain 13(psout) 15
                              Store 42 40
              43:8(PS_OUTPUT) Load 13(psout)
                              ReturnValue 43
                              FunctionEnd
