hlsl.partialFlattenLocal.vert
WARNING: AST will form illegal SPIR-V; need to transform to legalize
Shader version: 500
0:? Sequence
0:12  Function Definition: @main(vf4; ( temp 4-component vector of float)
0:12    Function Parameters: 
0:12      'pos' ( in 4-component vector of float)
0:?     Sequence
0:14      move second child to first child ( temp texture2D)
0:14        tex: direct index for structure ( temp texture2D)
0:14          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:14          Constant:
0:14            0 (const int)
0:14        'tex' ( uniform texture2D)
0:15      move second child to first child ( temp 3-component vector of float)
0:15        direct index ( temp 3-component vector of float)
0:15          pos: direct index for structure ( temp 3-element array of 3-component vector of float)
0:15            'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:15            Constant:
0:15              1 (const int)
0:15          Constant:
0:15            0 (const int)
0:15        Constant:
0:15          0.000000
0:15          0.000000
0:15          0.000000
0:16      move second child to first child ( temp 2-component vector of float)
0:16        direct index ( temp 2-component vector of float)
0:16          uv: direct index for structure ( temp 2-element array of 2-component vector of float)
0:16            'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:16            Constant:
0:16              2 (const int)
0:16          Constant:
0:16            0 (const int)
0:16        Constant:
0:16          0.000000
0:16          1.000000
0:17      move second child to first child ( temp float)
0:17        x: direct index for structure ( temp float)
0:17          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:17          Constant:
0:17            3 (const int)
0:17        Constant:
0:17          1.000000
0:18      move second child to first child ( temp int)
0:18        n: direct index for structure ( temp int)
0:18          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:18          Constant:
0:18            4 (const int)
0:18        Constant:
0:18          3 (const int)
0:20      Sequence
0:20        move second child to first child ( temp int)
0:20          'i' ( temp int)
0:20          Constant:
0:20            0 (const int)
0:20        Loop with condition tested first
0:20          Loop Condition
0:20          Compare Less Than ( temp bool)
0:20            'i' ( temp int)
0:20            Constant:
0:20              1 (const int)
0:20          Loop Body
0:?           Sequence
0:21            add second child into first child ( temp 2-component vector of float)
0:21              vector swizzle ( temp 2-component vector of float)
0:21                indirect index ( temp 3-component vector of float)
0:21                  pos: direct index for structure ( temp 3-element array of 3-component vector of float)
0:21                    'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:21                    Constant:
0:21                      1 (const int)
0:21                  'i' ( temp int)
0:21                Sequence
0:21                  Constant:
0:21                    0 (const int)
0:21                  Constant:
0:21                    1 (const int)
0:21              indirect index ( temp 2-component vector of float)
0:21                uv: direct index for structure ( temp 2-element array of 2-component vector of float)
0:21                  'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:21                  Constant:
0:21                    2 (const int)
0:21                'i' ( temp int)
0:20          Loop Terminal Expression
0:20          Pre-Increment ( temp int)
0:20            'i' ( temp int)
0:24      Sequence
0:24        move second child to first child ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:24          'packed2' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:24          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:26      Branch: Return with expression
0:26        add ( temp 4-component vector of float)
0:26          'pos' ( in 4-component vector of float)
0:26          Construct vec4 ( temp 4-component vector of float)
0:26            direct index ( temp 3-component vector of float)
0:26              pos: direct index for structure ( temp 3-element array of 3-component vector of float)
0:26                'packed2' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:26                Constant:
0:26                  1 (const int)
0:26              Constant:
0:26                0 (const int)
0:26            Constant:
0:26              0.000000
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      move second child to first child ( temp 4-component vector of float)
0:?         'pos' ( temp 4-component vector of float)
0:?         'pos' (layout( location=0) in 4-component vector of float)
0:12      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' ( out 4-component vector of float Position)
0:12        Function Call: @main(vf4; ( temp 4-component vector of float)
0:?           'pos' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'tex' ( uniform texture2D)
0:?     '@entryPointOutput' ( out 4-component vector of float Position)
0:?     'pos' (layout( location=0) in 4-component vector of float)


Linked vertex stage:


Shader version: 500
0:? Sequence
0:12  Function Definition: @main(vf4; ( temp 4-component vector of float)
0:12    Function Parameters: 
0:12      'pos' ( in 4-component vector of float)
0:?     Sequence
0:14      move second child to first child ( temp texture2D)
0:14        tex: direct index for structure ( temp texture2D)
0:14          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:14          Constant:
0:14            0 (const int)
0:14        'tex' ( uniform texture2D)
0:15      move second child to first child ( temp 3-component vector of float)
0:15        direct index ( temp 3-component vector of float)
0:15          pos: direct index for structure ( temp 3-element array of 3-component vector of float)
0:15            'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:15            Constant:
0:15              1 (const int)
0:15          Constant:
0:15            0 (const int)
0:15        Constant:
0:15          0.000000
0:15          0.000000
0:15          0.000000
0:16      move second child to first child ( temp 2-component vector of float)
0:16        direct index ( temp 2-component vector of float)
0:16          uv: direct index for structure ( temp 2-element array of 2-component vector of float)
0:16            'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:16            Constant:
0:16              2 (const int)
0:16          Constant:
0:16            0 (const int)
0:16        Constant:
0:16          0.000000
0:16          1.000000
0:17      move second child to first child ( temp float)
0:17        x: direct index for structure ( temp float)
0:17          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:17          Constant:
0:17            3 (const int)
0:17        Constant:
0:17          1.000000
0:18      move second child to first child ( temp int)
0:18        n: direct index for structure ( temp int)
0:18          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:18          Constant:
0:18            4 (const int)
0:18        Constant:
0:18          3 (const int)
0:20      Sequence
0:20        move second child to first child ( temp int)
0:20          'i' ( temp int)
0:20          Constant:
0:20            0 (const int)
0:20        Loop with condition tested first
0:20          Loop Condition
0:20          Compare Less Than ( temp bool)
0:20            'i' ( temp int)
0:20            Constant:
0:20              1 (const int)
0:20          Loop Body
0:?           Sequence
0:21            add second child into first child ( temp 2-component vector of float)
0:21              vector swizzle ( temp 2-component vector of float)
0:21                indirect index ( temp 3-component vector of float)
0:21                  pos: direct index for structure ( temp 3-element array of 3-component vector of float)
0:21                    'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:21                    Constant:
0:21                      1 (const int)
0:21                  'i' ( temp int)
0:21                Sequence
0:21                  Constant:
0:21                    0 (const int)
0:21                  Constant:
0:21                    1 (const int)
0:21              indirect index ( temp 2-component vector of float)
0:21                uv: direct index for structure ( temp 2-element array of 2-component vector of float)
0:21                  'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:21                  Constant:
0:21                    2 (const int)
0:21                'i' ( temp int)
0:20          Loop Terminal Expression
0:20          Pre-Increment ( temp int)
0:20            'i' ( temp int)
0:24      Sequence
0:24        move second child to first child ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:24          'packed2' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:24          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:26      Branch: Return with expression
0:26        add ( temp 4-component vector of float)
0:26          'pos' ( in 4-component vector of float)
0:26          Construct vec4 ( temp 4-component vector of float)
0:26            direct index ( temp 3-component vector of float)
0:26              pos: direct index for structure ( temp 3-element array of 3-component vector of float)
0:26                'packed2' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
0:26                Constant:
0:26                  1 (const int)
0:26              Constant:
0:26                0 (const int)
0:26            Constant:
0:26              0.000000
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      move second child to first child ( temp 4-component vector of float)
0:?         'pos' ( temp 4-component vector of float)
0:?         'pos' (layout( location=0) in 4-component vector of float)
0:12      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' ( out 4-component vector of float Position)
0:12        Function Call: @main(vf4; ( temp 4-component vector of float)
0:?           'pos' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'tex' ( uniform texture2D)
0:?     '@entryPointOutput' ( out 4-component vector of float Position)
0:?     'pos' (layout( location=0) in 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 86 89
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(vf4;"
                              Name 10  "pos"
                              Name 22  "Packed"
                              MemberName 22(Packed) 0  "tex"
                              MemberName 22(Packed) 1  "pos"
                              MemberName 22(Packed) 2  "uv"
                              MemberName 22(Packed) 3  "x"
                              MemberName 22(Packed) 4  "n"
                              Name 24  "packed"
                              Name 27  "tex"
                              Name 47  "i"
                              Name 72  "packed2"
                              Name 84  "pos"
                              Name 86  "pos"
                              Name 89  "@entryPointOutput"
                              Name 90  "param"
                              Decorate 27(tex) DescriptorSet 0
                              Decorate 27(tex) Binding 0
                              Decorate 86(pos) Location 0
                              Decorate 89(@entryPointOutput) BuiltIn Position
               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:             TypeImage 6(float) 2D sampled format:Unknown
              14:             TypeVector 6(float) 3
              15:             TypeInt 32 0
              16:     15(int) Constant 3
              17:             TypeArray 14(fvec3) 16
              18:             TypeVector 6(float) 2
              19:     15(int) Constant 2
              20:             TypeArray 18(fvec2) 19
              21:             TypeInt 32 1
      22(Packed):             TypeStruct 13 17 20 6(float) 21(int)
              23:             TypePointer Function 22(Packed)
              25:     21(int) Constant 0
              26:             TypePointer UniformConstant 13
         27(tex):     26(ptr) Variable UniformConstant
              29:             TypePointer Function 13
              31:     21(int) Constant 1
              32:    6(float) Constant 0
              33:   14(fvec3) ConstantComposite 32 32 32
              34:             TypePointer Function 14(fvec3)
              36:     21(int) Constant 2
              37:    6(float) Constant 1065353216
              38:   18(fvec2) ConstantComposite 32 37
              39:             TypePointer Function 18(fvec2)
              41:     21(int) Constant 3
              42:             TypePointer Function 6(float)
              44:     21(int) Constant 4
              45:             TypePointer Function 21(int)
              54:             TypeBool
              64:     15(int) Constant 0
              67:     15(int) Constant 1
              85:             TypePointer Input 7(fvec4)
         86(pos):     85(ptr) Variable Input
              88:             TypePointer Output 7(fvec4)
89(@entryPointOutput):     88(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
         84(pos):      8(ptr) Variable Function
       90(param):      8(ptr) Variable Function
              87:    7(fvec4) Load 86(pos)
                              Store 84(pos) 87
              91:    7(fvec4) Load 84(pos)
                              Store 90(param) 91
              92:    7(fvec4) FunctionCall 11(@main(vf4;) 90(param)
                              Store 89(@entryPointOutput) 92
                              Return
                              FunctionEnd
  11(@main(vf4;):    7(fvec4) Function None 9
         10(pos):      8(ptr) FunctionParameter
              12:             Label
      24(packed):     23(ptr) Variable Function
           47(i):     45(ptr) Variable Function
     72(packed2):     23(ptr) Variable Function
              28:          13 Load 27(tex)
              30:     29(ptr) AccessChain 24(packed) 25
                              Store 30 28
              35:     34(ptr) AccessChain 24(packed) 31 25
                              Store 35 33
              40:     39(ptr) AccessChain 24(packed) 36 25
                              Store 40 38
              43:     42(ptr) AccessChain 24(packed) 41
                              Store 43 37
              46:     45(ptr) AccessChain 24(packed) 44
                              Store 46 41
                              Store 47(i) 25
                              Branch 48
              48:             Label
                              LoopMerge 50 51 None
                              Branch 52
              52:             Label
              53:     21(int) Load 47(i)
              55:    54(bool) SLessThan 53 31
                              BranchConditional 55 49 50
              49:               Label
              56:     21(int)   Load 47(i)
              57:     21(int)   Load 47(i)
              58:     39(ptr)   AccessChain 24(packed) 36 57
              59:   18(fvec2)   Load 58
              60:     34(ptr)   AccessChain 24(packed) 31 56
              61:   14(fvec3)   Load 60
              62:   18(fvec2)   VectorShuffle 61 61 0 1
              63:   18(fvec2)   FAdd 62 59
              65:     42(ptr)   AccessChain 24(packed) 31 56 64
              66:    6(float)   CompositeExtract 63 0
                                Store 65 66
              68:     42(ptr)   AccessChain 24(packed) 31 56 67
              69:    6(float)   CompositeExtract 63 1
                                Store 68 69
                                Branch 51
              51:               Label
              70:     21(int)   Load 47(i)
              71:     21(int)   IAdd 70 31
                                Store 47(i) 71
                                Branch 48
              50:             Label
              73:  22(Packed) Load 24(packed)
                              Store 72(packed2) 73
              74:    7(fvec4) Load 10(pos)
              75:     34(ptr) AccessChain 72(packed2) 31 25
              76:   14(fvec3) Load 75
              77:    6(float) CompositeExtract 76 0
              78:    6(float) CompositeExtract 76 1
              79:    6(float) CompositeExtract 76 2
              80:    7(fvec4) CompositeConstruct 77 78 79 32
              81:    7(fvec4) FAdd 74 80
                              ReturnValue 81
                              FunctionEnd
