hlsl.rw.register.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:11  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
0:11    Function Parameters: 
0:?     Sequence
0:12      Sequence
0:12        move second child to first child ( temp float)
0:12          'r00' ( temp float)
0:12          imageLoad ( temp float)
0:12            'g_tTex1df1' (layout( binding=2 r32f) uniform image1D)
0:12            Constant:
0:12              0 (const int)
0:13      Sequence
0:13        move second child to first child ( temp uint)
0:13          'r01' ( temp uint)
0:13          imageLoad ( temp uint)
0:13            'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer)
0:13            Constant:
0:13              0 (const int)
0:16      move second child to first child ( temp 4-component vector of float)
0:16        Color: direct index for structure ( temp 4-component vector of float)
0:16          'psout' ( temp structure{ temp 4-component vector of float Color})
0:16          Constant:
0:16            0 (const int)
0:16        Constant:
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:17      Branch: Return with expression
0:17        'psout' ( temp structure{ temp 4-component vector of float Color})
0:11  Function Definition: main( ( temp void)
0:11    Function Parameters: 
0:?     Sequence
0:11      Sequence
0:11        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:11          Color: direct index for structure ( temp 4-component vector of float)
0:11            Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:11            Constant:
0:11              0 (const int)
0:?   Linker Objects
0:?     'g_tTex1df1' (layout( binding=2 r32f) uniform image1D)
0:?     'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer)
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:11  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
0:11    Function Parameters: 
0:?     Sequence
0:12      Sequence
0:12        move second child to first child ( temp float)
0:12          'r00' ( temp float)
0:12          imageLoad ( temp float)
0:12            'g_tTex1df1' (layout( binding=2 r32f) uniform image1D)
0:12            Constant:
0:12              0 (const int)
0:13      Sequence
0:13        move second child to first child ( temp uint)
0:13          'r01' ( temp uint)
0:13          imageLoad ( temp uint)
0:13            'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer)
0:13            Constant:
0:13              0 (const int)
0:16      move second child to first child ( temp 4-component vector of float)
0:16        Color: direct index for structure ( temp 4-component vector of float)
0:16          'psout' ( temp structure{ temp 4-component vector of float Color})
0:16          Constant:
0:16            0 (const int)
0:16        Constant:
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:17      Branch: Return with expression
0:17        'psout' ( temp structure{ temp 4-component vector of float Color})
0:11  Function Definition: main( ( temp void)
0:11    Function Parameters: 
0:?     Sequence
0:11      Sequence
0:11        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:11          Color: direct index for structure ( temp 4-component vector of float)
0:11            Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:11            Constant:
0:11              0 (const int)
0:?   Linker Objects
0:?     'g_tTex1df1' (layout( binding=2 r32f) uniform image1D)
0:?     'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer)
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)

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

                              Capability Shader
                              Capability Image1D
                              Capability ImageBuffer
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 39
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_OUTPUT"
                              MemberName 8(PS_OUTPUT) 0  "Color"
                              Name 10  "@main("
                              Name 13  "r00"
                              Name 16  "g_tTex1df1"
                              Name 23  "r01"
                              Name 26  "g_tBuf1du1"
                              Name 30  "psout"
                              Name 39  "@entryPointOutput.Color"
                              Decorate 16(g_tTex1df1) DescriptorSet 0
                              Decorate 16(g_tTex1df1) Binding 2
                              Decorate 26(g_tBuf1du1) DescriptorSet 0
                              Decorate 26(g_tBuf1du1) Binding 3
                              Decorate 39(@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 6(float)
              14:             TypeImage 6(float) 1D nonsampled format:R32f
              15:             TypePointer UniformConstant 14
  16(g_tTex1df1):     15(ptr) Variable UniformConstant
              18:             TypeInt 32 1
              19:     18(int) Constant 0
              21:             TypeInt 32 0
              22:             TypePointer Function 21(int)
              24:             TypeImage 21(int) Buffer nonsampled format:R32ui
              25:             TypePointer UniformConstant 24
  26(g_tBuf1du1):     25(ptr) Variable UniformConstant
              29:             TypePointer Function 8(PS_OUTPUT)
              31:    6(float) Constant 1065353216
              32:    7(fvec4) ConstantComposite 31 31 31 31
              33:             TypePointer Function 7(fvec4)
              38:             TypePointer Output 7(fvec4)
39(@entryPointOutput.Color):     38(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              40:8(PS_OUTPUT) FunctionCall 10(@main()
              41:    7(fvec4) CompositeExtract 40 0
                              Store 39(@entryPointOutput.Color) 41
                              Return
                              FunctionEnd
      10(@main():8(PS_OUTPUT) Function None 9
              11:             Label
         13(r00):     12(ptr) Variable Function
         23(r01):     22(ptr) Variable Function
       30(psout):     29(ptr) Variable Function
              17:          14 Load 16(g_tTex1df1)
              20:    6(float) ImageRead 17 19
                              Store 13(r00) 20
              27:          24 Load 26(g_tBuf1du1)
              28:     21(int) ImageRead 27 19
                              Store 23(r01) 28
              34:     33(ptr) AccessChain 30(psout) 19
                              Store 34 32
              35:8(PS_OUTPUT) Load 30(psout)
                              ReturnValue 35
                              FunctionEnd
