hlsl.color.hull.tesc
Shader version: 500
vertices = 3
vertex spacing = equal_spacing
triangle order = cw
0:? Sequence
0:37  Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1; ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:37    Function Parameters: 
0:37      'inputPatch' ( in 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:37      'patchId' ( in uint)
0:?     Sequence
0:42      move second child to first child ( temp float)
0:42        direct index ( temp float)
0:42          edges: direct index for structure ( temp 3-element array of float)
0:42            'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:42            Constant:
0:42              0 (const int)
0:42          Constant:
0:42            0 (const int)
0:42        tessellationAmount: direct index for structure (layout( row_major std140) uniform float)
0:42          'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:42          Constant:
0:42            0 (const uint)
0:43      move second child to first child ( temp float)
0:43        direct index ( temp float)
0:43          edges: direct index for structure ( temp 3-element array of float)
0:43            'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:43            Constant:
0:43              0 (const int)
0:43          Constant:
0:43            1 (const int)
0:43        tessellationAmount: direct index for structure (layout( row_major std140) uniform float)
0:43          'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:43          Constant:
0:43            0 (const uint)
0:44      move second child to first child ( temp float)
0:44        direct index ( temp float)
0:44          edges: direct index for structure ( temp 3-element array of float)
0:44            'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:44            Constant:
0:44              0 (const int)
0:44          Constant:
0:44            2 (const int)
0:44        tessellationAmount: direct index for structure (layout( row_major std140) uniform float)
0:44          'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:44          Constant:
0:44            0 (const uint)
0:47      move second child to first child ( temp float)
0:47        inside: direct index for structure ( temp float)
0:47          'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:47          Constant:
0:47            1 (const int)
0:47        tessellationAmount: direct index for structure (layout( row_major std140) uniform float)
0:47          'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:47          Constant:
0:47            0 (const uint)
0:49      Branch: Return with expression
0:49        'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:63  Function Definition: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63    Function Parameters: 
0:63      'patch' ( in 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63      'pointId' ( in uint)
0:63      'patchId' ( in uint)
0:?     Sequence
0:67      move second child to first child ( temp 3-component vector of float)
0:67        position: direct index for structure ( temp 3-component vector of float)
0:67          'output' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:67          Constant:
0:67            0 (const int)
0:67        position: direct index for structure ( temp 3-component vector of float)
0:67          indirect index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:67            'patch' ( in 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:67            'pointId' ( in uint)
0:67          Constant:
0:67            0 (const int)
0:70      move second child to first child ( temp 4-component vector of float)
0:70        color: direct index for structure ( temp 4-component vector of float)
0:70          'output' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:70          Constant:
0:70            1 (const int)
0:70        color: direct index for structure ( temp 4-component vector of float)
0:70          indirect index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:70            'patch' ( in 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:70            'pointId' ( in uint)
0:70          Constant:
0:70            1 (const int)
0:72      Branch: Return with expression
0:72        'output' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63  Function Definition: main( ( temp void)
0:63    Function Parameters: 
0:?     Sequence
0:63      Sequence
0:63        move second child to first child ( temp 3-component vector of float)
0:63          position: direct index for structure ( temp 3-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                0 (const int)
0:63            Constant:
0:63              0 (const int)
0:63          direct index (layout( location=0) in 3-component vector of float)
0:?             'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63            Constant:
0:63              0 (const int)
0:63        move second child to first child ( temp 4-component vector of float)
0:63          color: direct index for structure ( temp 4-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                0 (const int)
0:63            Constant:
0:63              1 (const int)
0:63          direct index (layout( location=1) in 4-component vector of float)
0:?             'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63            Constant:
0:63              0 (const int)
0:63        move second child to first child ( temp 3-component vector of float)
0:63          position: direct index for structure ( temp 3-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                1 (const int)
0:63            Constant:
0:63              0 (const int)
0:63          direct index (layout( location=0) in 3-component vector of float)
0:?             'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63            Constant:
0:63              1 (const int)
0:63        move second child to first child ( temp 4-component vector of float)
0:63          color: direct index for structure ( temp 4-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                1 (const int)
0:63            Constant:
0:63              1 (const int)
0:63          direct index (layout( location=1) in 4-component vector of float)
0:?             'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63            Constant:
0:63              1 (const int)
0:63        move second child to first child ( temp 3-component vector of float)
0:63          position: direct index for structure ( temp 3-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                2 (const int)
0:63            Constant:
0:63              0 (const int)
0:63          direct index (layout( location=0) in 3-component vector of float)
0:?             'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63            Constant:
0:63              2 (const int)
0:63        move second child to first child ( temp 4-component vector of float)
0:63          color: direct index for structure ( temp 4-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                2 (const int)
0:63            Constant:
0:63              1 (const int)
0:63          direct index (layout( location=1) in 4-component vector of float)
0:?             'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63            Constant:
0:63              2 (const int)
0:63      move second child to first child ( temp uint)
0:?         'pointId' ( temp uint)
0:?         'pointId' ( in uint InvocationID)
0:63      move second child to first child ( temp uint)
0:?         'patchId' ( temp uint)
0:?         'patchId' ( in uint PrimitiveID)
0:63      Sequence
0:63        move second child to first child ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63          'flattenTemp' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63          Function Call: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?             'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?             'pointId' ( temp uint)
0:?             'patchId' ( temp uint)
0:63        move second child to first child ( temp 3-component vector of float)
0:63          indirect index (layout( location=0) out 3-component vector of float)
0:?             '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float)
0:?             'pointId' ( in uint InvocationID)
0:63          position: direct index for structure ( temp 3-component vector of float)
0:63            'flattenTemp' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63            Constant:
0:63              0 (const int)
0:63        move second child to first child ( temp 4-component vector of float)
0:63          indirect index (layout( location=1) out 4-component vector of float)
0:?             '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float)
0:?             'pointId' ( in uint InvocationID)
0:63          color: direct index for structure ( temp 4-component vector of float)
0:63            'flattenTemp' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63            Constant:
0:63              1 (const int)
0:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'pointId' ( in uint InvocationID)
0:?           Constant:
0:?             0 (const int)
0:?         true case
0:?         Sequence
0:?           move second child to first child ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:?             '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:?             Function Call: ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1; ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patchId' ( in uint PrimitiveID)
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 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
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 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
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 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
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 TessLevelInner)
0:?                 '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
0:?                 Constant:
0:?                   0 (const int)
0:?               inside: direct index for structure ( temp float)
0:?                 '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:?                 Constant:
0:?                   1 (const int)
0:?   Linker Objects
0:?     'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:?     '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float)
0:?     '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float)
0:?     'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:?     'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:?     'pointId' ( in uint InvocationID)
0:?     'patchId' ( in uint PrimitiveID)
0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:?     '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)


Linked tessellation control stage:


Shader version: 500
vertices = 3
vertex spacing = equal_spacing
triangle order = cw
0:? Sequence
0:37  Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1; ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:37    Function Parameters: 
0:37      'inputPatch' ( in 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:37      'patchId' ( in uint)
0:?     Sequence
0:42      move second child to first child ( temp float)
0:42        direct index ( temp float)
0:42          edges: direct index for structure ( temp 3-element array of float)
0:42            'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:42            Constant:
0:42              0 (const int)
0:42          Constant:
0:42            0 (const int)
0:42        tessellationAmount: direct index for structure (layout( row_major std140) uniform float)
0:42          'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:42          Constant:
0:42            0 (const uint)
0:43      move second child to first child ( temp float)
0:43        direct index ( temp float)
0:43          edges: direct index for structure ( temp 3-element array of float)
0:43            'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:43            Constant:
0:43              0 (const int)
0:43          Constant:
0:43            1 (const int)
0:43        tessellationAmount: direct index for structure (layout( row_major std140) uniform float)
0:43          'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:43          Constant:
0:43            0 (const uint)
0:44      move second child to first child ( temp float)
0:44        direct index ( temp float)
0:44          edges: direct index for structure ( temp 3-element array of float)
0:44            'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:44            Constant:
0:44              0 (const int)
0:44          Constant:
0:44            2 (const int)
0:44        tessellationAmount: direct index for structure (layout( row_major std140) uniform float)
0:44          'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:44          Constant:
0:44            0 (const uint)
0:47      move second child to first child ( temp float)
0:47        inside: direct index for structure ( temp float)
0:47          'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:47          Constant:
0:47            1 (const int)
0:47        tessellationAmount: direct index for structure (layout( row_major std140) uniform float)
0:47          'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:47          Constant:
0:47            0 (const uint)
0:49      Branch: Return with expression
0:49        'output' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:63  Function Definition: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63    Function Parameters: 
0:63      'patch' ( in 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63      'pointId' ( in uint)
0:63      'patchId' ( in uint)
0:?     Sequence
0:67      move second child to first child ( temp 3-component vector of float)
0:67        position: direct index for structure ( temp 3-component vector of float)
0:67          'output' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:67          Constant:
0:67            0 (const int)
0:67        position: direct index for structure ( temp 3-component vector of float)
0:67          indirect index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:67            'patch' ( in 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:67            'pointId' ( in uint)
0:67          Constant:
0:67            0 (const int)
0:70      move second child to first child ( temp 4-component vector of float)
0:70        color: direct index for structure ( temp 4-component vector of float)
0:70          'output' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:70          Constant:
0:70            1 (const int)
0:70        color: direct index for structure ( temp 4-component vector of float)
0:70          indirect index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:70            'patch' ( in 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:70            'pointId' ( in uint)
0:70          Constant:
0:70            1 (const int)
0:72      Branch: Return with expression
0:72        'output' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63  Function Definition: main( ( temp void)
0:63    Function Parameters: 
0:?     Sequence
0:63      Sequence
0:63        move second child to first child ( temp 3-component vector of float)
0:63          position: direct index for structure ( temp 3-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                0 (const int)
0:63            Constant:
0:63              0 (const int)
0:63          direct index (layout( location=0) in 3-component vector of float)
0:?             'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63            Constant:
0:63              0 (const int)
0:63        move second child to first child ( temp 4-component vector of float)
0:63          color: direct index for structure ( temp 4-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                0 (const int)
0:63            Constant:
0:63              1 (const int)
0:63          direct index (layout( location=1) in 4-component vector of float)
0:?             'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63            Constant:
0:63              0 (const int)
0:63        move second child to first child ( temp 3-component vector of float)
0:63          position: direct index for structure ( temp 3-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                1 (const int)
0:63            Constant:
0:63              0 (const int)
0:63          direct index (layout( location=0) in 3-component vector of float)
0:?             'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63            Constant:
0:63              1 (const int)
0:63        move second child to first child ( temp 4-component vector of float)
0:63          color: direct index for structure ( temp 4-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                1 (const int)
0:63            Constant:
0:63              1 (const int)
0:63          direct index (layout( location=1) in 4-component vector of float)
0:?             'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63            Constant:
0:63              1 (const int)
0:63        move second child to first child ( temp 3-component vector of float)
0:63          position: direct index for structure ( temp 3-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                2 (const int)
0:63            Constant:
0:63              0 (const int)
0:63          direct index (layout( location=0) in 3-component vector of float)
0:?             'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63            Constant:
0:63              2 (const int)
0:63        move second child to first child ( temp 4-component vector of float)
0:63          color: direct index for structure ( temp 4-component vector of float)
0:63            direct index ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63              Constant:
0:63                2 (const int)
0:63            Constant:
0:63              1 (const int)
0:63          direct index (layout( location=1) in 4-component vector of float)
0:?             'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63            Constant:
0:63              2 (const int)
0:63      move second child to first child ( temp uint)
0:?         'pointId' ( temp uint)
0:?         'pointId' ( in uint InvocationID)
0:63      move second child to first child ( temp uint)
0:?         'patchId' ( temp uint)
0:?         'patchId' ( in uint PrimitiveID)
0:63      Sequence
0:63        move second child to first child ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63          'flattenTemp' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63          Function Call: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?             'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?             'pointId' ( temp uint)
0:?             'patchId' ( temp uint)
0:63        move second child to first child ( temp 3-component vector of float)
0:63          indirect index (layout( location=0) out 3-component vector of float)
0:?             '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float)
0:?             'pointId' ( in uint InvocationID)
0:63          position: direct index for structure ( temp 3-component vector of float)
0:63            'flattenTemp' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63            Constant:
0:63              0 (const int)
0:63        move second child to first child ( temp 4-component vector of float)
0:63          indirect index (layout( location=1) out 4-component vector of float)
0:?             '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float)
0:?             'pointId' ( in uint InvocationID)
0:63          color: direct index for structure ( temp 4-component vector of float)
0:63            'flattenTemp' ( temp structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:63            Constant:
0:63              1 (const int)
0:?       Barrier ( temp void)
0:?       Test condition and select ( temp void)
0:?         Condition
0:?         Compare Equal ( temp bool)
0:?           'pointId' ( in uint InvocationID)
0:?           Constant:
0:?             0 (const int)
0:?         true case
0:?         Sequence
0:?           move second child to first child ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:?             '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:?             Function Call: ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1; ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:?               'patch' ( temp 3-element array of structure{ temp 3-component vector of float position,  temp 4-component vector of float color})
0:?               'patchId' ( in uint PrimitiveID)
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 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
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 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
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 3-element array of float)
0:?                   '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
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 TessLevelInner)
0:?                 '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
0:?                 Constant:
0:?                   0 (const int)
0:?               inside: direct index for structure ( temp float)
0:?                 '@patchConstantResult' ( temp structure{ temp 3-element array of float edges,  temp float inside})
0:?                 Constant:
0:?                   1 (const int)
0:?   Linker Objects
0:?     'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:?     '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float)
0:?     '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float)
0:?     'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:?     'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:?     'pointId' ( in uint InvocationID)
0:?     'patchId' ( in uint PrimitiveID)
0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
0:?     '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)

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

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 73 80 99 102 113 120 142 155
                              ExecutionMode 4 OutputVertices 3
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 SpacingEqual
                              ExecutionMode 4 VertexOrderCw
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "HullInputType"
                              MemberName 9(HullInputType) 0  "position"
                              MemberName 9(HullInputType) 1  "color"
                              Name 16  "ConstantOutputType"
                              MemberName 16(ConstantOutputType) 0  "edges"
                              MemberName 16(ConstantOutputType) 1  "inside"
                              Name 20  "ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;"
                              Name 18  "inputPatch"
                              Name 19  "patchId"
                              Name 22  "HullOutputType"
                              MemberName 22(HullOutputType) 0  "position"
                              MemberName 22(HullOutputType) 1  "color"
                              Name 27  "@main(struct-HullInputType-vf3-vf41[3];u1;u1;"
                              Name 24  "patch"
                              Name 25  "pointId"
                              Name 26  "patchId"
                              Name 30  "output"
                              Name 33  "TessellationBuffer"
                              MemberName 33(TessellationBuffer) 0  "tessellationAmount"
                              MemberName 33(TessellationBuffer) 1  "padding"
                              Name 35  ""
                              Name 56  "output"
                              Name 70  "patch"
                              Name 73  "patch.position"
                              Name 80  "patch.color"
                              Name 97  "pointId"
                              Name 99  "pointId"
                              Name 101  "patchId"
                              Name 102  "patchId"
                              Name 104  "flattenTemp"
                              Name 105  "param"
                              Name 107  "param"
                              Name 109  "param"
                              Name 113  "@entryPointOutput.position"
                              Name 120  "@entryPointOutput.color"
                              Name 134  "@patchConstantResult"
                              Name 135  "param"
                              Name 137  "param"
                              Name 142  "@patchConstantOutput.edges"
                              Name 155  "@patchConstantOutput.inside"
                              MemberDecorate 33(TessellationBuffer) 0 Offset 0
                              MemberDecorate 33(TessellationBuffer) 1 Offset 4
                              Decorate 33(TessellationBuffer) Block
                              Decorate 35 DescriptorSet 0
                              Decorate 35 Binding 0
                              Decorate 73(patch.position) Location 0
                              Decorate 80(patch.color) Location 1
                              Decorate 99(pointId) BuiltIn InvocationId
                              Decorate 102(patchId) BuiltIn PrimitiveId
                              Decorate 113(@entryPointOutput.position) Location 0
                              Decorate 120(@entryPointOutput.color) Location 1
                              Decorate 142(@patchConstantOutput.edges) Patch
                              Decorate 142(@patchConstantOutput.edges) BuiltIn TessLevelOuter
                              Decorate 155(@patchConstantOutput.inside) Patch
                              Decorate 155(@patchConstantOutput.inside) BuiltIn TessLevelInner
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypeVector 6(float) 4
9(HullInputType):             TypeStruct 7(fvec3) 8(fvec4)
              10:             TypeInt 32 0
              11:     10(int) Constant 3
              12:             TypeArray 9(HullInputType) 11
              13:             TypePointer Function 12
              14:             TypePointer Function 10(int)
              15:             TypeArray 6(float) 11
16(ConstantOutputType):             TypeStruct 15 6(float)
              17:             TypeFunction 16(ConstantOutputType) 13(ptr) 14(ptr)
22(HullOutputType):             TypeStruct 7(fvec3) 8(fvec4)
              23:             TypeFunction 22(HullOutputType) 13(ptr) 14(ptr) 14(ptr)
              29:             TypePointer Function 16(ConstantOutputType)
              31:             TypeInt 32 1
              32:     31(int) Constant 0
33(TessellationBuffer):             TypeStruct 6(float) 7(fvec3)
              34:             TypePointer Uniform 33(TessellationBuffer)
              35:     34(ptr) Variable Uniform
              36:             TypePointer Uniform 6(float)
              39:             TypePointer Function 6(float)
              41:     31(int) Constant 1
              45:     31(int) Constant 2
              55:             TypePointer Function 22(HullOutputType)
              58:             TypePointer Function 7(fvec3)
              63:             TypePointer Function 8(fvec4)
              71:             TypeArray 7(fvec3) 11
              72:             TypePointer Input 71
73(patch.position):     72(ptr) Variable Input
              74:             TypePointer Input 7(fvec3)
              78:             TypeArray 8(fvec4) 11
              79:             TypePointer Input 78
 80(patch.color):     79(ptr) Variable Input
              81:             TypePointer Input 8(fvec4)
              98:             TypePointer Input 10(int)
     99(pointId):     98(ptr) Variable Input
    102(patchId):     98(ptr) Variable Input
             112:             TypePointer Output 71
113(@entryPointOutput.position):    112(ptr) Variable Output
             117:             TypePointer Output 7(fvec3)
             119:             TypePointer Output 78
120(@entryPointOutput.color):    119(ptr) Variable Output
             124:             TypePointer Output 8(fvec4)
             126:     10(int) Constant 2
             127:     10(int) Constant 4
             128:     10(int) Constant 0
             130:             TypeBool
             140:             TypeArray 6(float) 127
             141:             TypePointer Output 140
142(@patchConstantOutput.edges):    141(ptr) Variable Output
             145:             TypePointer Output 6(float)
             153:             TypeArray 6(float) 126
             154:             TypePointer Output 153
155(@patchConstantOutput.inside):    154(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
       70(patch):     13(ptr) Variable Function
     97(pointId):     14(ptr) Variable Function
    101(patchId):     14(ptr) Variable Function
104(flattenTemp):     55(ptr) Variable Function
      105(param):     13(ptr) Variable Function
      107(param):     14(ptr) Variable Function
      109(param):     14(ptr) Variable Function
134(@patchConstantResult):     29(ptr) Variable Function
      135(param):     13(ptr) Variable Function
      137(param):     14(ptr) Variable Function
              75:     74(ptr) AccessChain 73(patch.position) 32
              76:    7(fvec3) Load 75
              77:     58(ptr) AccessChain 70(patch) 32 32
                              Store 77 76
              82:     81(ptr) AccessChain 80(patch.color) 32
              83:    8(fvec4) Load 82
              84:     63(ptr) AccessChain 70(patch) 32 41
                              Store 84 83
              85:     74(ptr) AccessChain 73(patch.position) 41
              86:    7(fvec3) Load 85
              87:     58(ptr) AccessChain 70(patch) 41 32
                              Store 87 86
              88:     81(ptr) AccessChain 80(patch.color) 41
              89:    8(fvec4) Load 88
              90:     63(ptr) AccessChain 70(patch) 41 41
                              Store 90 89
              91:     74(ptr) AccessChain 73(patch.position) 45
              92:    7(fvec3) Load 91
              93:     58(ptr) AccessChain 70(patch) 45 32
                              Store 93 92
              94:     81(ptr) AccessChain 80(patch.color) 45
              95:    8(fvec4) Load 94
              96:     63(ptr) AccessChain 70(patch) 45 41
                              Store 96 95
             100:     10(int) Load 99(pointId)
                              Store 97(pointId) 100
             103:     10(int) Load 102(patchId)
                              Store 101(patchId) 103
             106:          12 Load 70(patch)
                              Store 105(param) 106
             108:     10(int) Load 97(pointId)
                              Store 107(param) 108
             110:     10(int) Load 101(patchId)
                              Store 109(param) 110
             111:22(HullOutputType) FunctionCall 27(@main(struct-HullInputType-vf3-vf41[3];u1;u1;) 105(param) 107(param) 109(param)
                              Store 104(flattenTemp) 111
             114:     10(int) Load 99(pointId)
             115:     58(ptr) AccessChain 104(flattenTemp) 32
             116:    7(fvec3) Load 115
             118:    117(ptr) AccessChain 113(@entryPointOutput.position) 114
                              Store 118 116
             121:     10(int) Load 99(pointId)
             122:     63(ptr) AccessChain 104(flattenTemp) 41
             123:    8(fvec4) Load 122
             125:    124(ptr) AccessChain 120(@entryPointOutput.color) 121
                              Store 125 123
                              ControlBarrier 126 127 128
             129:     10(int) Load 99(pointId)
             131:   130(bool) IEqual 129 32
                              SelectionMerge 133 None
                              BranchConditional 131 132 133
             132:               Label
             136:          12   Load 70(patch)
                                Store 135(param) 136
             138:     10(int)   Load 102(patchId)
                                Store 137(param) 138
             139:16(ConstantOutputType)   FunctionCall 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;) 135(param) 137(param)
                                Store 134(@patchConstantResult) 139
             143:     39(ptr)   AccessChain 134(@patchConstantResult) 32 32
             144:    6(float)   Load 143
             146:    145(ptr)   AccessChain 142(@patchConstantOutput.edges) 32
                                Store 146 144
             147:     39(ptr)   AccessChain 134(@patchConstantResult) 32 41
             148:    6(float)   Load 147
             149:    145(ptr)   AccessChain 142(@patchConstantOutput.edges) 41
                                Store 149 148
             150:     39(ptr)   AccessChain 134(@patchConstantResult) 32 45
             151:    6(float)   Load 150
             152:    145(ptr)   AccessChain 142(@patchConstantOutput.edges) 45
                                Store 152 151
             156:     39(ptr)   AccessChain 134(@patchConstantResult) 41
             157:    6(float)   Load 156
             158:    145(ptr)   AccessChain 155(@patchConstantOutput.inside) 32
                                Store 158 157
                                Branch 133
             133:             Label
                              Return
                              FunctionEnd
20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;):16(ConstantOutputType) Function None 17
  18(inputPatch):     13(ptr) FunctionParameter
     19(patchId):     14(ptr) FunctionParameter
              21:             Label
      30(output):     29(ptr) Variable Function
              37:     36(ptr) AccessChain 35 32
              38:    6(float) Load 37
              40:     39(ptr) AccessChain 30(output) 32 32
                              Store 40 38
              42:     36(ptr) AccessChain 35 32
              43:    6(float) Load 42
              44:     39(ptr) AccessChain 30(output) 32 41
                              Store 44 43
              46:     36(ptr) AccessChain 35 32
              47:    6(float) Load 46
              48:     39(ptr) AccessChain 30(output) 32 45
                              Store 48 47
              49:     36(ptr) AccessChain 35 32
              50:    6(float) Load 49
              51:     39(ptr) AccessChain 30(output) 41
                              Store 51 50
              52:16(ConstantOutputType) Load 30(output)
                              ReturnValue 52
                              FunctionEnd
27(@main(struct-HullInputType-vf3-vf41[3];u1;u1;):22(HullOutputType) Function None 23
       24(patch):     13(ptr) FunctionParameter
     25(pointId):     14(ptr) FunctionParameter
     26(patchId):     14(ptr) FunctionParameter
              28:             Label
      56(output):     55(ptr) Variable Function
              57:     10(int) Load 25(pointId)
              59:     58(ptr) AccessChain 24(patch) 57 32
              60:    7(fvec3) Load 59
              61:     58(ptr) AccessChain 56(output) 32
                              Store 61 60
              62:     10(int) Load 25(pointId)
              64:     63(ptr) AccessChain 24(patch) 62 41
              65:    8(fvec4) Load 64
              66:     63(ptr) AccessChain 56(output) 41
                              Store 66 65
              67:22(HullOutputType) Load 56(output)
                              ReturnValue 67
                              FunctionEnd
