spv.rw.autoassign.frag

Linked fragment stage:


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

                              Capability Shader
                              Capability Sampled1D
                              Capability SampledBuffer
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 33
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "main"
                              Name 8  "r00"
                              Name 11  "g_tTex1df1"
                              Name 18  "r01"
                              Name 21  "g_tBuf1du1"
                              Name 25  "PS_OUTPUT"
                              MemberName 25(PS_OUTPUT) 0  "Color"
                              Name 27  "psout"
                              Name 33  "Color"
                              Decorate 11(g_tTex1df1) DescriptorSet 0
                              Decorate 11(g_tTex1df1) Binding 20
                              Decorate 21(g_tBuf1du1) DescriptorSet 0
                              Decorate 21(g_tBuf1du1) Binding 21
                              Decorate 33(Color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               9:             TypeImage 6(float) 1D nonsampled format:R32f
              10:             TypePointer UniformConstant 9
  11(g_tTex1df1):     10(ptr) Variable UniformConstant
              13:             TypeInt 32 1
              14:     13(int) Constant 0
              16:             TypeInt 32 0
              17:             TypePointer Function 16(int)
              19:             TypeImage 16(int) Buffer nonsampled format:R32ui
              20:             TypePointer UniformConstant 19
  21(g_tBuf1du1):     20(ptr) Variable UniformConstant
              24:             TypeVector 6(float) 4
   25(PS_OUTPUT):             TypeStruct 24(fvec4)
              26:             TypePointer Function 25(PS_OUTPUT)
              28:    6(float) Constant 0
              29:   24(fvec4) ConstantComposite 28 28 28 28
              30:             TypePointer Function 24(fvec4)
              32:             TypePointer Output 24(fvec4)
       33(Color):     32(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
          8(r00):      7(ptr) Variable Function
         18(r01):     17(ptr) Variable Function
       27(psout):     26(ptr) Variable Function
              12:           9 Load 11(g_tTex1df1)
              15:    6(float) ImageRead 12 14
                              Store 8(r00) 15
              22:          19 Load 21(g_tBuf1du1)
              23:     16(int) ImageRead 22 14
                              Store 18(r01) 23
              31:     30(ptr) AccessChain 27(psout) 14
                              Store 31 29
              34:     30(ptr) AccessChain 27(psout) 14
              35:   24(fvec4) Load 34
                              Store 33(Color) 35
                              Return
                              FunctionEnd
