hlsl.structarray.flatten.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:23  Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void)
0:23    Function Parameters: 
0:23      'ps_output' ( out structure{ temp 4-component vector of float color})
0:?     Sequence
0:24      move second child to first child ( temp 4-component vector of float)
0:24        color: direct index for structure ( temp 4-component vector of float)
0:24          'ps_output' ( out structure{ temp 4-component vector of float color})
0:24          Constant:
0:24            0 (const int)
0:26        add ( temp 4-component vector of float)
0:25          add ( temp 4-component vector of float)
0:25            texture ( temp 4-component vector of float)
0:25              Construct combined texture-sampler ( temp sampler1D)
0:?                 'g_texdata.tex' ( uniform texture1D)
0:?                 'g_texdata.samp' ( uniform sampler)
0:25              Constant:
0:25                0.500000
0:26            texture ( temp 4-component vector of float)
0:26              Construct combined texture-sampler ( temp sampler1D)
0:?                 'g_texdata_array[1].tex' ( uniform texture1D)
0:?                 'g_texdata_array[1].samp' ( uniform sampler)
0:26              Constant:
0:26                0.400000
0:27          texture ( temp 4-component vector of float)
0:27            Construct combined texture-sampler ( temp sampler1D)
0:27              direct index ( temp texture1D)
0:?                 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
0:27                Constant:
0:27                  0 (const int)
0:27              direct index ( temp sampler)
0:?                 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
0:27                Constant:
0:27                  0 (const int)
0:27            Constant:
0:27              0.300000
0:23  Function Definition: main( ( temp void)
0:23    Function Parameters: 
0:?     Sequence
0:23      Function Call: @main(struct-PS_OUTPUT-vf41; ( temp void)
0:?         'ps_output' ( temp structure{ temp 4-component vector of float color})
0:23      Sequence
0:23        move second child to first child ( temp 4-component vector of float)
0:?           'ps_output.color' (layout( location=0) out 4-component vector of float)
0:23          color: direct index for structure ( temp 4-component vector of float)
0:?             'ps_output' ( temp structure{ temp 4-component vector of float color})
0:23            Constant:
0:23              0 (const int)
0:?   Linker Objects
0:?     'g_samp' ( uniform sampler)
0:?     'g_tex' ( uniform texture1D)
0:?     'g_texdata.samp' ( uniform sampler)
0:?     'g_texdata.tex' ( uniform texture1D)
0:?     'g_texdata.nonopaque_thing' ( uniform int)
0:?     'g_texdata_array[0].samp' ( uniform sampler)
0:?     'g_texdata_array[0].tex' ( uniform texture1D)
0:?     'g_texdata_array[0].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array[1].samp' ( uniform sampler)
0:?     'g_texdata_array[1].tex' ( uniform texture1D)
0:?     'g_texdata_array[1].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array[2].samp' ( uniform sampler)
0:?     'g_texdata_array[2].tex' ( uniform texture1D)
0:?     'g_texdata_array[2].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array2[0].samp' ( uniform 2-element array of sampler)
0:?     'g_texdata_array2[0].tex' ( uniform 2-element array of texture1D)
0:?     'g_texdata_array2[0].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
0:?     'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
0:?     'g_texdata_array2[1].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array2[2].samp' ( uniform 2-element array of sampler)
0:?     'g_texdata_array2[2].tex' ( uniform 2-element array of texture1D)
0:?     'g_texdata_array2[2].nonopaque_thing' ( uniform int)
0:?     'ps_output.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:23  Function Definition: @main(struct-PS_OUTPUT-vf41; ( temp void)
0:23    Function Parameters: 
0:23      'ps_output' ( out structure{ temp 4-component vector of float color})
0:?     Sequence
0:24      move second child to first child ( temp 4-component vector of float)
0:24        color: direct index for structure ( temp 4-component vector of float)
0:24          'ps_output' ( out structure{ temp 4-component vector of float color})
0:24          Constant:
0:24            0 (const int)
0:26        add ( temp 4-component vector of float)
0:25          add ( temp 4-component vector of float)
0:25            texture ( temp 4-component vector of float)
0:25              Construct combined texture-sampler ( temp sampler1D)
0:?                 'g_texdata.tex' ( uniform texture1D)
0:?                 'g_texdata.samp' ( uniform sampler)
0:25              Constant:
0:25                0.500000
0:26            texture ( temp 4-component vector of float)
0:26              Construct combined texture-sampler ( temp sampler1D)
0:?                 'g_texdata_array[1].tex' ( uniform texture1D)
0:?                 'g_texdata_array[1].samp' ( uniform sampler)
0:26              Constant:
0:26                0.400000
0:27          texture ( temp 4-component vector of float)
0:27            Construct combined texture-sampler ( temp sampler1D)
0:27              direct index ( temp texture1D)
0:?                 'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
0:27                Constant:
0:27                  0 (const int)
0:27              direct index ( temp sampler)
0:?                 'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
0:27                Constant:
0:27                  0 (const int)
0:27            Constant:
0:27              0.300000
0:23  Function Definition: main( ( temp void)
0:23    Function Parameters: 
0:?     Sequence
0:23      Function Call: @main(struct-PS_OUTPUT-vf41; ( temp void)
0:?         'ps_output' ( temp structure{ temp 4-component vector of float color})
0:23      Sequence
0:23        move second child to first child ( temp 4-component vector of float)
0:?           'ps_output.color' (layout( location=0) out 4-component vector of float)
0:23          color: direct index for structure ( temp 4-component vector of float)
0:?             'ps_output' ( temp structure{ temp 4-component vector of float color})
0:23            Constant:
0:23              0 (const int)
0:?   Linker Objects
0:?     'g_samp' ( uniform sampler)
0:?     'g_tex' ( uniform texture1D)
0:?     'g_texdata.samp' ( uniform sampler)
0:?     'g_texdata.tex' ( uniform texture1D)
0:?     'g_texdata.nonopaque_thing' ( uniform int)
0:?     'g_texdata_array[0].samp' ( uniform sampler)
0:?     'g_texdata_array[0].tex' ( uniform texture1D)
0:?     'g_texdata_array[0].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array[1].samp' ( uniform sampler)
0:?     'g_texdata_array[1].tex' ( uniform texture1D)
0:?     'g_texdata_array[1].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array[2].samp' ( uniform sampler)
0:?     'g_texdata_array[2].tex' ( uniform texture1D)
0:?     'g_texdata_array[2].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array2[0].samp' ( uniform 2-element array of sampler)
0:?     'g_texdata_array2[0].tex' ( uniform 2-element array of texture1D)
0:?     'g_texdata_array2[0].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array2[1].samp' ( uniform 2-element array of sampler)
0:?     'g_texdata_array2[1].tex' ( uniform 2-element array of texture1D)
0:?     'g_texdata_array2[1].nonopaque_thing' ( uniform int)
0:?     'g_texdata_array2[2].samp' ( uniform 2-element array of sampler)
0:?     'g_texdata_array2[2].tex' ( uniform 2-element array of texture1D)
0:?     'g_texdata_array2[2].nonopaque_thing' ( uniform int)
0:?     'ps_output.color' (layout( location=0) out 4-component vector of float)

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

                              Capability Shader
                              Capability Sampled1D
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 59
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_OUTPUT"
                              MemberName 8(PS_OUTPUT) 0  "color"
                              Name 12  "@main(struct-PS_OUTPUT-vf41;"
                              Name 11  "ps_output"
                              Name 18  "g_texdata.tex"
                              Name 22  "g_texdata.samp"
                              Name 28  "g_texdata_array[1].tex"
                              Name 30  "g_texdata_array[1].samp"
                              Name 40  "g_texdata_array2[1].tex"
                              Name 45  "g_texdata_array2[1].samp"
                              Name 54  "ps_output"
                              Name 55  "param"
                              Name 59  "ps_output.color"
                              Name 62  "g_samp"
                              Name 63  "g_tex"
                              Name 65  "g_texdata.nonopaque_thing"
                              Name 66  "g_texdata_array[0].samp"
                              Name 67  "g_texdata_array[0].tex"
                              Name 68  "g_texdata_array[0].nonopaque_thing"
                              Name 69  "g_texdata_array[1].nonopaque_thing"
                              Name 70  "g_texdata_array[2].samp"
                              Name 71  "g_texdata_array[2].tex"
                              Name 72  "g_texdata_array[2].nonopaque_thing"
                              Name 73  "g_texdata_array2[0].samp"
                              Name 74  "g_texdata_array2[0].tex"
                              Name 75  "g_texdata_array2[0].nonopaque_thing"
                              Name 76  "g_texdata_array2[1].nonopaque_thing"
                              Name 77  "g_texdata_array2[2].samp"
                              Name 78  "g_texdata_array2[2].tex"
                              Name 79  "g_texdata_array2[2].nonopaque_thing"
                              Decorate 18(g_texdata.tex) DescriptorSet 0
                              Decorate 22(g_texdata.samp) DescriptorSet 0
                              Decorate 28(g_texdata_array[1].tex) DescriptorSet 0
                              Decorate 30(g_texdata_array[1].samp) DescriptorSet 0
                              Decorate 40(g_texdata_array2[1].tex) DescriptorSet 0
                              Decorate 45(g_texdata_array2[1].samp) DescriptorSet 0
                              Decorate 59(ps_output.color) Location 0
                              Decorate 62(g_samp) DescriptorSet 0
                              Decorate 63(g_tex) DescriptorSet 0
                              Decorate 66(g_texdata_array[0].samp) DescriptorSet 0
                              Decorate 67(g_texdata_array[0].tex) DescriptorSet 0
                              Decorate 70(g_texdata_array[2].samp) DescriptorSet 0
                              Decorate 71(g_texdata_array[2].tex) DescriptorSet 0
                              Decorate 73(g_texdata_array2[0].samp) DescriptorSet 0
                              Decorate 74(g_texdata_array2[0].tex) DescriptorSet 0
                              Decorate 77(g_texdata_array2[2].samp) DescriptorSet 0
                              Decorate 78(g_texdata_array2[2].tex) DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
    8(PS_OUTPUT):             TypeStruct 7(fvec4)
               9:             TypePointer Function 8(PS_OUTPUT)
              10:             TypeFunction 2 9(ptr)
              14:             TypeInt 32 1
              15:     14(int) Constant 0
              16:             TypeImage 6(float) 1D sampled format:Unknown
              17:             TypePointer UniformConstant 16
18(g_texdata.tex):     17(ptr) Variable UniformConstant
              20:             TypeSampler
              21:             TypePointer UniformConstant 20
22(g_texdata.samp):     21(ptr) Variable UniformConstant
              24:             TypeSampledImage 16
              26:    6(float) Constant 1056964608
28(g_texdata_array[1].tex):     17(ptr) Variable UniformConstant
30(g_texdata_array[1].samp):     21(ptr) Variable UniformConstant
              33:    6(float) Constant 1053609165
              36:             TypeInt 32 0
              37:     36(int) Constant 2
              38:             TypeArray 16 37
              39:             TypePointer UniformConstant 38
40(g_texdata_array2[1].tex):     39(ptr) Variable UniformConstant
              43:             TypeArray 20 37
              44:             TypePointer UniformConstant 43
45(g_texdata_array2[1].samp):     44(ptr) Variable UniformConstant
              49:    6(float) Constant 1050253722
              52:             TypePointer Function 7(fvec4)
              58:             TypePointer Output 7(fvec4)
59(ps_output.color):     58(ptr) Variable Output
      62(g_samp):     21(ptr) Variable UniformConstant
       63(g_tex):     17(ptr) Variable UniformConstant
              64:             TypePointer UniformConstant 14(int)
65(g_texdata.nonopaque_thing):     64(ptr) Variable UniformConstant
66(g_texdata_array[0].samp):     21(ptr) Variable UniformConstant
67(g_texdata_array[0].tex):     17(ptr) Variable UniformConstant
68(g_texdata_array[0].nonopaque_thing):     64(ptr) Variable UniformConstant
69(g_texdata_array[1].nonopaque_thing):     64(ptr) Variable UniformConstant
70(g_texdata_array[2].samp):     21(ptr) Variable UniformConstant
71(g_texdata_array[2].tex):     17(ptr) Variable UniformConstant
72(g_texdata_array[2].nonopaque_thing):     64(ptr) Variable UniformConstant
73(g_texdata_array2[0].samp):     44(ptr) Variable UniformConstant
74(g_texdata_array2[0].tex):     39(ptr) Variable UniformConstant
75(g_texdata_array2[0].nonopaque_thing):     64(ptr) Variable UniformConstant
76(g_texdata_array2[1].nonopaque_thing):     64(ptr) Variable UniformConstant
77(g_texdata_array2[2].samp):     44(ptr) Variable UniformConstant
78(g_texdata_array2[2].tex):     39(ptr) Variable UniformConstant
79(g_texdata_array2[2].nonopaque_thing):     64(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
   54(ps_output):      9(ptr) Variable Function
       55(param):      9(ptr) Variable Function
              56:           2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 55(param)
              57:8(PS_OUTPUT) Load 55(param)
                              Store 54(ps_output) 57
              60:     52(ptr) AccessChain 54(ps_output) 15
              61:    7(fvec4) Load 60
                              Store 59(ps_output.color) 61
                              Return
                              FunctionEnd
12(@main(struct-PS_OUTPUT-vf41;):           2 Function None 10
   11(ps_output):      9(ptr) FunctionParameter
              13:             Label
              19:          16 Load 18(g_texdata.tex)
              23:          20 Load 22(g_texdata.samp)
              25:          24 SampledImage 19 23
              27:    7(fvec4) ImageSampleImplicitLod 25 26
              29:          16 Load 28(g_texdata_array[1].tex)
              31:          20 Load 30(g_texdata_array[1].samp)
              32:          24 SampledImage 29 31
              34:    7(fvec4) ImageSampleImplicitLod 32 33
              35:    7(fvec4) FAdd 27 34
              41:     17(ptr) AccessChain 40(g_texdata_array2[1].tex) 15
              42:          16 Load 41
              46:     21(ptr) AccessChain 45(g_texdata_array2[1].samp) 15
              47:          20 Load 46
              48:          24 SampledImage 42 47
              50:    7(fvec4) ImageSampleImplicitLod 48 49
              51:    7(fvec4) FAdd 35 50
              53:     52(ptr) AccessChain 11(ps_output) 15
                              Store 53 51
                              Return
                              FunctionEnd
