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
|