Class ARBFragmentProgram
- java.lang.Object
-
- org.lwjgl.opengl.ARBFragmentProgram
-
public final class ARBFragmentProgram extends java.lang.Object
Native bindings to the ARB_fragment_program extension.Unextended OpenGL mandates a certain set of configurable per- fragment computations defining texture application, texture environment, color sum, and fog operations. Several extensions have added further per-fragment computations to OpenGL. For example, extensions have defined new texture environment capabilities (ARB_texture_env_add,
ARB_texture_env_combine
,ARB_texture_env_dot3
, ARB_texture_env_crossbar), per-fragment depth comparisons (ARB_depth_texture
,ARB_shadow
,ARB_shadow_ambient
, EXT_shadow_funcs), per-fragment lighting (EXT_fragment_lighting, EXT_light_texture), and environment mapped bump mapping (ATI_envmap_bumpmap).Each such extension adds a small set of relatively inflexible per-fragment computations.
This inflexibility is in contrast to the typical flexibility provided by the underlying programmable floating point engines (whether micro-coded fragment engines, DSPs, or CPUs) that are traditionally used to implement OpenGL's texturing computations. The purpose of this extension is to expose to the OpenGL application writer a significant degree of per-fragment programmability for computing fragment parameters.
For the purposes of discussing this extension, a fragment program is a sequence of floating-point 4-component vector operations that determines how a set of program parameters (not specific to an individual fragment) and an input set of per-fragment parameters are transformed to a set of per-fragment result parameters.
The per-fragment computations for standard OpenGL given a particular set of texture and fog application modes (along with any state for extensions defining per-fragment computations) is, in essence, a fragment program. However, the sequence of operations is defined implicitly by the current OpenGL state settings rather than defined explicitly as a sequence of instructions.
This extension provides an explicit mechanism for defining fragment program instruction sequences for application-defined fragment programs. In order to define such fragment programs, this extension defines a fragment programming model including a floating-point 4-component vector instruction set and a relatively large set of floating-point 4-component registers.
The extension's fragment programming model is designed for efficient hardware implementation and to support a wide variety of fragment programs. By design, the entire set of existing fragment programs defined by existing OpenGL per-fragment computation extensions can be implemented using the extension's fragment programming model.
LWJGL: This extension defines many functions and tokens that are also defined in
ARB_vertex_program
. Since these two extensions are often used together, the common functionality has only been exposed byARB_vertex_program
, to avoid static import conflicts.
-
-
Field Summary
Fields Modifier and Type Field and Description static int
GL_FRAGMENT_PROGRAM_ARB
Accepted by thecap
parameter of Disable, Enable, and IsEnabled, by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev, and by thetarget
parameter of ProgramStringARB, BindProgramARB, ProgramEnvParameter4[df][v]ARB, ProgramLocalParameter4[df][v]ARB, GetProgramEnvParameter[df]vARB, GetProgramLocalParameter[df]vARB, GetProgramivARB and GetProgramStringARB.static int
GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB
GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB
GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB
GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB
GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB
GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARBAccepted by thepname
parameter of GetProgramivARB.static int
GL_MAX_TEXTURE_COORDS_ARB
GL_MAX_TEXTURE_IMAGE_UNITS_ARBAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.static int
GL_PROGRAM_ALU_INSTRUCTIONS_ARB
GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB
GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB
GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB
GL_PROGRAM_TEX_INDIRECTIONS_ARB
GL_PROGRAM_TEX_INSTRUCTIONS_ARBAccepted by thepname
parameter of GetProgramivARB.
-
-
-
Field Detail
-
GL_FRAGMENT_PROGRAM_ARB
Accepted by thecap
parameter of Disable, Enable, and IsEnabled, by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev, and by thetarget
parameter of ProgramStringARB, BindProgramARB, ProgramEnvParameter4[df][v]ARB, ProgramLocalParameter4[df][v]ARB, GetProgramEnvParameter[df]vARB, GetProgramLocalParameter[df]vARB, GetProgramivARB and GetProgramStringARB.
-
GL_PROGRAM_ALU_INSTRUCTIONS_ARB, GL_PROGRAM_TEX_INSTRUCTIONS_ARB, GL_PROGRAM_TEX_INDIRECTIONS_ARB, GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB, GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB, GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB, GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB, GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB, GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB, GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB, GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB, GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB
Accepted by thepname
parameter of GetProgramivARB.
-
GL_MAX_TEXTURE_COORDS_ARB, GL_MAX_TEXTURE_IMAGE_UNITS_ARB
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.
-
-