NAME
gp4gp - OpenGL geometry profile for G8x (GeForce 8xxx Series, G8x-based Quadro FX, etc.)
SYNOPSIS
gp4gpDESCRIPTION
This OpenGL profile corresponds to the per-primitive functionality introduced by the GeForce 8800 and other G8x-based NVIDIA GPUs.
The compiler output for this profile conforms to the assembly format defined by NV_gpu_program4 and ARB_vertex_program.
Note that the NV_gpu_program4 extension has its vertex domain-specific aspects documented in the NV_geometry_program4 specification.
Data-dependent loops and branching are allowed.
Relative indexing of uniform arrays is supported.
Parameter buffer objects (also known as "constant buffers" in DirectX 10 or "bindable uniform" in GLSL's EXT_bindable_uniform extension) provide a way to source uniform values from OpenGL buffer objects.
Texture accesses include support for texture arrays (see the EXT_texture_array OpenGL extension for more details) and texture buffer objects (see the EXT_texture_buffer_object extension for details).
3D API DEPENDENCIES
Requires OpenGL support for the NV_gpu_program4 extension. This extension was introduced by the GeForce 8800 and other G8x-based GPUs.
OpenGL Extension Specifications
Programmability:
www.opengl.org/registry/specs/NV/gpu_program4.txt www.opengl.org/registry/specs/NV/geometry_program4.txtNew texture samplers:
www.opengl.org/registry/specs/EXT/texture_array.txt www.opengl.org/registry/specs/EXT/texture_buffer_object.txtPROFILE OPTIONS
Common GP4 Options
- fastimul
Assume integer multiply inputs have at most 24 significant bits. Example: "-po fastimul"
Geometry Domain-specific GP4 Options
Normally the options below to specify primitive input and output type are better specified as a profile modifier preceding the Cg entry function.
- Vertices=val
Maximum number of output vertices. Emitting more than this number of vertices results in the extra vertices being discarded. Example "-po Vertices=3"
On NVIDIA GPUs, the throughput for geometry shaders is inverse proporational to the maximum number of vertices output times the number of scalar components per vertex. For this reason, keep the maximum number of output vertices as small as possible for best performance.
- POINT
The entry function inputs point primitives. Example: "-po POINT"
If an output primitive is not also specified with a command line profile option, POINT_OUT is assumed.
Normally this is option is better specified as a profile modifier preceding the Cg entry function.
- LINE
The entry function inputs line primitives. Example: "-po LINE"
If an output primitive is not also specified with a command line profile option, LINE_OUT is assumed.
Normally this is option is better specified as a profile modifier preceding the Cg entry function.
- LINE_ADJ
The entry function inputs line adjacency primitives. Example: "-po LINE_ADJ"
If an output primitive is not also specified with a command line profile option, LINE_OUT is assumed.
Normally this is option is better specified as a profile modifier preceding the Cg entry function.
- TRIANGLE
The entry function inputs triangle primitives. Example: "-po TRIANGLE"
If an output primitive is not also specified with a command line profile option, TRIANGLE_OUT is assumed.
Normally this is option is better specified as a profile modifier preceding the Cg entry function.
- TRIANGLE_ADJ
The entry function inputs triangle adjacency primitives. Example: "-po TRIANGLE_ADJ"
If an output primitive is not also specified with a command line profile option, TRIANGLE_OUT is assumed.
- POINT_OUT
The entry function outputs point primitives. Example: "-po POINT_OUT"
Normally this is option is better specified as a profile modifier preceding the Cg entry function.
- LINE_OUT
The entry function outputs line primitives. Example: "-po LINE_OUT"
Normally this is option is better specified as a profile modifier preceding the Cg entry function.
- TRIANGLE_OUT
The entry function outputs triangle primitives. Example: "-po TRIANGLE_OUT"
Normally this is option is better specified as a profile modifier preceding the Cg entry function.
DATA TYPES
to-be-written
SEMANTICS
VARYING INPUT SEMANTICS
to-be-written
UNIFORM INPUT SEMANTICS
to-be-written
OUTPUT SEMANTICS
to-be-written
STANDARD LIBRARY ISSUES
to-be-written