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      Sequence
0:22        move second child to first child ( temp 4-component vector of float)
0:22          pos: direct index for structure ( temp 4-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              0 (const int)
0:22          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22            Constant:
0:22              0 (const int)
0:22        move second child to first child ( temp 3-component vector of float)
0:22          norm: direct index for structure ( temp 3-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              1 (const int)
0:22          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22            Constant:
0:22              0 (const int)
0:22        move second child to first child ( temp 4-component vector of float)
0:22          pos: direct index for structure ( temp 4-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                1 (const int)
0:22            Constant:
0:22              0 (const int)
0:22          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22            Constant:
0:22              1 (const int)
0:22        move second child to first child ( temp 3-component vector of float)
0:22          norm: direct index for structure ( temp 3-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                1 (const int)
0:22            Constant:
0:22              1 (const int)
0:22          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22            Constant:
0:22              1 (const int)
0:22        move second child to first child ( temp 4-component vector of float)
0:22          pos: direct index for structure ( temp 4-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                2 (const int)
0:22            Constant:
0:22              0 (const int)
0:22          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22            Constant:
0:22              2 (const int)
0:22        move second child to first child ( temp 3-component vector of float)
0:22          norm: direct index for structure ( temp 3-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                2 (const int)
0:22            Constant:
0:22              1 (const int)
0:22          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22            Constant:
0:22              2 (const int)
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.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:?     'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
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      Sequence
0:22        move second child to first child ( temp 4-component vector of float)
0:22          pos: direct index for structure ( temp 4-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              0 (const int)
0:22          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22            Constant:
0:22              0 (const int)
0:22        move second child to first child ( temp 3-component vector of float)
0:22          norm: direct index for structure ( temp 3-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                0 (const int)
0:22            Constant:
0:22              1 (const int)
0:22          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22            Constant:
0:22              0 (const int)
0:22        move second child to first child ( temp 4-component vector of float)
0:22          pos: direct index for structure ( temp 4-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                1 (const int)
0:22            Constant:
0:22              0 (const int)
0:22          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22            Constant:
0:22              1 (const int)
0:22        move second child to first child ( temp 3-component vector of float)
0:22          norm: direct index for structure ( temp 3-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                1 (const int)
0:22            Constant:
0:22              1 (const int)
0:22          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22            Constant:
0:22              1 (const int)
0:22        move second child to first child ( temp 4-component vector of float)
0:22          pos: direct index for structure ( temp 4-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                2 (const int)
0:22            Constant:
0:22              0 (const int)
0:22          direct index (layout( location=0) in 4-component vector of float)
0:?             'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22            Constant:
0:22              2 (const int)
0:22        move second child to first child ( temp 3-component vector of float)
0:22          norm: direct index for structure ( temp 3-component vector of float)
0:22            direct index ( 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:22              Constant:
0:22                2 (const int)
0:22            Constant:
0:22              1 (const int)
0:22          direct index (layout( location=1) in 3-component vector of float)
0:?             'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22            Constant:
0:22              2 (const int)
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.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:?     'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
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): 8000a
// Id's are bound by 125

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationEvaluation 4  "main" 55 62 82 85 91 104 118 122
                              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 55  "i.pos"
                              Name 62  "i.norm"
                              Name 80  "f"
                              Name 82  "f"
                              Name 84  "tesscoord"
                              Name 85  "tesscoord"
                              Name 87  "pcf_data"
                              Name 91  "pcf_data.flTessFactor"
                              Name 104  "pcf_data.flInsideTessFactor"
                              Name 108  "flattenTemp"
                              Name 110  "param"
                              Name 112  "param"
                              Name 114  "param"
                              Name 118  "@entryPointOutput.pos"
                              Name 122  "@entryPointOutput.norm"
                              Decorate 55(i.pos) Location 0
                              Decorate 62(i.norm) Location 1
                              Decorate 82(f) Patch
                              Decorate 82(f) Location 2
                              Decorate 85(tesscoord) Patch
                              Decorate 85(tesscoord) BuiltIn TessCoord
                              Decorate 91(pcf_data.flTessFactor) Patch
                              Decorate 91(pcf_data.flTessFactor) BuiltIn TessLevelOuter
                              Decorate 104(pcf_data.flInsideTessFactor) Patch
                              Decorate 104(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
                              Decorate 118(@entryPointOutput.pos) Location 0
                              Decorate 122(@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:             TypeArray 7(fvec4) 11
              54:             TypePointer Input 53
       55(i.pos):     54(ptr) Variable Input
              56:             TypePointer Input 7(fvec4)
              60:             TypeArray 8(fvec3) 11
              61:             TypePointer Input 60
      62(i.norm):     61(ptr) Variable Input
              63:             TypePointer Input 8(fvec3)
              73:     28(int) Constant 2
              81:             TypePointer Input 6(float)
           82(f):     81(ptr) Variable Input
   85(tesscoord):     63(ptr) Variable Input
              88:     10(int) Constant 4
              89:             TypeArray 6(float) 88
              90:             TypePointer Input 89
91(pcf_data.flTessFactor):     90(ptr) Variable Input
             101:     10(int) Constant 2
             102:             TypeArray 6(float) 101
             103:             TypePointer Input 102
104(pcf_data.flInsideTessFactor):    103(ptr) Variable Input
             117:             TypePointer Output 7(fvec4)
118(@entryPointOutput.pos):    117(ptr) Variable Output
             121:             TypePointer Output 8(fvec3)
122(@entryPointOutput.norm):    121(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
           52(i):     51(ptr) Variable Function
           80(f):     13(ptr) Variable Function
   84(tesscoord):     14(ptr) Variable Function
    87(pcf_data):     17(ptr) Variable Function
108(flattenTemp):     26(ptr) Variable Function
      110(param):     13(ptr) Variable Function
      112(param):     14(ptr) Variable Function
      114(param):     17(ptr) Variable Function
              57:     56(ptr) AccessChain 55(i.pos) 29
              58:    7(fvec4) Load 57
              59:     38(ptr) AccessChain 52(i) 29 29
                              Store 59 58
              64:     63(ptr) AccessChain 62(i.norm) 29
              65:    8(fvec3) Load 64
              66:     14(ptr) AccessChain 52(i) 29 40
                              Store 66 65
              67:     56(ptr) AccessChain 55(i.pos) 40
              68:    7(fvec4) Load 67
              69:     38(ptr) AccessChain 52(i) 40 29
                              Store 69 68
              70:     63(ptr) AccessChain 62(i.norm) 40
              71:    8(fvec3) Load 70
              72:     14(ptr) AccessChain 52(i) 40 40
                              Store 72 71
              74:     56(ptr) AccessChain 55(i.pos) 73
              75:    7(fvec4) Load 74
              76:     38(ptr) AccessChain 52(i) 73 29
                              Store 76 75
              77:     63(ptr) AccessChain 62(i.norm) 73
              78:    8(fvec3) Load 77
              79:     14(ptr) AccessChain 52(i) 73 40
                              Store 79 78
              83:    6(float) Load 82(f)
                              Store 80(f) 83
              86:    8(fvec3) Load 85(tesscoord)
                              Store 84(tesscoord) 86
              92:     81(ptr) AccessChain 91(pcf_data.flTessFactor) 29
              93:    6(float) Load 92
              94:     13(ptr) AccessChain 87(pcf_data) 29 29
                              Store 94 93
              95:     81(ptr) AccessChain 91(pcf_data.flTessFactor) 40
              96:    6(float) Load 95
              97:     13(ptr) AccessChain 87(pcf_data) 29 40
                              Store 97 96
              98:     81(ptr) AccessChain 91(pcf_data.flTessFactor) 73
              99:    6(float) Load 98
             100:     13(ptr) AccessChain 87(pcf_data) 29 73
                              Store 100 99
             105:     81(ptr) AccessChain 104(pcf_data.flInsideTessFactor) 29
             106:    6(float) Load 105
             107:     13(ptr) AccessChain 87(pcf_data) 40
                              Store 107 106
             109:          12 Load 52(i)
             111:    6(float) Load 80(f)
                              Store 110(param) 111
             113:    8(fvec3) Load 84(tesscoord)
                              Store 112(param) 113
             115:16(pcf_in_t) Load 87(pcf_data)
                              Store 114(param) 115
             116: 18(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;) 109 110(param) 112(param) 114(param)
                              Store 108(flattenTemp) 116
             119:     38(ptr) AccessChain 108(flattenTemp) 29
             120:    7(fvec4) Load 119
                              Store 118(@entryPointOutput.pos) 120
             123:     14(ptr) AccessChain 108(flattenTemp) 40
             124:    8(fvec3) Load 123
                              Store 122(@entryPointOutput.norm) 124
                              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
