> ## Name

> fp40 - OpenGL fragment profile for NVIDIA GeForce 6/7 Series, NV4x-based Quadro FX

> ## Synopsis

>       fp40

> ## Description

> This OpenGL profile corresponds to the per-fragment functionality introduced by the GeForce 6800 and other NV4x-based NVIDIA GPUs.

> The compiler output for this profile conforms to the assembly format defined by NV_fragment_program2.

> Data-dependent loops are allowed with a limit of 256 iterations maximum. Four levels of nesting are allowed.

> Conditional expressions can be supported with data-dependent branching.

> Relative indexing of uniform arrays is not supported; use texture accesses instead.

> ## 3D Api Dependencies

> Requires OpenGL support for the NV_fragment_program2 extension. These extensions were introduced by the GeForce 6800 and other NV4x-based GPUs.

> ## Opengl Extension Specifications

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

> ## Profile Options

> None.

> ## Data Types

> fixed
>   The fixed data type corresponds to a native signed fixed-point integers with the range [-2.0,+2.0), sometimes called fx12. This type provides 10 fractional bits of precision.
> half
>   The half data type corresponds to a floating-point encoding with a sign bit, 10 mantissa bits, and 5 exponent bits (biased by 16), sometimes called s10e5.
> float
>   The half data type corresponds to a standard IEEE 754 single-precision floating-point encoding with a sign bit, 23 mantissa bits, and 8 exponent bits (biased by 128), sometimes called s10e5.

> ## Semantics

> ## Varying Input Semantics

> The varying input semantics in the fp40 profile correspond to the respectively named varying output semantics of the vp40 profile.

>     Binding Semantics Name           Corresponding Data

>     COLOR                            Input primary color
>     COLOR0
>     COL
>     COL0

>     COLOR1                           Input secondary color
>     COL1

>     TEX0                             Input texture coordinate sets 0
>     TEXCOORD0

>     TEX1                             Input texture coordinate sets 1
>     TEXCOORD1

>     TEX2                             Input texture coordinate sets 2
>     TEXCOORD2

>     TEX3                             Input texture coordinate sets 3
>     TEXCOORD3

>     TEX4                             Input texture coordinate sets 4
>     TEXCOORD4

>     TEX5                             Input texture coordinate sets 5
>     TEXCOORD5

>     TEX6                             Input texture coordinate sets 6
>     TEXCOORD6

>     TEX7                             Input texture coordinate sets 7
>     TEXCOORD7

>     FOGP                             Input fog color (XYZ) and factor (W)
>     FOG

>     FACE                             Polygon facing.
>                                      +1 for front-facing polygon or line or point
>                                      -1 for back-facing polygon

> ## Uniform Input Semantics

> Sixteen texture units are supported:

>     Binding Semantic Name            Corresponding Data

>     TEXUNIT0                         Texture unit 0
>     TEXUNIT1                         Texture unit 1
>     ...
>     TEXUNIT15                        Texture unit 15

> ## Output Semantics

>     COLOR                            Output color (float4)
>     COLOR0
>     COL0
>     COL

>     DEPTH                            Output depth (float)
>     DEPR

> ## Standard Library Issues

> Functions that compute partial derivatives are supported.

> ## See Also

> vp40