logo.png

Description

FFP (Fixed-Function Pipeline) is a software 2D/3D graphics engine written in pure Java.

The engine provides a large number of features and some of the fastest accurate software rendering available for Java.

Specifications


Click here to see the OpenGL® functions that FFP supports as well as the functions that only FFP has.

Click here to see a list of symbolic constants in FFP along with their numerical value and a short description of what each does and where each is used.


References

Special Thanks To

Contact Info

Feel free to contact me at ffpgfx@gmail.com

Examples and Downloads


Download a ZIP archive of version 1.0.4 of the FFP Graphics Engine here: ffp_1_0_4.zip

Download a ZIP archive of all of the following examples here: ffp_examples.zip

Documentation for the engine is found here: FFP Documentation


All of the following example applications extend this class: DemoBase.java

Some of the following example applications implement this interface: jitter_h.java


Antialiasing using the accumulation buffer with an orthographic projection: accanti.java

accanti.png

Antialiasing using the accumulation buffer with a perspective projection: accpersp.java

accpersp.png

Basic 2D Graphics: basic2d.java

basic2d.png

A form of downsampling called "block filtering" which is best described as a poor man's mipmapping.: blockfilter.java

blockfilter.png

Chaos demonstrated using Feigenbaum's constant: chaos.java

chaos.png

Texture mapping and texture filters: checker.java

checker.png

Clipping a sphere with two arbitrary clipping planes: clip.java

clip.png

Cloth Simulation : cloth.java

cloth.png

A Color Cube: colorcube.java

colorcube.png

Demonstration of color material mode: colormat.java

colormat.png

Simple 3D cube: cube.java

cube.png

Dithering to a palette: dither.java

dither.png

Double mapping (multi-texturing) example: dmtex.java

dmtex.png

Depth of field with the accumulation buffer: dof.java

dof.png

Exponential fog: fog.java

fog.png

Gamma testing: gamma.java

gamma.png

Gears program, taken from the Mesa 3D demos: gears.java

gears.png

3D Function Graphing. Some functions are taken from https://www.benjoffe.com/code/tools/functions3d/examples: graph3d.java

graph3d.png

Picking by using the ID buffer: idbuf.java

idbuf.png

Line Stippling: lines.java

lines.png

The Mandelbrot Set: mandelbrot.java

mandelbrot.png

Grid of Different Materials: material.java

material.png

Modeling Transformations: model.java

model.png

Motion blur using the accumulation buffer: motionblur.java

motionblur.png

Moving a light source around a torus: movelight.java

movelight.png

Moving multiple colored light sources around a torus: movelights.java

movelights.png

Parametric graphing: parametric.java

parametric.png

Polar graphing: polar.java

polar.png

Polyhedra routines in FFPAUX: polyhedra.java

polyhedra.png

Polygon offset to draw wireframes without z-fighting: polyoff.java

polyoff.png

Polygon stippling: polys.java

polys.png

Primitives: prim.java

prim.png

Advanced demonstration of the FFPAUX quadric routines: quad.java

quad.png

Quadric routines: quadric.java

quadric.png

Rendering to a texture by copying the frame buffer into a texture: render2tex.java

render2tex.png

Robot arm showing composite modeling transformations: robot.java

robot.png

Image rotation: rotate.java

rotate.png

Simple scene with lighting: scene.java

scene.png

Screendoor transparency: screendoor.java

screendoor.png

Cube with a shadow projected onto two planes: scube.java

scube.png

Shadows created by lightmapping: shadow.java

shadow.png

Shadows created by shadow mapping: shadowmap.java

shadowmap.png

Sierpinski triangle created using a simple algorithm: sierpinski.java

sierpinski.png

Smooth vertex color interpolation: smooth.java

smooth.png

Phong shaded torus: smoothtorus.java

smoothtorus.png

Sphere mapping with lighting and double texturing: spheremap.java

spheremap.png

Grid of spheres with semi-realistic materials: spheres.java

spheres.png

Spotlights: spot.java

spot.png

3D Starfield: star.java

star.png

Steam engine converted from https://www.opengl.org/archives/resources/code/samples/glut_examples/contrib/steam.c: steam.java

steam.png

Replacing a part of a texture: texsub.java

texsub.png

Clipping three tori with an arbitrary clipping plane: torusclip.java

torusclip.png

Post render image filters: vidfilter.java

vidfilter.png

Returning depth information to the screen: vrd.java

vrd.png

Water surface created from perlin noise and trig functions. This is a highly modified version of this program: http://www.lousodrome.net/opengl/#water: watersurf.java

watersurf.png

Stored frame-by-frame animation of a wave: wave.java

wave.png

Demonstrating why proper depth ordering is needed for scene realism: zbuf.java

zbuf.png

DISCLAIMER: Some code examples were written by other authors

This website was last updated on Thursday July 6, 2017

© 2017 MIREMADI