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:?         Constant:
0:?           0.000000
0:?           0.000000
0:?           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:?         Constant:
0:?           0.000000
0:?           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:?           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:?         Constant:
0:?           0.000000
0:?           0.000000
0:?           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:?         Constant:
0:?           0.000000
0:?           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:?           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): 80005
// Id's are bound by 90

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 83 86
                              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 69  "packed2"
                              Name 81  "pos"
                              Name 83  "pos"
                              Name 86  "@entryPointOutput"
                              Name 87  "param"
                              Decorate 27(tex) DescriptorSet 0
                              Decorate 83(pos) Location 0
                              Decorate 86(@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
              82:             TypePointer Input 7(fvec4)
         83(pos):     82(ptr) Variable Input
              85:             TypePointer Output 7(fvec4)
86(@entryPointOutput):     85(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
         81(pos):      8(ptr) Variable Function
       87(param):      8(ptr) Variable Function
              84:    7(fvec4) Load 83(pos)
                              Store 81(pos) 84
              88:    7(fvec4) Load 81(pos)
                              Store 87(param) 88
              89:    7(fvec4) FunctionCall 11(@main(vf4;) 87(param)
                              Store 86(@entryPointOutput) 89
                              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
     69(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
              64:     34(ptr)   AccessChain 24(packed) 31 56
              65:   14(fvec3)   Load 64
              66:   14(fvec3)   VectorShuffle 65 63 3 4 2
                                Store 64 66
                                Branch 51
              51:               Label
              67:     21(int)   Load 47(i)
              68:     21(int)   IAdd 67 31
                                Store 47(i) 68
                                Branch 48
              50:             Label
              70:  22(Packed) Load 24(packed)
                              Store 69(packed2) 70
              71:    7(fvec4) Load 10(pos)
              72:     34(ptr) AccessChain 69(packed2) 31 25
              73:   14(fvec3) Load 72
              74:    6(float) CompositeExtract 73 0
              75:    6(float) CompositeExtract 73 1
              76:    6(float) CompositeExtract 73 2
              77:    7(fvec4) CompositeConstruct 74 75 76 32
              78:    7(fvec4) FAdd 71 77
                              ReturnValue 78
                              FunctionEnd
