hlsl.load.rwbuffer.dx10.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:22  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
0:22    Function Parameters: 
0:?     Sequence
0:25      imageLoad ( temp 4-component vector of float)
0:25        'g_tBuffF' (layout( rgba32f) uniform imageBuffer)
0:25        c1: direct index for structure ( uniform int)
0:25          'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4})
0:25          Constant:
0:25            0 (const uint)
0:26      imageLoad ( temp 4-component vector of uint)
0:26        'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer)
0:26        c1: direct index for structure ( uniform int)
0:26          'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4})
0:26          Constant:
0:26            0 (const uint)
0:27      imageLoad ( temp 4-component vector of int)
0:27        'g_tBuffI' (layout( rgba32i) uniform iimageBuffer)
0:27        c1: direct index for structure ( uniform int)
0:27          'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4})
0:27          Constant:
0:27            0 (const uint)
0:29      move second child to first child ( temp 4-component vector of float)
0:29        Color: direct index for structure ( temp 4-component vector of float)
0:29          'psout' ( temp structure{ temp 4-component vector of float Color})
0:29          Constant:
0:29            0 (const int)
0:29        Constant:
0:29          1.000000
0:29          1.000000
0:29          1.000000
0:29          1.000000
0:31      Branch: Return with expression
0:31        'psout' ( temp structure{ temp 4-component vector of float Color})
0:22  Function Definition: main( ( temp void)
0:22    Function Parameters: 
0:?     Sequence
0:22      Sequence
0:22        move second child to first child ( temp 4-component vector of float)
0:?           'Color' (layout( location=0) out 4-component vector of float)
0:22          Color: direct index for structure ( temp 4-component vector of float)
0:22            Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:22            Constant:
0:22              0 (const int)
0:?   Linker Objects
0:?     'g_tBuffF' (layout( rgba32f) uniform imageBuffer)
0:?     'g_tBuffI' (layout( rgba32i) uniform iimageBuffer)
0:?     'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer)
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4})
0:?     '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:22  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color})
0:22    Function Parameters: 
0:?     Sequence
0:25      imageLoad ( temp 4-component vector of float)
0:25        'g_tBuffF' (layout( rgba32f) uniform imageBuffer)
0:25        c1: direct index for structure ( uniform int)
0:25          'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4})
0:25          Constant:
0:25            0 (const uint)
0:26      imageLoad ( temp 4-component vector of uint)
0:26        'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer)
0:26        c1: direct index for structure ( uniform int)
0:26          'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4})
0:26          Constant:
0:26            0 (const uint)
0:27      imageLoad ( temp 4-component vector of int)
0:27        'g_tBuffI' (layout( rgba32i) uniform iimageBuffer)
0:27        c1: direct index for structure ( uniform int)
0:27          'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4})
0:27          Constant:
0:27            0 (const uint)
0:29      move second child to first child ( temp 4-component vector of float)
0:29        Color: direct index for structure ( temp 4-component vector of float)
0:29          'psout' ( temp structure{ temp 4-component vector of float Color})
0:29          Constant:
0:29            0 (const int)
0:29        Constant:
0:29          1.000000
0:29          1.000000
0:29          1.000000
0:29          1.000000
0:31      Branch: Return with expression
0:31        'psout' ( temp structure{ temp 4-component vector of float Color})
0:22  Function Definition: main( ( temp void)
0:22    Function Parameters: 
0:?     Sequence
0:22      Sequence
0:22        move second child to first child ( temp 4-component vector of float)
0:?           'Color' (layout( location=0) out 4-component vector of float)
0:22          Color: direct index for structure ( temp 4-component vector of float)
0:22            Function Call: @main( ( temp structure{ temp 4-component vector of float Color})
0:22            Constant:
0:22              0 (const int)
0:?   Linker Objects
0:?     'g_tBuffF' (layout( rgba32f) uniform imageBuffer)
0:?     'g_tBuffI' (layout( rgba32i) uniform iimageBuffer)
0:?     'g_tBuffU' (layout( rgba32ui) uniform uimageBuffer)
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int c1,  uniform 2-component vector of int c2,  uniform 3-component vector of int c3,  uniform 4-component vector of int c4,  uniform int o1,  uniform 2-component vector of int o2,  uniform 3-component vector of int o3,  uniform 4-component vector of int o4})
0:?     'Color' (layout( location=0) out 4-component vector of float)

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

                              Capability Shader
                              Capability SampledBuffer
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 54
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_OUTPUT"
                              MemberName 8(PS_OUTPUT) 0  "Color"
                              Name 10  "@main("
                              Name 14  "g_tBuffF"
                              Name 20  "$Global"
                              MemberName 20($Global) 0  "c1"
                              MemberName 20($Global) 1  "c2"
                              MemberName 20($Global) 2  "c3"
                              MemberName 20($Global) 3  "c4"
                              MemberName 20($Global) 4  "o1"
                              MemberName 20($Global) 5  "o2"
                              MemberName 20($Global) 6  "o3"
                              MemberName 20($Global) 7  "o4"
                              Name 22  ""
                              Name 31  "g_tBuffU"
                              Name 39  "g_tBuffI"
                              Name 45  "psout"
                              Name 54  "Color"
                              Decorate 14(g_tBuffF) DescriptorSet 0
                              MemberDecorate 20($Global) 0 Offset 0
                              MemberDecorate 20($Global) 1 Offset 4
                              MemberDecorate 20($Global) 2 Offset 16
                              MemberDecorate 20($Global) 3 Offset 32
                              MemberDecorate 20($Global) 4 Offset 48
                              MemberDecorate 20($Global) 5 Offset 52
                              MemberDecorate 20($Global) 6 Offset 64
                              MemberDecorate 20($Global) 7 Offset 80
                              Decorate 20($Global) Block
                              Decorate 22 DescriptorSet 0
                              Decorate 31(g_tBuffU) DescriptorSet 0
                              Decorate 39(g_tBuffI) DescriptorSet 0
                              Decorate 54(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:             TypeImage 6(float) Buffer nonsampled format:Rgba32f
              13:             TypePointer UniformConstant 12
    14(g_tBuffF):     13(ptr) Variable UniformConstant
              16:             TypeInt 32 1
              17:             TypeVector 16(int) 2
              18:             TypeVector 16(int) 3
              19:             TypeVector 16(int) 4
     20($Global):             TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4)
              21:             TypePointer Uniform 20($Global)
              22:     21(ptr) Variable Uniform
              23:     16(int) Constant 0
              24:             TypePointer Uniform 16(int)
              28:             TypeInt 32 0
              29:             TypeImage 28(int) Buffer nonsampled format:Rgba32ui
              30:             TypePointer UniformConstant 29
    31(g_tBuffU):     30(ptr) Variable UniformConstant
              35:             TypeVector 28(int) 4
              37:             TypeImage 16(int) Buffer nonsampled format:Rgba32i
              38:             TypePointer UniformConstant 37
    39(g_tBuffI):     38(ptr) Variable UniformConstant
              44:             TypePointer Function 8(PS_OUTPUT)
              46:    6(float) Constant 1065353216
              47:    7(fvec4) ConstantComposite 46 46 46 46
              48:             TypePointer Function 7(fvec4)
              53:             TypePointer Output 7(fvec4)
       54(Color):     53(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              55:8(PS_OUTPUT) FunctionCall 10(@main()
              56:    7(fvec4) CompositeExtract 55 0
                              Store 54(Color) 56
                              Return
                              FunctionEnd
      10(@main():8(PS_OUTPUT) Function None 9
              11:             Label
       45(psout):     44(ptr) Variable Function
              15:          12 Load 14(g_tBuffF)
              25:     24(ptr) AccessChain 22 23
              26:     16(int) Load 25
              27:    7(fvec4) ImageRead 15 26
              32:          29 Load 31(g_tBuffU)
              33:     24(ptr) AccessChain 22 23
              34:     16(int) Load 33
              36:   35(ivec4) ImageRead 32 34
              40:          37 Load 39(g_tBuffI)
              41:     24(ptr) AccessChain 22 23
              42:     16(int) Load 41
              43:   19(ivec4) ImageRead 40 42
              49:     48(ptr) AccessChain 45(psout) 23
                              Store 49 47
              50:8(PS_OUTPUT) Load 45(psout)
                              ReturnValue 50
                              FunctionEnd
