> ## Name

> gp5tcp - OpenGL tessellation control profile for NVIDIA GeForce 400/500 Series, OpenGL 4.x Quadro

> ## Synopsis

>       gp5tcp

> ## Description

> This OpenGL profile corresponds to tessellation control functionality introduced by NVIDIA's 5th generation of assembly instruction sets.

> The compiler output for this profile conforms to the assembly format defined by NV_tessellation_program, NV_gpu_program5 and ARB_vertex_program.

> ## 3D Api Dependencies

> Requires OpenGL support for the NV_gpu_program5 extension.

> ## Opengl Extension Specifications

>      http://www.opengl.org/registry/specs/NV/gpu_program5.txt

>      http://www.opengl.org/registry/specs/NV/tessellation_program5.txt

> ## Profile Options

> All gp4 profile options are also available in gp5tcp.

> ## Tessellation Control Domain-Specific Gp5 Options

> PATCH_1 ... PATCH_32
>   Specify the number of control points associated with each patch. Must be in the range [1,32]. The input varying AttribArrays parameter size is also this value.

> The tessellation control shader will fail to load if PATCH_1 ... PATCH_32 is not specified as a profile option for the primitive type.

> Usually the primitive input parameter is specified as a profile modifier preceding the Cg entry function.

> ## Semantics

> ## Varying Input Semantics

> The varying input semantics in the gp5tcp profile correspond to the respectively named varying output semantics of the gp5vp profile. The exception is the CONTROLPOINT_ID semantic.

>     Binding Semantics Name       Corresponding Data

>     CONTROLPOINT_ID              An input integer corresponding to the control point's input order.

> ## Varying Output Semantics

> The varying output semantics in the gp5tcp profile correspond to the respectively named varying input semantics of the gp5tep profile. The two exceptions are the LOD parameters consumed by the tessellation primitive generator.

>     Binding Semantics Name       Corresponding Data

>     EDGETESS                     Output float array corresponding to outer tessellation level.
>                                  (Size of array = 3 for triangle patches, 4 for quad patches.)

>     INNERTESS                    Output float array corresponding to inner tessellation level.
>                                  (Size of array = 1 for triangle patches, 2 for quad patches.)

>     PATCH                        Output per-patch attribute.

> An index does not need to be specified for other attributes. The output attributes are mapped to their corresponding control point array entry for subsequent shader stages.

> For example the following will simply pass-through the control point's position to the evaluation shader:

>     void main(
>       in int id                          : CONTROLPOINT_ID,
>       in AttribArray<float3> inPositions : POSITION,
>       out position                       : POSITION)
>       {
>         position = inPositions[id];
>       }

> ## See Also

> gp5, gp5tep, gp5vp, gp5gp, gp5fp