hlsl.load.rwbuffer.dx10.frag
Shader version: 450
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 (layout(offset=0 ) uniform int)
0:25          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) 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 (layout(offset=0 ) uniform int)
0:26          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) 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 (layout(offset=0 ) uniform int)
0:27          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) 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      Sequence
0:31        Sequence
0:31          move second child to first child (temp 4-component vector of float)
0:?             'Color' (layout(location=0 ) out 4-component vector of float)
0:31            Color: direct index for structure (temp 4-component vector of float)
0:31              'psout' (temp structure{temp 4-component vector of float Color})
0:31              Constant:
0:31                0 (const int)
0:31        Branch: Return
0:?   Linker Objects
0:?     'Color' (layout(location=0 ) out 4-component vector of float)
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{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})


Linked fragment stage:


Shader version: 450
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 (layout(offset=0 ) uniform int)
0:25          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) 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 (layout(offset=0 ) uniform int)
0:26          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) 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 (layout(offset=0 ) uniform int)
0:27          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) 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      Sequence
0:31        Sequence
0:31          move second child to first child (temp 4-component vector of float)
0:?             'Color' (layout(location=0 ) out 4-component vector of float)
0:31            Color: direct index for structure (temp 4-component vector of float)
0:31              'psout' (temp structure{temp 4-component vector of float Color})
0:31              Constant:
0:31                0 (const int)
0:31        Branch: Return
0:?   Linker Objects
0:?     'Color' (layout(location=0 ) out 4-component vector of float)
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{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})

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

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