hlsl.hull.6.tesc
Shader version: 500
vertices = 1
vertex spacing = fractional_even_spacing
triangle order = ccw
0:? Sequence
0:17  Function Definition: ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2]; ( temp structure{ temp 4-element array of float Edges})
0:17    Function Parameters: 
0:17      'p' ( in 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:17      'BlockID' ( in uint)
0:17      'Inside' ( out 2-element array of float)
0:?     Sequence
0:19      move second child to first child ( temp float)
0:19        direct index ( temp float)
0:19          Edges: direct index for structure ( temp 4-element array of float)
0:19            'Factors' ( temp structure{ temp 4-element array of float Edges})
0:19            Constant:
0:19              0 (const int)
0:19          Constant:
0:19            0 (const int)
0:19        Constant:
0:19          2.500000
0:20      move second child to first child ( temp float)
0:20        direct index ( temp float)
0:20          Edges: direct index for structure ( temp 4-element array of float)
0:20            'Factors' ( temp structure{ temp 4-element array of float Edges})
0:20            Constant:
0:20              0 (const int)
0:20          Constant:
0:20            1 (const int)
0:20        Constant:
0:20          4.250000
0:21      move second child to first child ( temp float)
0:21        direct index ( temp float)
0:21          Edges: direct index for structure ( temp 4-element array of float)
0:21            'Factors' ( temp structure{ temp 4-element array of float Edges})
0:21            Constant:
0:21              0 (const int)
0:21          Constant:
0:21            2 (const int)
0:21        Constant:
0:21          5.750000
0:22      move second child to first child ( temp float)
0:22        direct index ( temp float)
0:22          Edges: direct index for structure ( temp 4-element array of float)
0:22            'Factors' ( temp structure{ temp 4-element array of float Edges})
0:22            Constant:
0:22              0 (const int)
0:22          Constant:
0:22            3 (const int)
0:22        Constant:
0:22          7.500000
0:24      move second child to first child ( temp float)
0:24        direct index ( temp float)
0:24          'Inside' ( out 2-element array of float)
0:24          Constant:
0:24            0 (const int)
0:24        Constant:
0:24          6.750000
0:25      move second child to first child ( temp float)
0:25        direct index ( temp float)
0:25          'Inside' ( out 2-element array of float)
0:25          Constant:
0:25            1 (const int)
0:25        Constant:
0:25          7.250000
0:27      Branch: Return with expression
0:27        'Factors' ( temp structure{ temp 4-element array of float Edges})
0:42  Function Definition: @main(struct-VSOutput-vf4-vf31[1];u1; ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42    Function Parameters: 
0:42      'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:42      'uCPID' ( in uint)
0:?     Sequence
0:44      move second child to first child ( temp 4-component vector of float)
0:44        Position: direct index for structure ( temp 4-component vector of float)
0:44          'Out' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:44          Constant:
0:44            0 (const int)
0:44        f4Position: direct index for structure ( temp 4-component vector of float)
0:44          indirect index ( temp structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:44            'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:44            'uCPID' ( in uint)
0:44          Constant:
0:44            0 (const int)
0:45      move second child to first child ( temp 3-component vector of float)
0:45        Color: direct index for structure ( temp 3-component vector of float)
0:45          'Out' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:45          Constant:
0:45            1 (const int)
0:45        f3Color: direct index for structure ( temp 3-component vector of float)
0:45          indirect index ( temp structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:45            'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:45            'uCPID' ( in uint)
0:45          Constant:
0:45            1 (const int)
0:46      Branch: Return with expression
0:46        'Out' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42  Function Definition: main( ( temp void)
0:42    Function Parameters: 
0:?     Sequence
0:42      Sequence
0:42        move second child to first child ( temp 4-component vector of float)
0:42          f4Position: direct index for structure ( temp 4-component vector of float)
0:42            direct index ( temp structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:?               'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:42              Constant:
0:42                0 (const int)
0:42            Constant:
0:42              0 (const int)
0:42          direct index ( in 4-component vector of float Position)
0:?             'inputPatch.f4Position' ( in 1-element array of 4-component vector of float Position)
0:42            Constant:
0:42              0 (const int)
0:42        move second child to first child ( temp 3-component vector of float)
0:42          f3Color: direct index for structure ( temp 3-component vector of float)
0:42            direct index ( temp structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:?               'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:42              Constant:
0:42                0 (const int)
0:42            Constant:
0:42              1 (const int)
0:42          direct index (layout( location=0) in 3-component vector of float)
0:?             'inputPatch.f3Color' (layout( location=0) in 1-element array of 3-component vector of float)
0:42            Constant:
0:42              0 (const int)
0:42      move second child to first child ( temp uint)
0:?         'uCPID' ( temp uint)
0:?         'uCPID' ( in uint InvocationID)
0:42      Sequence
0:42        move second child to first child ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42          'flattenTemp' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42          Function Call: @main(struct-VSOutput-vf4-vf31[1];u1; ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:?             'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:?             'uCPID' ( temp uint)
0:42        move second child to first child ( temp 4-component vector of float)
0:42          indirect index (layout( location=0) out 4-component vector of float)
0:?             '@entryPointOutput.Position' (layout( location=0) out 1-element array of 4-component vector of float)
0:?             'uCPID' ( in uint InvocationID)
0:42          Position: direct index for structure ( temp 4-component vector of float)
0:42            'flattenTemp' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42            Constant:
0:42              0 (const int)
0:42        move second child to first child ( temp 3-component vector of float)
0:42          indirect index (layout( location=1) out 3-component vector of float)
0:?             '@entryPointOutput.Color' (layout( location=1) out 1-element array of 3-component vector of float)
0:?             'uCPID' ( in uint InvocationID)
0:42          Color: direct index for structure ( temp 3-component vector of float)
0:42            'flattenTemp' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42            Constant:
0:42              1 (const int)
0:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'uCPID' ( in uint InvocationID)
0:?           Constant:
0:?             0 (const int)
0:?         true case
0:?         Sequence
0:?           move second child to first child ( temp structure{ temp 4-element array of float Edges})
0:?             '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?             Function Call: ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2]; ( temp structure{ temp 4-element array of float Edges})
0:?               'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:?               'BlockID' ( in uint PrimitiveID)
0:?               'Inside' ( patch out 2-element array of float TessLevelInner)
0:?           Sequence
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   0 (const int)
0:?               direct index ( temp float)
0:?                 Edges: direct index for structure ( temp 4-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   0 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   1 (const int)
0:?               direct index ( temp float)
0:?                 Edges: direct index for structure ( temp 4-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   1 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   2 (const int)
0:?               direct index ( temp float)
0:?                 Edges: direct index for structure ( temp 4-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   2 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   3 (const int)
0:?               direct index ( temp float)
0:?                 Edges: direct index for structure ( temp 4-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   3 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.Position' (layout( location=0) out 1-element array of 4-component vector of float)
0:?     '@entryPointOutput.Color' (layout( location=1) out 1-element array of 3-component vector of float)
0:?     'inputPatch.f4Position' ( in 1-element array of 4-component vector of float Position)
0:?     'inputPatch.f3Color' (layout( location=0) in 1-element array of 3-component vector of float)
0:?     'uCPID' ( in uint InvocationID)
0:?     'BlockID' ( in uint PrimitiveID)
0:?     'Inside' ( patch out 2-element array of float TessLevelInner)
0:?     '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)


Linked tessellation control stage:


Shader version: 500
vertices = 1
vertex spacing = fractional_even_spacing
triangle order = ccw
0:? Sequence
0:17  Function Definition: ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2]; ( temp structure{ temp 4-element array of float Edges})
0:17    Function Parameters: 
0:17      'p' ( in 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:17      'BlockID' ( in uint)
0:17      'Inside' ( out 2-element array of float)
0:?     Sequence
0:19      move second child to first child ( temp float)
0:19        direct index ( temp float)
0:19          Edges: direct index for structure ( temp 4-element array of float)
0:19            'Factors' ( temp structure{ temp 4-element array of float Edges})
0:19            Constant:
0:19              0 (const int)
0:19          Constant:
0:19            0 (const int)
0:19        Constant:
0:19          2.500000
0:20      move second child to first child ( temp float)
0:20        direct index ( temp float)
0:20          Edges: direct index for structure ( temp 4-element array of float)
0:20            'Factors' ( temp structure{ temp 4-element array of float Edges})
0:20            Constant:
0:20              0 (const int)
0:20          Constant:
0:20            1 (const int)
0:20        Constant:
0:20          4.250000
0:21      move second child to first child ( temp float)
0:21        direct index ( temp float)
0:21          Edges: direct index for structure ( temp 4-element array of float)
0:21            'Factors' ( temp structure{ temp 4-element array of float Edges})
0:21            Constant:
0:21              0 (const int)
0:21          Constant:
0:21            2 (const int)
0:21        Constant:
0:21          5.750000
0:22      move second child to first child ( temp float)
0:22        direct index ( temp float)
0:22          Edges: direct index for structure ( temp 4-element array of float)
0:22            'Factors' ( temp structure{ temp 4-element array of float Edges})
0:22            Constant:
0:22              0 (const int)
0:22          Constant:
0:22            3 (const int)
0:22        Constant:
0:22          7.500000
0:24      move second child to first child ( temp float)
0:24        direct index ( temp float)
0:24          'Inside' ( out 2-element array of float)
0:24          Constant:
0:24            0 (const int)
0:24        Constant:
0:24          6.750000
0:25      move second child to first child ( temp float)
0:25        direct index ( temp float)
0:25          'Inside' ( out 2-element array of float)
0:25          Constant:
0:25            1 (const int)
0:25        Constant:
0:25          7.250000
0:27      Branch: Return with expression
0:27        'Factors' ( temp structure{ temp 4-element array of float Edges})
0:42  Function Definition: @main(struct-VSOutput-vf4-vf31[1];u1; ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42    Function Parameters: 
0:42      'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:42      'uCPID' ( in uint)
0:?     Sequence
0:44      move second child to first child ( temp 4-component vector of float)
0:44        Position: direct index for structure ( temp 4-component vector of float)
0:44          'Out' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:44          Constant:
0:44            0 (const int)
0:44        f4Position: direct index for structure ( temp 4-component vector of float)
0:44          indirect index ( temp structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:44            'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:44            'uCPID' ( in uint)
0:44          Constant:
0:44            0 (const int)
0:45      move second child to first child ( temp 3-component vector of float)
0:45        Color: direct index for structure ( temp 3-component vector of float)
0:45          'Out' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:45          Constant:
0:45            1 (const int)
0:45        f3Color: direct index for structure ( temp 3-component vector of float)
0:45          indirect index ( temp structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:45            'inputPatch' ( in 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:45            'uCPID' ( in uint)
0:45          Constant:
0:45            1 (const int)
0:46      Branch: Return with expression
0:46        'Out' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42  Function Definition: main( ( temp void)
0:42    Function Parameters: 
0:?     Sequence
0:42      Sequence
0:42        move second child to first child ( temp 4-component vector of float)
0:42          f4Position: direct index for structure ( temp 4-component vector of float)
0:42            direct index ( temp structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:?               'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:42              Constant:
0:42                0 (const int)
0:42            Constant:
0:42              0 (const int)
0:42          direct index ( in 4-component vector of float Position)
0:?             'inputPatch.f4Position' ( in 1-element array of 4-component vector of float Position)
0:42            Constant:
0:42              0 (const int)
0:42        move second child to first child ( temp 3-component vector of float)
0:42          f3Color: direct index for structure ( temp 3-component vector of float)
0:42            direct index ( temp structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:?               'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:42              Constant:
0:42                0 (const int)
0:42            Constant:
0:42              1 (const int)
0:42          direct index (layout( location=0) in 3-component vector of float)
0:?             'inputPatch.f3Color' (layout( location=0) in 1-element array of 3-component vector of float)
0:42            Constant:
0:42              0 (const int)
0:42      move second child to first child ( temp uint)
0:?         'uCPID' ( temp uint)
0:?         'uCPID' ( in uint InvocationID)
0:42      Sequence
0:42        move second child to first child ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42          'flattenTemp' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42          Function Call: @main(struct-VSOutput-vf4-vf31[1];u1; ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:?             'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:?             'uCPID' ( temp uint)
0:42        move second child to first child ( temp 4-component vector of float)
0:42          indirect index (layout( location=0) out 4-component vector of float)
0:?             '@entryPointOutput.Position' (layout( location=0) out 1-element array of 4-component vector of float)
0:?             'uCPID' ( in uint InvocationID)
0:42          Position: direct index for structure ( temp 4-component vector of float)
0:42            'flattenTemp' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42            Constant:
0:42              0 (const int)
0:42        move second child to first child ( temp 3-component vector of float)
0:42          indirect index (layout( location=1) out 3-component vector of float)
0:?             '@entryPointOutput.Color' (layout( location=1) out 1-element array of 3-component vector of float)
0:?             'uCPID' ( in uint InvocationID)
0:42          Color: direct index for structure ( temp 3-component vector of float)
0:42            'flattenTemp' ( temp structure{ temp 4-component vector of float Position,  temp 3-component vector of float Color})
0:42            Constant:
0:42              1 (const int)
0:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'uCPID' ( in uint InvocationID)
0:?           Constant:
0:?             0 (const int)
0:?         true case
0:?         Sequence
0:?           move second child to first child ( temp structure{ temp 4-element array of float Edges})
0:?             '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?             Function Call: ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2]; ( temp structure{ temp 4-element array of float Edges})
0:?               'inputPatch' ( temp 1-element array of structure{ temp 4-component vector of float f4Position,  temp 3-component vector of float f3Color})
0:?               'BlockID' ( in uint PrimitiveID)
0:?               'Inside' ( patch out 2-element array of float TessLevelInner)
0:?           Sequence
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   0 (const int)
0:?               direct index ( temp float)
0:?                 Edges: direct index for structure ( temp 4-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   0 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   1 (const int)
0:?               direct index ( temp float)
0:?                 Edges: direct index for structure ( temp 4-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   1 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   2 (const int)
0:?               direct index ( temp float)
0:?                 Edges: direct index for structure ( temp 4-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   2 (const int)
0:?             move second child to first child ( temp float)
0:?               direct index ( patch out float TessLevelOuter)
0:?                 '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
0:?                 Constant:
0:?                   3 (const int)
0:?               direct index ( temp float)
0:?                 Edges: direct index for structure ( temp 4-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 4-element array of float Edges})
0:?                   Constant:
0:?                     0 (const int)
0:?                 Constant:
0:?                   3 (const int)
0:?   Linker Objects
0:?     '@entryPointOutput.Position' (layout( location=0) out 1-element array of 4-component vector of float)
0:?     '@entryPointOutput.Color' (layout( location=1) out 1-element array of 3-component vector of float)
0:?     'inputPatch.f4Position' ( in 1-element array of 4-component vector of float Position)
0:?     'inputPatch.f3Color' (layout( location=0) in 1-element array of 3-component vector of float)
0:?     'uCPID' ( in uint InvocationID)
0:?     'BlockID' ( in uint PrimitiveID)
0:?     'Inside' ( patch out 2-element array of float TessLevelInner)
0:?     '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)

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

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 74 81 88 97 104 117 119 128
                              ExecutionMode 4 OutputVertices 1
                              ExecutionMode 4 Quads
                              ExecutionMode 4 SpacingFractionalEven
                              ExecutionMode 4 VertexOrderCcw
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "VSOutput"
                              MemberName 9(VSOutput) 0  "f4Position"
                              MemberName 9(VSOutput) 1  "f3Color"
                              Name 20  "HS_CONSTANT_DATA_OUTPUT"
                              MemberName 20(HS_CONSTANT_DATA_OUTPUT) 0  "Edges"
                              Name 25  "ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2];"
                              Name 22  "p"
                              Name 23  "BlockID"
                              Name 24  "Inside"
                              Name 27  "HSOutput"
                              MemberName 27(HSOutput) 0  "Position"
                              MemberName 27(HSOutput) 1  "Color"
                              Name 31  "@main(struct-VSOutput-vf4-vf31[1];u1;"
                              Name 29  "inputPatch"
                              Name 30  "uCPID"
                              Name 34  "Factors"
                              Name 57  "Out"
                              Name 71  "inputPatch"
                              Name 74  "inputPatch.f4Position"
                              Name 81  "inputPatch.f3Color"
                              Name 86  "uCPID"
                              Name 88  "uCPID"
                              Name 90  "flattenTemp"
                              Name 91  "param"
                              Name 93  "param"
                              Name 97  "@entryPointOutput.Position"
                              Name 104  "@entryPointOutput.Color"
                              Name 116  "@patchConstantResult"
                              Name 117  "BlockID"
                              Name 119  "Inside"
                              Name 120  "param"
                              Name 122  "param"
                              Name 124  "param"
                              Name 128  "@patchConstantOutput.Edges"
                              Decorate 74(inputPatch.f4Position) BuiltIn Position
                              Decorate 81(inputPatch.f3Color) Location 0
                              Decorate 88(uCPID) BuiltIn InvocationId
                              Decorate 97(@entryPointOutput.Position) Location 0
                              Decorate 104(@entryPointOutput.Color) Location 1
                              Decorate 117(BlockID) BuiltIn PrimitiveId
                              Decorate 119(Inside) Patch
                              Decorate 119(Inside) BuiltIn TessLevelInner
                              Decorate 128(@patchConstantOutput.Edges) Patch
                              Decorate 128(@patchConstantOutput.Edges) BuiltIn TessLevelOuter
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeVector 6(float) 3
     9(VSOutput):             TypeStruct 7(fvec4) 8(fvec3)
              10:             TypeInt 32 0
              11:     10(int) Constant 1
              12:             TypeArray 9(VSOutput) 11
              13:             TypePointer Function 12
              14:             TypePointer Function 10(int)
              15:     10(int) Constant 2
              16:             TypeArray 6(float) 15
              17:             TypePointer Function 16
              18:     10(int) Constant 4
              19:             TypeArray 6(float) 18
20(HS_CONSTANT_DATA_OUTPUT):             TypeStruct 19
              21:             TypeFunction 20(HS_CONSTANT_DATA_OUTPUT) 13(ptr) 14(ptr) 17(ptr)
    27(HSOutput):             TypeStruct 7(fvec4) 8(fvec3)
              28:             TypeFunction 27(HSOutput) 13(ptr) 14(ptr)
              33:             TypePointer Function 20(HS_CONSTANT_DATA_OUTPUT)
              35:             TypeInt 32 1
              36:     35(int) Constant 0
              37:    6(float) Constant 1075838976
              38:             TypePointer Function 6(float)
              40:     35(int) Constant 1
              41:    6(float) Constant 1082654720
              43:     35(int) Constant 2
              44:    6(float) Constant 1085800448
              46:     35(int) Constant 3
              47:    6(float) Constant 1089470464
              49:    6(float) Constant 1087897600
              51:    6(float) Constant 1088946176
              56:             TypePointer Function 27(HSOutput)
              59:             TypePointer Function 7(fvec4)
              64:             TypePointer Function 8(fvec3)
              72:             TypeArray 7(fvec4) 11
              73:             TypePointer Input 72
74(inputPatch.f4Position):     73(ptr) Variable Input
              75:             TypePointer Input 7(fvec4)
              79:             TypeArray 8(fvec3) 11
              80:             TypePointer Input 79
81(inputPatch.f3Color):     80(ptr) Variable Input
              82:             TypePointer Input 8(fvec3)
              87:             TypePointer Input 10(int)
       88(uCPID):     87(ptr) Variable Input
              96:             TypePointer Output 72
97(@entryPointOutput.Position):     96(ptr) Variable Output
             101:             TypePointer Output 7(fvec4)
             103:             TypePointer Output 79
104(@entryPointOutput.Color):    103(ptr) Variable Output
             108:             TypePointer Output 8(fvec3)
             110:     10(int) Constant 0
             112:             TypeBool
    117(BlockID):     87(ptr) Variable Input
             118:             TypePointer Output 16
     119(Inside):    118(ptr) Variable Output
             127:             TypePointer Output 19
128(@patchConstantOutput.Edges):    127(ptr) Variable Output
             131:             TypePointer Output 6(float)
         4(main):           2 Function None 3
               5:             Label
  71(inputPatch):     13(ptr) Variable Function
       86(uCPID):     14(ptr) Variable Function
 90(flattenTemp):     56(ptr) Variable Function
       91(param):     13(ptr) Variable Function
       93(param):     14(ptr) Variable Function
116(@patchConstantResult):     33(ptr) Variable Function
      120(param):     13(ptr) Variable Function
      122(param):     14(ptr) Variable Function
      124(param):     17(ptr) Variable Function
              76:     75(ptr) AccessChain 74(inputPatch.f4Position) 36
              77:    7(fvec4) Load 76
              78:     59(ptr) AccessChain 71(inputPatch) 36 36
                              Store 78 77
              83:     82(ptr) AccessChain 81(inputPatch.f3Color) 36
              84:    8(fvec3) Load 83
              85:     64(ptr) AccessChain 71(inputPatch) 36 40
                              Store 85 84
              89:     10(int) Load 88(uCPID)
                              Store 86(uCPID) 89
              92:          12 Load 71(inputPatch)
                              Store 91(param) 92
              94:     10(int) Load 86(uCPID)
                              Store 93(param) 94
              95:27(HSOutput) FunctionCall 31(@main(struct-VSOutput-vf4-vf31[1];u1;) 91(param) 93(param)
                              Store 90(flattenTemp) 95
              98:     10(int) Load 88(uCPID)
              99:     59(ptr) AccessChain 90(flattenTemp) 36
             100:    7(fvec4) Load 99
             102:    101(ptr) AccessChain 97(@entryPointOutput.Position) 98
                              Store 102 100
             105:     10(int) Load 88(uCPID)
             106:     64(ptr) AccessChain 90(flattenTemp) 40
             107:    8(fvec3) Load 106
             109:    108(ptr) AccessChain 104(@entryPointOutput.Color) 105
                              Store 109 107
                              ControlBarrier 15 18 110
             111:     10(int) Load 88(uCPID)
             113:   112(bool) IEqual 111 36
                              SelectionMerge 115 None
                              BranchConditional 113 114 115
             114:               Label
             121:          12   Load 71(inputPatch)
                                Store 120(param) 121
             123:     10(int)   Load 117(BlockID)
                                Store 122(param) 123
             125:20(HS_CONSTANT_DATA_OUTPUT)   FunctionCall 25(ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2];) 120(param) 122(param) 124(param)
             126:          16   Load 124(param)
                                Store 119(Inside) 126
                                Store 116(@patchConstantResult) 125
             129:     38(ptr)   AccessChain 116(@patchConstantResult) 36 36
             130:    6(float)   Load 129
             132:    131(ptr)   AccessChain 128(@patchConstantOutput.Edges) 36
                                Store 132 130
             133:     38(ptr)   AccessChain 116(@patchConstantResult) 36 40
             134:    6(float)   Load 133
             135:    131(ptr)   AccessChain 128(@patchConstantOutput.Edges) 40
                                Store 135 134
             136:     38(ptr)   AccessChain 116(@patchConstantResult) 36 43
             137:    6(float)   Load 136
             138:    131(ptr)   AccessChain 128(@patchConstantOutput.Edges) 43
                                Store 138 137
             139:     38(ptr)   AccessChain 116(@patchConstantResult) 36 46
             140:    6(float)   Load 139
             141:    131(ptr)   AccessChain 128(@patchConstantOutput.Edges) 46
                                Store 141 140
                                Branch 115
             115:             Label
                              Return
                              FunctionEnd
25(ConstantHS(struct-VSOutput-vf4-vf31[1];u1;f1[2];):20(HS_CONSTANT_DATA_OUTPUT) Function None 21
           22(p):     13(ptr) FunctionParameter
     23(BlockID):     14(ptr) FunctionParameter
      24(Inside):     17(ptr) FunctionParameter
              26:             Label
     34(Factors):     33(ptr) Variable Function
              39:     38(ptr) AccessChain 34(Factors) 36 36
                              Store 39 37
              42:     38(ptr) AccessChain 34(Factors) 36 40
                              Store 42 41
              45:     38(ptr) AccessChain 34(Factors) 36 43
                              Store 45 44
              48:     38(ptr) AccessChain 34(Factors) 36 46
                              Store 48 47
              50:     38(ptr) AccessChain 24(Inside) 36
                              Store 50 49
              52:     38(ptr) AccessChain 24(Inside) 40
                              Store 52 51
              53:20(HS_CONSTANT_DATA_OUTPUT) Load 34(Factors)
                              ReturnValue 53
                              FunctionEnd
31(@main(struct-VSOutput-vf4-vf31[1];u1;):27(HSOutput) Function None 28
  29(inputPatch):     13(ptr) FunctionParameter
       30(uCPID):     14(ptr) FunctionParameter
              32:             Label
         57(Out):     56(ptr) Variable Function
              58:     10(int) Load 30(uCPID)
              60:     59(ptr) AccessChain 29(inputPatch) 58 36
              61:    7(fvec4) Load 60
              62:     59(ptr) AccessChain 57(Out) 36
                              Store 62 61
              63:     10(int) Load 30(uCPID)
              65:     64(ptr) AccessChain 29(inputPatch) 63 40
              66:    8(fvec3) Load 65
              67:     64(ptr) AccessChain 57(Out) 40
                              Store 67 66
              68:27(HSOutput) Load 57(Out)
                              ReturnValue 68
                              FunctionEnd
