arise arise
Arise, or Advanced Realistic Image Synthesis Engine is a recursive ray-tracer with basic primitive and shading support. The main objective for Arise was to create a highly optimised RIS engine. Written in C++, it uses only the standard C++ library, and is therefore largely platform independent (currently, runs as Windows console and Linux applications).
They're pixels - in a can!
They're pixels - in a can!
The object intersection routines are reasonably optimal without resorting to assembly language (in order to maintain platform independence), and a spacial subdivision acceleration is provided using octrees. Surface texture support includes solid noise-based and other procedural textures, as well as image mapping. Surfaces may be instanced, to allow many objects to share the same material properties while avoiding duplication of the material in memory.

The polygon intersection routines use Pluecker coordinates - these are fairly quick, although speed-up involving common edges within mesh objects still needs implementation.

Revealing new theories about the make-up of the earth's 
core - cheese? Swiss cheese?
Revealing new theories about the make-up of the earth's core - cheese? Swiss cheese?
Arise also supports Constructive Solid Geometry (CSG) object types that allow boolean operations on all objects. The object-oriented design means that all objects, including CSG and Octree objects can be textured individually, and participate in CSG operations.
Textured primitives
Textured primitives
In its present form, Arise was originally developed in 1995-1996 although it began life as a Pascal program in 1993. The bulk of the original C++ code was written as a final year project during my BSc. in Computer Science course at the University of Technology, Sydney.

Since then, it's been substantially re-written, additional primitive types have been added, as well texturing support, more output file formats, supersampling and many performance optimisations. For testing purposes, Eric Haines' SPD software has been adapted to produce scene files for Arise. More recently, I made an animation with it for use as a flash preloader.

SPD shell
SPD shell
Future plans include replacement of the proprietary SDL with XML (hopefully, with ECMA-scripting), adaptive anti-aliasing, basic animation support and more primitives such as swept surfaces (e.g. surfaces of revolution), other quartics, b-splines and NURBS, as well as additional solid textures. On the performance side, the shading and surface handling could be further inproved, including a 'quick-win' with shadow object caching and / or light buffers, and the octree subdivision criteria could be improved based on the SPD test results.
© 2001 - 2006 sam thompson