spv.buffer.autoassign.frag
// Module Version 10000
// Generated by (magic number): 80008
// 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  "@entryPointOutput.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(@entryPointOutput.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(@entryPointOutput.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(@entryPointOutput.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
