hlsl.structbuffer.rw.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12  Function Definition: @main(u1; ( temp 4-component vector of float)
0:12    Function Parameters: 
0:12      'pos' ( in uint)
0:?     Sequence
0:13      move second child to first child ( temp float)
0:13        indirect index (layout( row_major std430) buffer float)
0:13          @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float)
0:13            'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:13            Constant:
0:13              0 (const uint)
0:13          add ( temp uint)
0:13            'pos' ( in uint)
0:13            Constant:
0:13              1 (const uint)
0:13        Constant:
0:13          42.000000
0:17      Sequence
0:17        move second child to first child ( temp uint)
0:17          'size' ( temp uint)
0:17          array length ( temp uint)
0:17            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test})
0:17              'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test} @data})
0:17              Constant:
0:17                0 (const uint)
0:17        move second child to first child ( temp uint)
0:17          'stride' ( temp uint)
0:17          Constant:
0:17            16 (const uint)
0:19      Test condition and select ( temp void)
0:19        Condition
0:19        test: direct index for structure ( temp bool)
0:19          indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test})
0:19            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test})
0:19              'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test} @data})
0:19              Constant:
0:19                0 (const uint)
0:19            'pos' ( in uint)
0:19          Constant:
0:19            1 (const int)
0:19        true case
0:20        Branch: Return with expression
0:?           Construct vec4 ( temp 4-component vector of float)
0:20            add ( temp 3-component vector of float)
0:20              color: direct index for structure ( temp 3-component vector of float)
0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test})
0:20                  @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test})
0:20                    'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test} @data})
0:20                    Constant:
0:20                      0 (const uint)
0:20                  'pos' ( in uint)
0:20                Constant:
0:20                  0 (const int)
0:20              indirect index (layout( row_major std430) buffer float)
0:20                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float)
0:20                  'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:20                  Constant:
0:20                    0 (const uint)
0:20                'pos' ( in uint)
0:20            Constant:
0:20              0.000000
0:19        false case
0:22        Branch: Return with expression
0:22          Construct vec4 ( temp 4-component vector of float)
0:22            Convert uint to float ( temp float)
0:22              add ( temp uint)
0:22                'size' ( temp uint)
0:22                'stride' ( temp uint)
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      move second child to first child ( temp uint)
0:?         'pos' ( temp uint)
0:?         'pos' (layout( location=0) flat in uint)
0:12      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12        Function Call: @main(u1; ( temp 4-component vector of float)
0:?           'pos' ( temp uint)
0:?   Linker Objects
0:?     'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test} @data})
0:?     'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'pos' (layout( location=0) flat in uint)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12  Function Definition: @main(u1; ( temp 4-component vector of float)
0:12    Function Parameters: 
0:12      'pos' ( in uint)
0:?     Sequence
0:13      move second child to first child ( temp float)
0:13        indirect index (layout( row_major std430) buffer float)
0:13          @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float)
0:13            'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:13            Constant:
0:13              0 (const uint)
0:13          add ( temp uint)
0:13            'pos' ( in uint)
0:13            Constant:
0:13              1 (const uint)
0:13        Constant:
0:13          42.000000
0:17      Sequence
0:17        move second child to first child ( temp uint)
0:17          'size' ( temp uint)
0:17          array length ( temp uint)
0:17            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test})
0:17              'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test} @data})
0:17              Constant:
0:17                0 (const uint)
0:17        move second child to first child ( temp uint)
0:17          'stride' ( temp uint)
0:17          Constant:
0:17            16 (const uint)
0:19      Test condition and select ( temp void)
0:19        Condition
0:19        test: direct index for structure ( temp bool)
0:19          indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test})
0:19            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test})
0:19              'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test} @data})
0:19              Constant:
0:19                0 (const uint)
0:19            'pos' ( in uint)
0:19          Constant:
0:19            1 (const int)
0:19        true case
0:20        Branch: Return with expression
0:?           Construct vec4 ( temp 4-component vector of float)
0:20            add ( temp 3-component vector of float)
0:20              color: direct index for structure ( temp 3-component vector of float)
0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test})
0:20                  @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test})
0:20                    'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test} @data})
0:20                    Constant:
0:20                      0 (const uint)
0:20                  'pos' ( in uint)
0:20                Constant:
0:20                  0 (const int)
0:20              indirect index (layout( row_major std430) buffer float)
0:20                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float)
0:20                  'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:20                  Constant:
0:20                    0 (const uint)
0:20                'pos' ( in uint)
0:20            Constant:
0:20              0.000000
0:19        false case
0:22        Branch: Return with expression
0:22          Construct vec4 ( temp 4-component vector of float)
0:22            Convert uint to float ( temp float)
0:22              add ( temp uint)
0:22                'size' ( temp uint)
0:22                'stride' ( temp uint)
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      move second child to first child ( temp uint)
0:?         'pos' ( temp uint)
0:?         'pos' (layout( location=0) flat in uint)
0:12      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12        Function Call: @main(u1; ( temp 4-component vector of float)
0:?           'pos' ( temp uint)
0:?   Linker Objects
0:?     'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test} @data})
0:?     'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'pos' (layout( location=0) flat in uint)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 71 74
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 12  "@main(u1;"
                              Name 11  "pos"
                              Name 15  "sbuf2"
                              MemberName 15(sbuf2) 0  "@data"
                              Name 17  "sbuf2"
                              Name 26  "size"
                              Name 28  "sb_t"
                              MemberName 28(sb_t) 0  "color"
                              MemberName 28(sb_t) 1  "test"
                              Name 30  "sbuf"
                              MemberName 30(sbuf) 0  "@data"
                              Name 32  "sbuf"
                              Name 34  "stride"
                              Name 69  "pos"
                              Name 71  "pos"
                              Name 74  "@entryPointOutput"
                              Name 75  "param"
                              Decorate 14 ArrayStride 4
                              MemberDecorate 15(sbuf2) 0 Offset 0
                              Decorate 15(sbuf2) BufferBlock
                              Decorate 17(sbuf2) DescriptorSet 0
                              MemberDecorate 28(sb_t) 0 Offset 0
                              MemberDecorate 28(sb_t) 1 Offset 12
                              Decorate 29 ArrayStride 16
                              MemberDecorate 30(sbuf) 0 Offset 0
                              Decorate 30(sbuf) BufferBlock
                              Decorate 32(sbuf) DescriptorSet 0
                              Decorate 71(pos) Flat
                              Decorate 71(pos) Location 0
                              Decorate 74(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               8:             TypeFloat 32
               9:             TypeVector 8(float) 4
              10:             TypeFunction 9(fvec4) 7(ptr)
              14:             TypeRuntimeArray 8(float)
       15(sbuf2):             TypeStruct 14
              16:             TypePointer Uniform 15(sbuf2)
       17(sbuf2):     16(ptr) Variable Uniform
              18:             TypeInt 32 1
              19:     18(int) Constant 0
              21:      6(int) Constant 1
              23:    8(float) Constant 1109917696
              24:             TypePointer Uniform 8(float)
              27:             TypeVector 8(float) 3
        28(sb_t):             TypeStruct 27(fvec3) 6(int)
              29:             TypeRuntimeArray 28(sb_t)
        30(sbuf):             TypeStruct 29
              31:             TypePointer Uniform 30(sbuf)
        32(sbuf):     31(ptr) Variable Uniform
              35:      6(int) Constant 16
              37:     18(int) Constant 1
              38:             TypePointer Uniform 6(int)
              41:             TypeBool
              42:      6(int) Constant 0
              47:             TypePointer Uniform 27(fvec3)
              55:    8(float) Constant 0
              70:             TypePointer Input 6(int)
         71(pos):     70(ptr) Variable Input
              73:             TypePointer Output 9(fvec4)
74(@entryPointOutput):     73(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
         69(pos):      7(ptr) Variable Function
       75(param):      7(ptr) Variable Function
              72:      6(int) Load 71(pos)
                              Store 69(pos) 72
              76:      6(int) Load 69(pos)
                              Store 75(param) 76
              77:    9(fvec4) FunctionCall 12(@main(u1;) 75(param)
                              Store 74(@entryPointOutput) 77
                              Return
                              FunctionEnd
   12(@main(u1;):    9(fvec4) Function None 10
         11(pos):      7(ptr) FunctionParameter
              13:             Label
        26(size):      7(ptr) Variable Function
      34(stride):      7(ptr) Variable Function
              20:      6(int) Load 11(pos)
              22:      6(int) IAdd 20 21
              25:     24(ptr) AccessChain 17(sbuf2) 19 22
                              Store 25 23
              33:      6(int) ArrayLength 32(sbuf) 0
                              Store 26(size) 33
                              Store 34(stride) 35
              36:      6(int) Load 11(pos)
              39:     38(ptr) AccessChain 32(sbuf) 19 36 37
              40:      6(int) Load 39
              43:    41(bool) INotEqual 40 42
                              SelectionMerge 45 None
                              BranchConditional 43 44 61
              44:               Label
              46:      6(int)   Load 11(pos)
              48:     47(ptr)   AccessChain 32(sbuf) 19 46 19
              49:   27(fvec3)   Load 48
              50:      6(int)   Load 11(pos)
              51:     24(ptr)   AccessChain 17(sbuf2) 19 50
              52:    8(float)   Load 51
              53:   27(fvec3)   CompositeConstruct 52 52 52
              54:   27(fvec3)   FAdd 49 53
              56:    8(float)   CompositeExtract 54 0
              57:    8(float)   CompositeExtract 54 1
              58:    8(float)   CompositeExtract 54 2
              59:    9(fvec4)   CompositeConstruct 56 57 58 55
                                ReturnValue 59
              61:               Label
              62:      6(int)   Load 26(size)
              63:      6(int)   Load 34(stride)
              64:      6(int)   IAdd 62 63
              65:    8(float)   ConvertUToF 64
              66:    9(fvec4)   CompositeConstruct 65 65 65 65
                                ReturnValue 66
              45:             Label
              68:    9(fvec4) Undef
                              ReturnValue 68
                              FunctionEnd
