hlsl.flattenSubset.frag
WARNING: AST will form illegal SPIR-V; need to transform to legalize
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:30  Function Definition: @main(vf4; ( temp 4-component vector of float)
0:30    Function Parameters: 
0:30      'vpos' ( in 4-component vector of float)
0:?     Sequence
0:33      move second child to first child ( temp sampler)
0:33        ss: direct index for structure ( temp sampler)
0:33          s0: direct index for structure ( temp structure{ temp int x,  temp int y,  temp sampler ss})
0:33            's1' ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:33            Constant:
0:33              2 (const int)
0:33          Constant:
0:33            2 (const int)
0:33        'samp' ( uniform sampler)
0:34      move second child to first child ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:34        resources: direct index for structure ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:34          's2' ( temp structure{ temp int a1,  temp int a2,  temp int a3,  temp int a4,  temp int a5,  temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a} resources})
0:34          Constant:
0:34            5 (const int)
0:34        's1' ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:35      Branch: Return with expression
0:35        texture ( temp 4-component vector of float)
0:35          Construct combined texture-sampler ( temp sampler2D)
0:35            'tex' ( uniform texture2D)
0:35            ss: direct index for structure ( temp sampler)
0:35              s0: direct index for structure ( temp structure{ temp int x,  temp int y,  temp sampler ss})
0:35                resources: direct index for structure ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:35                  's2' ( temp structure{ temp int a1,  temp int a2,  temp int a3,  temp int a4,  temp int a5,  temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a} resources})
0:35                  Constant:
0:35                    5 (const int)
0:35                Constant:
0:35                  2 (const int)
0:35              Constant:
0:35                2 (const int)
0:35          Constant:
0:35            0.500000
0:35            0.500000
0:30  Function Definition: main( ( temp void)
0:30    Function Parameters: 
0:?     Sequence
0:30      move second child to first child ( temp 4-component vector of float)
0:?         'vpos' ( temp 4-component vector of float)
0:?         'vpos' (layout( location=0) in 4-component vector of float)
0:30      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:30        Function Call: @main(vf4; ( temp 4-component vector of float)
0:?           'vpos' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'samp' ( uniform sampler)
0:?     'tex' ( uniform texture2D)
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'vpos' (layout( location=0) in 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:30  Function Definition: @main(vf4; ( temp 4-component vector of float)
0:30    Function Parameters: 
0:30      'vpos' ( in 4-component vector of float)
0:?     Sequence
0:33      move second child to first child ( temp sampler)
0:33        ss: direct index for structure ( temp sampler)
0:33          s0: direct index for structure ( temp structure{ temp int x,  temp int y,  temp sampler ss})
0:33            's1' ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:33            Constant:
0:33              2 (const int)
0:33          Constant:
0:33            2 (const int)
0:33        'samp' ( uniform sampler)
0:34      move second child to first child ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:34        resources: direct index for structure ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:34          's2' ( temp structure{ temp int a1,  temp int a2,  temp int a3,  temp int a4,  temp int a5,  temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a} resources})
0:34          Constant:
0:34            5 (const int)
0:34        's1' ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:35      Branch: Return with expression
0:35        texture ( temp 4-component vector of float)
0:35          Construct combined texture-sampler ( temp sampler2D)
0:35            'tex' ( uniform texture2D)
0:35            ss: direct index for structure ( temp sampler)
0:35              s0: direct index for structure ( temp structure{ temp int x,  temp int y,  temp sampler ss})
0:35                resources: direct index for structure ( temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a})
0:35                  's2' ( temp structure{ temp int a1,  temp int a2,  temp int a3,  temp int a4,  temp int a5,  temp structure{ temp float b,  temp sampler samplerState,  temp structure{ temp int x,  temp int y,  temp sampler ss} s0,  temp int a} resources})
0:35                  Constant:
0:35                    5 (const int)
0:35                Constant:
0:35                  2 (const int)
0:35              Constant:
0:35                2 (const int)
0:35          Constant:
0:35            0.500000
0:35            0.500000
0:30  Function Definition: main( ( temp void)
0:30    Function Parameters: 
0:?     Sequence
0:30      move second child to first child ( temp 4-component vector of float)
0:?         'vpos' ( temp 4-component vector of float)
0:?         'vpos' (layout( location=0) in 4-component vector of float)
0:30      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:30        Function Call: @main(vf4; ( temp 4-component vector of float)
0:?           'vpos' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'samp' ( uniform sampler)
0:?     'tex' ( uniform texture2D)
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'vpos' (layout( location=0) in 4-component vector of float)

// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 54

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 47 50
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(vf4;"
                              Name 10  "vpos"
                              Name 15  "S0"
                              MemberName 15(S0) 0  "x"
                              MemberName 15(S0) 1  "y"
                              MemberName 15(S0) 2  "ss"
                              Name 16  "S1"
                              MemberName 16(S1) 0  "b"
                              MemberName 16(S1) 1  "samplerState"
                              MemberName 16(S1) 2  "s0"
                              MemberName 16(S1) 3  "a"
                              Name 18  "s1"
                              Name 21  "samp"
                              Name 25  "S2"
                              MemberName 25(S2) 0  "a1"
                              MemberName 25(S2) 1  "a2"
                              MemberName 25(S2) 2  "a3"
                              MemberName 25(S2) 3  "a4"
                              MemberName 25(S2) 4  "a5"
                              MemberName 25(S2) 5  "resources"
                              Name 27  "s2"
                              Name 33  "tex"
                              Name 45  "vpos"
                              Name 47  "vpos"
                              Name 50  "@entryPointOutput"
                              Name 51  "param"
                              Decorate 21(samp) DescriptorSet 0
                              Decorate 21(samp) Binding 0
                              Decorate 33(tex) DescriptorSet 0
                              Decorate 33(tex) Binding 1
                              Decorate 47(vpos) Location 0
                              Decorate 50(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypeFunction 7(fvec4) 8(ptr)
              13:             TypeSampler
              14:             TypeInt 32 1
          15(S0):             TypeStruct 14(int) 14(int) 13
          16(S1):             TypeStruct 6(float) 13 15(S0) 14(int)
              17:             TypePointer Function 16(S1)
              19:     14(int) Constant 2
              20:             TypePointer UniformConstant 13
        21(samp):     20(ptr) Variable UniformConstant
              23:             TypePointer Function 13
          25(S2):             TypeStruct 14(int) 14(int) 14(int) 14(int) 14(int) 16(S1)
              26:             TypePointer Function 25(S2)
              28:     14(int) Constant 5
              31:             TypeImage 6(float) 2D sampled format:Unknown
              32:             TypePointer UniformConstant 31
         33(tex):     32(ptr) Variable UniformConstant
              37:             TypeSampledImage 31
              39:             TypeVector 6(float) 2
              40:    6(float) Constant 1056964608
              41:   39(fvec2) ConstantComposite 40 40
              46:             TypePointer Input 7(fvec4)
        47(vpos):     46(ptr) Variable Input
              49:             TypePointer Output 7(fvec4)
50(@entryPointOutput):     49(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
        45(vpos):      8(ptr) Variable Function
       51(param):      8(ptr) Variable Function
              48:    7(fvec4) Load 47(vpos)
                              Store 45(vpos) 48
              52:    7(fvec4) Load 45(vpos)
                              Store 51(param) 52
              53:    7(fvec4) FunctionCall 11(@main(vf4;) 51(param)
                              Store 50(@entryPointOutput) 53
                              Return
                              FunctionEnd
  11(@main(vf4;):    7(fvec4) Function None 9
        10(vpos):      8(ptr) FunctionParameter
              12:             Label
          18(s1):     17(ptr) Variable Function
          27(s2):     26(ptr) Variable Function
              22:          13 Load 21(samp)
              24:     23(ptr) AccessChain 18(s1) 19 19
                              Store 24 22
              29:      16(S1) Load 18(s1)
              30:     17(ptr) AccessChain 27(s2) 28
                              Store 30 29
              34:          31 Load 33(tex)
              35:     23(ptr) AccessChain 27(s2) 28 19 19
              36:          13 Load 35
              38:          37 SampledImage 34 36
              42:    7(fvec4) ImageSampleImplicitLod 38 41
                              ReturnValue 42
                              FunctionEnd
