> ## Name

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

> ## Synopsis

>       gp5tep

> ## Description

> This OpenGL profile corresponds to tessellation evaluation 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 gp5tep.

> ## Tessellation Evaluation Domain-Specific Gp5 Options

> Normally the options below to specify primitive input and output parameters are better specified as a profile modifier preceding the Cg entry function. The tessellation evaluation shader will fail to load if either TRIANGLES, QUADS, or ISOLINES is not specified, and PATCH_1 ... PATCH_32 is not specified as profile options for the primitive type.

> PATCH_1 ... PATCH_32
>   This specifies the number of control points associated with this patch. Must be 1 - 32 control points. This option affects the size of the AttribArrays associated with the input varying parameters.
> TRIANGLES
>   Specifies that the input patch is a triangular patch. This affects the data type for the input varying semantics UV and TESSCOORD.
> QUADS
>   Specifies that the input patch is a quadrangular patch. This affects the data type for the input varying semantics UV and TESSCOORD.
> ISOLINES
>   The patch is drawn as a set of lines going in one parametric direction.
> POINT_MODE
>   Specifies that the tessellation primitive generator will emit points for each vertex in the subdivided primitive instead of lines or triangles.
> ORDER_CCW
>   Specifies counter clock-wise ordering of the output triangles emitted by the tessellation primitive generator. ORDER_CW is used by default.
> ORDER_CW
>   Specifies clock-wise ordering of the output triangles emitted by the tessellation primitive generator. ORDER_CW is used by default.
> SPACE_FRACTIONAL_EVEN
>   Specifies that the spacing of vertices emitted by the tessellation primitive generator can be fractional (non-integer) values, and the even spacing algorithm is used to perform the tessellation. Default is SPACE_EQUAL.
> SPACE_FRACTIONAL_ODD
>   Specifies that the spacing of vertices emitted by the tessellation primitive generator can be fractional (non-integer) values, and the odd spacing algorithm is used to perform the tessellation. SPACE_EQUAL is used by default.
> SPACE_EQUAL
>   Specifies that the spacing of vertices emitted by the tessellation primitive generator are clamped to integer values. This is the default option.

> ## Semantics

> ## Varying Input Semantics

> The varying input semantics in the gp5tep profile correspond to the respectively named varying output semantics of the gp5vp profile. All input semantics must use the AttribArray template-style syntax. The reason for this is because an evaluation shader must be able to see outputs of all control points of the patch to evaluate its unique position/outputs. The size of this AttribArray is determined by the PATCH_1 ... PATCH_32 profile parameter.

> Example defining an input varying parameter which are output attributes of the control points' gp5tcp invocations:

>       AttribArray< float3 > position : POSITION

> There are additional input semantics specific to a gp5tep shader and these do not use an AttribArray type for input. They are as follows:

>     Binding Semantics Name           Corresponding Data

>     TESSCOORD                        Input u,v,w coordinates for the current vertex in a triangle patch.

>     UV                               Input u,v coordinates for the current vertex in a quad patch.

>     PATCH                            Input per-patch attribute.

> ## See Also

> gp5, gp5tcp, gp5vp, gp5gp, gp5fp