The source code available here is provided without any guarantees. Feel free to use the code for your projects but please include the following copyright notice:

*Copyright (c) by Wolfgang Stuerzlinger, 1991-1998.
This code may be used only for non-commercial purposes!
Contact address:
*

Commercial agreements on request. If you find bugs please send me a message.

Reads the OpenGL z-buffer and computes the true depth values for all pixels. C-code 1 KB

The hemispherical projection library used in FXFIRE (see below). For a more detailed explanation of the method, see the corresponding paper on my publication page. C++/C-code 21 KB

My discontinuity-meshing library used in FXFIRE (see below) as a separate package (with documentation). C-code 16 KB

Radiosity program with the following features:

- Progressive and hierarchical radiosity.
- Error bounds for hierarchical radiosity.
- Massively parallel progressive radiosity with parallel visibility computations and dynamic load balancing.
- Meshing for arbitrary convex polygons.
- Meshing with Delaunay triangulation and Voronoi diagrams.
- Adaptive discontinuity meshing.
- Hemispherical projection for the computation of exact and approximate local illumination.
- Optimized local pass algorithms.

Available version includes progressive radiosity with arbitrary convex polygons, Delaunay meshing, adaptive discontinuity meshing, discontinuity meshing library, and minimal documentation. C-code 75 KB

Computes the constrained Delaunay triangulation for a set of points and edges. Additional information can be stored with each edge. C-code 14 KB

Note: I am currently using Dani Lischinski's constrained Delaunay triangulation software - it is more stable than mine.

A Tray Racer with the following features:

- Full CSG Ray Tracer (camera may also be inside glass object).
- Bounding volumes: box, sphere.
- Optimization nodes: grid, octree, 5d-tree, cylinder-cube, eye-buffer, shadow-buffer, and repeated-object.
- Light sources: point, ambient, infinity, spot, distribution, sphere, and area (disk, triangle, and sphere).
- Operators: OR, AND, SUB, multiple-OR, multiple-AND.
- Environment mapping.
- Primitives: box, simple box, sphere, simple sphere, cylinder, cone, paraboloid, parabola sweep, hyperboloid, hyperbola sweep, torus, hyper-ellipsoid, polygon, polyhedron (defined by planes), height-field.
- Point clouds for optimal bounding volumes of transformed primitives.

Nonstandard features:

- Auto centering and auto zooming for camera [only define a eye point...].
- Multiple material/surface models.
- Object oriented structure [only one function has to be modified to activate a new object].
- Runtime postfix code evaluation of user defined expressions with interval arithmetic and automatic differentiation. Supported operators include: +, -, *, /, modulo, pow, neg, inv, abs, sgn, sqr, cubic, sqrt, cbrt, exp, ln, sin, cos, tan, cot, asin, acos, atan, acot, floor, ceil, dg2rd, rd2dg, rand, seed, min, max, quadric, ==, !=, <, >, <=, =, and, or, not, if.
*This is used in all modules marked with (*)*. - CPG (=2d CSG) with the following primitives: square, circle, general polygon with straight edges or Bezier, B-Spline, NURBS curves as edges.
*This is used to define 2d contours for the modules marked with (+)*. - Hierarchical textures (*) (2d and 3d), using CPG (+) for 2d, CSG for 3d, and general material mixture nodes (*) [wood, marble, checker, etc.].
- Optimal bounding volume hierarchy using point clouds.
- Advanced operators (*): select, calculate, transform [for graphtal systems defined by a grammar and a cyclic CSG-Graph = fractals, plants, mountains].
- Advanced primitives:
- Translational and conical sweeps, contour defined by CPG (+).
- Free form surfaces: Bezier, B-Spline, and NURBS with quadrilateral and triangular domain. Trimming contour defined by CPG (+).
- User defined surfaces (*) given by {X (u, v), Y (u, v), Z (u, v)} trimming contour defined by CPG (+).
- User defined surfaces (*) given by {u, v, f (u, v)} trimming contour defined by CPG (+).
- User defined surfaces (*) given by F (x, y, z) = 0.

Available version includes all normal features, auto-center/zoom, multiple material models, unfinished texture implementation, German documentation. C-code 178 KB

Wolfgang Stürzlinger

Last modified: 28 October, 1997