hlsl.domain.1.tese
Shader version: 500
input primitive = triangles
vertex spacing = none
triangle order = none
0:? Sequence
0:22  Function Definition: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22    Function Parameters: 
0:22      'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22      'f' ( in float)
0:22      'tesscoord' ( in 3-component vector of float)
0:22      'pcf_data' ( in structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:?     Sequence
0:25      move second child to first child ( temp 4-component vector of float)
0:25        pos: direct index for structure ( temp 4-component vector of float)
0:25          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25          Constant:
0:25            0 (const int)
0:25        add ( temp 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          component-wise multiply ( temp float)
0:25            direct index ( temp float)
0:25              'tesscoord' ( in 3-component vector of float)
0:25              Constant:
0:25                0 (const int)
0:25            'f' ( in float)
0:26      move second child to first child ( temp 3-component vector of float)
0:26        norm: direct index for structure ( temp 3-component vector of float)
0:26          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:26          Constant:
0:26            1 (const int)
0:26        add ( temp 3-component vector of float)
0:26          norm: direct index for structure ( temp 3-component vector of float)
0:26            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:26              'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:26              Constant:
0:26                0 (const int)
0:26            Constant:
0:26              1 (const int)
0:26          direct index ( temp float)
0:26            'tesscoord' ( in 3-component vector of float)
0:26            Constant:
0:26              1 (const int)
0:28      direct index ( temp float)
0:28        'tesscoord' ( in 3-component vector of float)
0:28        Constant:
0:28          2 (const int)
0:30      Branch: Return with expression
0:30        'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22  Function Definition: main( ( temp void)
0:22    Function Parameters: 
0:?     Sequence
0:22      move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?         'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?         'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22      move second child to first child ( temp float)
0:?         'f' ( temp float)
0:?         'f' (layout( location=2) patch in float)
0:22      move second child to first child ( temp 3-component vector of float)
0:?         'tesscoord' ( temp 3-component vector of float)
0:?         'tesscoord' ( patch in 3-component vector of float TessCoord)
0:22      Sequence
0:22        move second child to first child ( temp float)
0:22          direct index ( temp float)
0:22            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              0 (const int)
0:22          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:22            Constant:
0:22              0 (const int)
0:22        move second child to first child ( temp float)
0:22          direct index ( temp float)
0:22            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              1 (const int)
0:22          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:22            Constant:
0:22              1 (const int)
0:22        move second child to first child ( temp float)
0:22          direct index ( temp float)
0:22            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              2 (const int)
0:22          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:22            Constant:
0:22              2 (const int)
0:22        move second child to first child ( temp float)
0:22          flInsideTessFactor: direct index for structure ( temp float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22            Constant:
0:22              1 (const int)
0:22          direct index ( patch in float TessLevelInner)
0:?             'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:22            Constant:
0:22              0 (const int)
0:22      Sequence
0:22        move second child to first child ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22          'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22          Function Call: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'f' ( temp float)
0:?             'tesscoord' ( temp 3-component vector of float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:22          pos: direct index for structure ( temp 4-component vector of float)
0:22            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22            Constant:
0:22              0 (const int)
0:22        move second child to first child ( temp 3-component vector of float)
0:?           '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:22          norm: direct index for structure ( temp 3-component vector of float)
0:22            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22            Constant:
0:22              1 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:?     '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:?     'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?     'f' (layout( location=2) patch in float)
0:?     'tesscoord' ( patch in 3-component vector of float TessCoord)
0:?     'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)


Linked tessellation evaluation stage:


Shader version: 500
input primitive = triangles
vertex spacing = none
triangle order = none
0:? Sequence
0:22  Function Definition: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22    Function Parameters: 
0:22      'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22      'f' ( in float)
0:22      'tesscoord' ( in 3-component vector of float)
0:22      'pcf_data' ( in structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:?     Sequence
0:25      move second child to first child ( temp 4-component vector of float)
0:25        pos: direct index for structure ( temp 4-component vector of float)
0:25          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25          Constant:
0:25            0 (const int)
0:25        add ( temp 4-component vector of float)
0:25          pos: direct index for structure ( temp 4-component vector of float)
0:25            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:25              Constant:
0:25                0 (const int)
0:25            Constant:
0:25              0 (const int)
0:25          component-wise multiply ( temp float)
0:25            direct index ( temp float)
0:25              'tesscoord' ( in 3-component vector of float)
0:25              Constant:
0:25                0 (const int)
0:25            'f' ( in float)
0:26      move second child to first child ( temp 3-component vector of float)
0:26        norm: direct index for structure ( temp 3-component vector of float)
0:26          'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:26          Constant:
0:26            1 (const int)
0:26        add ( temp 3-component vector of float)
0:26          norm: direct index for structure ( temp 3-component vector of float)
0:26            direct index ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:26              'i' ( const (read only) 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:26              Constant:
0:26                0 (const int)
0:26            Constant:
0:26              1 (const int)
0:26          direct index ( temp float)
0:26            'tesscoord' ( in 3-component vector of float)
0:26            Constant:
0:26              1 (const int)
0:28      direct index ( temp float)
0:28        'tesscoord' ( in 3-component vector of float)
0:28        Constant:
0:28          2 (const int)
0:30      Branch: Return with expression
0:30        'o' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22  Function Definition: main( ( temp void)
0:22    Function Parameters: 
0:?     Sequence
0:22      move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?         'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?         'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22      move second child to first child ( temp float)
0:?         'f' ( temp float)
0:?         'f' (layout( location=2) patch in float)
0:22      move second child to first child ( temp 3-component vector of float)
0:?         'tesscoord' ( temp 3-component vector of float)
0:?         'tesscoord' ( patch in 3-component vector of float TessCoord)
0:22      Sequence
0:22        move second child to first child ( temp float)
0:22          direct index ( temp float)
0:22            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              0 (const int)
0:22          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:22            Constant:
0:22              0 (const int)
0:22        move second child to first child ( temp float)
0:22          direct index ( temp float)
0:22            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              1 (const int)
0:22          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:22            Constant:
0:22              1 (const int)
0:22        move second child to first child ( temp float)
0:22          direct index ( temp float)
0:22            flTessFactor: direct index for structure ( temp 3-element array of float)
0:?               'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              2 (const int)
0:22          direct index ( patch in float TessLevelOuter)
0:?             'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:22            Constant:
0:22              2 (const int)
0:22        move second child to first child ( temp float)
0:22          flInsideTessFactor: direct index for structure ( temp float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22            Constant:
0:22              1 (const int)
0:22          direct index ( patch in float TessLevelInner)
0:?             'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:22            Constant:
0:22              0 (const int)
0:22      Sequence
0:22        move second child to first child ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22          'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22          Function Call: @main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'i' ( temp 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?             'f' ( temp float)
0:?             'tesscoord' ( temp 3-component vector of float)
0:?             'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor,  temp float flInsideTessFactor})
0:22        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:22          pos: direct index for structure ( temp 4-component vector of float)
0:22            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22            Constant:
0:22              0 (const int)
0:22        move second child to first child ( temp 3-component vector of float)
0:?           '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:22          norm: direct index for structure ( temp 3-component vector of float)
0:22            'flattenTemp' ( temp structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:22            Constant:
0:22              1 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:?     '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:?     'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos,  temp 3-component vector of float norm})
0:?     'f' (layout( location=2) patch in float)
0:?     'tesscoord' ( patch in 3-component vector of float TessCoord)
0:?     'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)

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

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationEvaluation 4  "main" 54 58 62 68 82 96 100
                              ExecutionMode 4 Triangles
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "ds_in_t"
                              MemberName 9(ds_in_t) 0  "pos"
                              MemberName 9(ds_in_t) 1  "norm"
                              Name 16  "pcf_in_t"
                              MemberName 16(pcf_in_t) 0  "flTessFactor"
                              MemberName 16(pcf_in_t) 1  "flInsideTessFactor"
                              Name 18  "gs_in_t"
                              MemberName 18(gs_in_t) 0  "pos"
                              MemberName 18(gs_in_t) 1  "norm"
                              Name 24  "@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;"
                              Name 20  "i"
                              Name 21  "f"
                              Name 22  "tesscoord"
                              Name 23  "pcf_data"
                              Name 27  "o"
                              Name 52  "i"
                              Name 54  "i"
                              Name 56  "f"
                              Name 58  "f"
                              Name 60  "tesscoord"
                              Name 62  "tesscoord"
                              Name 64  "pcf_data"
                              Name 68  "pcf_data.flTessFactor"
                              Name 82  "pcf_data.flInsideTessFactor"
                              Name 86  "flattenTemp"
                              Name 88  "param"
                              Name 90  "param"
                              Name 92  "param"
                              Name 96  "@entryPointOutput.pos"
                              Name 100  "@entryPointOutput.norm"
                              Decorate 54(i) Location 0
                              Decorate 58(f) Patch
                              Decorate 58(f) Location 2
                              Decorate 62(tesscoord) Patch
                              Decorate 62(tesscoord) BuiltIn TessCoord
                              Decorate 68(pcf_data.flTessFactor) Patch
                              Decorate 68(pcf_data.flTessFactor) BuiltIn TessLevelOuter
                              Decorate 82(pcf_data.flInsideTessFactor) Patch
                              Decorate 82(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
                              Decorate 96(@entryPointOutput.pos) Location 0
                              Decorate 100(@entryPointOutput.norm) Location 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeVector 6(float) 3
      9(ds_in_t):             TypeStruct 7(fvec4) 8(fvec3)
              10:             TypeInt 32 0
              11:     10(int) Constant 3
              12:             TypeArray 9(ds_in_t) 11
              13:             TypePointer Function 6(float)
              14:             TypePointer Function 8(fvec3)
              15:             TypeArray 6(float) 11
    16(pcf_in_t):             TypeStruct 15 6(float)
              17:             TypePointer Function 16(pcf_in_t)
     18(gs_in_t):             TypeStruct 7(fvec4) 8(fvec3)
              19:             TypeFunction 18(gs_in_t) 12 13(ptr) 14(ptr) 17(ptr)
              26:             TypePointer Function 18(gs_in_t)
              28:             TypeInt 32 1
              29:     28(int) Constant 0
              31:     10(int) Constant 0
              38:             TypePointer Function 7(fvec4)
              40:     28(int) Constant 1
              42:     10(int) Constant 1
              51:             TypePointer Function 12
              53:             TypePointer Input 12
           54(i):     53(ptr) Variable Input
              57:             TypePointer Input 6(float)
           58(f):     57(ptr) Variable Input
              61:             TypePointer Input 8(fvec3)
   62(tesscoord):     61(ptr) Variable Input
              65:     10(int) Constant 4
              66:             TypeArray 6(float) 65
              67:             TypePointer Input 66
68(pcf_data.flTessFactor):     67(ptr) Variable Input
              75:     28(int) Constant 2
              79:     10(int) Constant 2
              80:             TypeArray 6(float) 79
              81:             TypePointer Input 80
82(pcf_data.flInsideTessFactor):     81(ptr) Variable Input
              95:             TypePointer Output 7(fvec4)
96(@entryPointOutput.pos):     95(ptr) Variable Output
              99:             TypePointer Output 8(fvec3)
100(@entryPointOutput.norm):     99(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           52(i):     51(ptr) Variable Function
           56(f):     13(ptr) Variable Function
   60(tesscoord):     14(ptr) Variable Function
    64(pcf_data):     17(ptr) Variable Function
 86(flattenTemp):     26(ptr) Variable Function
       88(param):     13(ptr) Variable Function
       90(param):     14(ptr) Variable Function
       92(param):     17(ptr) Variable Function
              55:          12 Load 54(i)
                              Store 52(i) 55
              59:    6(float) Load 58(f)
                              Store 56(f) 59
              63:    8(fvec3) Load 62(tesscoord)
                              Store 60(tesscoord) 63
              69:     57(ptr) AccessChain 68(pcf_data.flTessFactor) 29
              70:    6(float) Load 69
              71:     13(ptr) AccessChain 64(pcf_data) 29 29
                              Store 71 70
              72:     57(ptr) AccessChain 68(pcf_data.flTessFactor) 40
              73:    6(float) Load 72
              74:     13(ptr) AccessChain 64(pcf_data) 29 40
                              Store 74 73
              76:     57(ptr) AccessChain 68(pcf_data.flTessFactor) 75
              77:    6(float) Load 76
              78:     13(ptr) AccessChain 64(pcf_data) 29 75
                              Store 78 77
              83:     57(ptr) AccessChain 82(pcf_data.flInsideTessFactor) 29
              84:    6(float) Load 83
              85:     13(ptr) AccessChain 64(pcf_data) 40
                              Store 85 84
              87:          12 Load 52(i)
              89:    6(float) Load 56(f)
                              Store 88(param) 89
              91:    8(fvec3) Load 60(tesscoord)
                              Store 90(param) 91
              93:16(pcf_in_t) Load 64(pcf_data)
                              Store 92(param) 93
              94: 18(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;) 87 88(param) 90(param) 92(param)
                              Store 86(flattenTemp) 94
              97:     38(ptr) AccessChain 86(flattenTemp) 29
              98:    7(fvec4) Load 97
                              Store 96(@entryPointOutput.pos) 98
             101:     14(ptr) AccessChain 86(flattenTemp) 40
             102:    8(fvec3) Load 101
                              Store 100(@entryPointOutput.norm) 102
                              Return
                              FunctionEnd
24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;): 18(gs_in_t) Function None 19
           20(i):          12 FunctionParameter
           21(f):     13(ptr) FunctionParameter
   22(tesscoord):     14(ptr) FunctionParameter
    23(pcf_data):     17(ptr) FunctionParameter
              25:             Label
           27(o):     26(ptr) Variable Function
              30:    7(fvec4) CompositeExtract 20(i) 0 0
              32:     13(ptr) AccessChain 22(tesscoord) 31
              33:    6(float) Load 32
              34:    6(float) Load 21(f)
              35:    6(float) FMul 33 34
              36:    7(fvec4) CompositeConstruct 35 35 35 35
              37:    7(fvec4) FAdd 30 36
              39:     38(ptr) AccessChain 27(o) 29
                              Store 39 37
              41:    8(fvec3) CompositeExtract 20(i) 0 1
              43:     13(ptr) AccessChain 22(tesscoord) 42
              44:    6(float) Load 43
              45:    8(fvec3) CompositeConstruct 44 44 44
              46:    8(fvec3) FAdd 41 45
              47:     14(ptr) AccessChain 27(o) 40
                              Store 47 46
              48: 18(gs_in_t) Load 27(o)
                              ReturnValue 48
                              FunctionEnd
