NAME

gp4gp - OpenGL geometry profile for G8x (GeForce 8xxx Series, G8x-based Quadro FX, etc.)

SYNOPSIS

  gp4gp

DESCRIPTION

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.txt 

New texture samplers:

 www.opengl.org/registry/specs/EXT/texture_array.txt 
 www.opengl.org/registry/specs/EXT/texture_buffer_object.txt 

PROFILE 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