Cg Toolkit Cg 3.1 Toolkit Documentation
Cg / Profiles / vp40

Name

vp40 - OpenGL vertex profile for NVIDIA GeForce 6/7 Series, NV4x-based Quadro FX

Synopsis

  vp40

Description

This OpenGL profile corresponds to the per-vertex 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_vertex_program3 and ARB_vertex_program.

Data-dependent loops and branching are allowed.

Relative indexing of uniform arrays is supported.

Texture accesses are supported. However substantial limitations on vertex texturing exist for hardware acceleration by NV4x hardware.

NV4x hardware accelerates vertex fetches only for 1-, 3-, and 4-component floating-point textures. NV4x hardware does not accelerated vertex-texturing for cube maps or 3D textures. NV4x does allow non-power-of-two sizes (width and height).

3D Api Dependencies

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

Opengl Extension Specifications

 http://www.opengl.org/registry/specs/NV/vertex_program3.txt
 http://www.opengl.org/registry/specs/ARB/vertex_program.txt

Profile Options

PosInv=val
Non-zero means generates code for position-invariant (with fixed-function) position transformation.
NumTemps=val
Maximum number of temporary registers the implementation supports. Set to the implementaiton-dependent value of GL_MAX_NATIVE_TEMPORARIES_ARB for best performance.
MaxAddressRegs=val
Maximum number of address registers the implementation supports. Set to the implementaiton-dependent value of GL_MAX_NATIVE_ADDRESS_REGISTERS_ARB for best performance.
MaxInstructions=val
Maximum number of instructions the implementation supports. Set to the implementaiton-dependent value of GL_MAX_NATIVE_INSTRUCTIONS_ARB for best performance.
MaxLocalParams=val
Maximum number of local parameters the implementation supports.

Data Types

float
This profile implements the float data type as IEEE 32-bit single precision.
half
double
half and double data types are treated as float.
int
The int data type is supported using floating point operations, which adds extra instructions for proper truncation for divides, modulos and casts from floating point types. Because integer values are simulated with IEEE single-precision floating-point, they are accurate over the range -2^24 to 2^24 but will not overflow like true integers.
fixed
sampler*
This profile does not support any operations on the fixed or sampler* data types, but does provide the minimal partial support that is required for these data types by the core language spec (i.e. it is legal to declare variables using these types, as long as no operations are performed on the variables).

Semantics

Varying Input Semantics

The set of binding semantics for varying input data to vp40 consists of POSITION, BLENDWEIGHT, NORMAL, COLOR0, COLOR1, TESSFACTOR, PSIZE, BLENDINDICES, and TEXCOORD0-TEXCOORD7. One can also use TANGENT and BINORMAL instead of TEXCOORD6 and TEXCOORD7.

Additionally, a set of binding semantics ATTR0-ATTR15 can be used. These binding semantics map to NV_vertex_program3 input attribute parameters.

The two sets act as aliases to each other on NVIDIA GPUs excluding Apple Macs. ATI GPUs and NVIDIA Mac GPUs do not alias the conventional vertex attributes with the generic attributes.

Binding Semantics Name        Corresponding Data

POSITION, ATTR0              Input Vertex, Generic Attribute 0

BLENDWEIGHT, ATTR1           Input vertex weight, Generic Attribute 1

NORMAL, ATTR2                Input normal, Generic Attribute 2

DIFFUSE, COLOR0, ATTR3       Input primary color, Generic Attribute 3

SPECULAR, COLOR1, ATTR4      Input secondary color, Generic Attribute 4

TESSFACTOR, FOGCOORD, ATTR5  Input fog coordinate, Generic Attribute 5

PSIZE, ATTR6                 Input point size, Generic Attribute 6

BLENDINDICES, ATTR7          Generic Attribute 7

TEXCOORD0-TEXCOORD7,         Input texture coordinates (texcoord0-texcoord7)
ATTR8-ATTR15                 Generic Attributes 8-15

TANGENT, ATTR14              Generic Attribute 14

BINORMAL, ATTR15             Generic Attribute 15

Uniform Input Semantics

C0-C255           Constant register [0..255].
                  The aliases c0-c255 (lowercase) are also accepted.

If used with a variable that requires more than one constant register (e.g. a matrix), the semantic specifies the first register that is used.

TEXUNIT0-TEXUNIT15  Texture unit (but only 4 distinct texture units
                    are allowed)

Output Semantics

Binding Semantics Name        Corresponding Data

POSITION, HPOS                Output position

PSIZE, PSIZ                   Output point size

FOG, FOGC                     Output fog coordinate

COLOR0, COL0                  Output primary color

COLOR1, COL1                  Output secondary color

BCOL0                         Output backface primary color

BCOL1                         Output backface secondary color

TEXCOORD0-TEXCOORD7,          Output texture coordinates
TEX0-TEX7

CLP0-CL5                      Output Clip distances

Standard Library Issues

Standard library routines for texture cube map and rectangle samplers are not supported by vp40.

See Also

fp40


Cg Toolkit | Cg Toolkit | Download | Release Archive | Profiles | Reference | Books | Discussions |


Cg Profiles

arbfp1
arbvp1
ds_5_0
fp20
fp30
fp40
glslf
glslg
glsl
glslv
gp4fp
gp4gp
gp4
gp4vp
gp5fp
gp5gp
gp5
gp5tcp
gp5tep
gp5vp
gs_4_0
gs_5_0
hlsl10
hlsl11
hlslf
hlslv
hs_5_0
ps_1_1
ps_1_2
ps_1_3
ps_2_0
ps_2_sw
ps_2_x
ps_3_0
ps_4_0
ps_5_0
vp20
vp30
vp40
vs_1_1
vs_2_0
vs_2_sw
vs_2_x
vs_3_0
vs_4_0
vs_5_0