NAME
gp4fp - OpenGL fragment profile for G8x (GeForce 8xxx Series, G8x-based Quadro FX, etc.)
SYNOPSIS
gp4fpDESCRIPTION
This OpenGL profile corresponds to the per-fragment 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_fragment_program.
Note that the NV_gpu_program4 extension has its vertex domain-specific aspects documented in the NV_program_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 6800 and other G8x-based GPUs.
OpenGL Extension Specifications
Programmability:
www.opengl.org/registry/specs/NV/gpu_program4.txt www.opengl.org/registry/specs/NV/fragment_program4.txtNew texture samplers:
www.opengl.org/registry/specs/EXT/texture_array.txt www.opengl.org/registry/specs/EXT/texture_buffer_object.txtDraw buffers:
www.opengl.org/registry/specs/ARB/draw_buffers.txt www.opengl.org/registry/specs/ATI/draw_buffers.txtPROFILE OPTIONS
Common GP4 Options
- fastimul
Assume integer multiply inputs have at most 24 significant bits. Example: "-po fastimul"
Fragment Domain-specific GP4 Options
- ARB_draw_buffers=val
- ATI_draw_buffers=val
Indicates that the ARB_draw_buffers or ATI_draw_buffers OpenGL extension is supported and what the extension's implementation dependent value of GL_MAX_DRAW_BUFFERS_ARB or GL_MAX_DRAW_BUFFERS_ATI is.
When specified, the compiler generates the "OPTION ARB_draw_buffers;" or "OPTION ATI_draw_buffers;" in the compiled code to enable output to multiple draw buffers. Output to multiple draw buffers is done by specifying output parameters with the COLOR1, COLOR2, etc. semantics.
GPUs that support these extensions typically support up to 4 buffers.
These options are useful in the rare situation you want to control the specific OPTION name used. For example, Apple drivers support the ARB_draw_buffers extension but not the ATI_draw_buffers extension.
The CgGL runtime routine cgGLSetOptimalOptions will automatically add the appropriate option based on querying the current OpenGL context's extension support (prefering the ARB extension) and specify the proper limit.
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