Project page

Another Reality Engine, C/C++ open source 3D rendering engine


About


The ultimate goal of this project is to build a full featuring 3D rendering engine that will emphasize in speed, low memory foot print, advanced rendering capability, versatility and portability.

Screenshot




What is a 3D engine ?


A 3D engine is a piece of software designed to render in real-time a 2D view of a world described with 3D coordinates. It should abstract the very complexity of this process so that the user, the main application, only focuses on describing a world as detailed as possible using simple primitives.


Here is a diagram of the current ARE3D architecture.

- For speed and low memory footprint: C/C++ is must.
- For fast and advanced rendering: shader support.
- For portability: SDL and OpenGL are the most widely available graphics lib, though DirectX support port is still left.
To show the versatiliy of the engine, two sample program have been developped, one test program is fullscreen SDL version, and the other is a windowed toolkit application using FLTK.

Project status


The ARE engine currently support the following features:
- Fullscreen/windowed rendering using SDL
- Triangle and quad rendering
- Skybox
- Multi-texturing
- OpenGL shader program
- Dynamic lighting
- Per pixel lighting via shader or bump mapping
- Dynamic shadow through the Z-Pass algorithm
- 3DS file import
- Sound playing
- Joystick input

Concerns


Current projects objectives are:
- Rework the rendering structure in order to minimize opengl change state commands during rendering thus maximizing rendering throughput.
- Being able to toggle through software and hardware transform.
- Reunifying rendering procedure by eliminating special cases.


This diagram show the possible path for the data to render.
The main challenge right now is to be able to handle all the possible rendering path under one simple code trunk.

Download


http://nicolasmy.com/projects/another_reality.tgz

Status


This project is stopped now in favour of rewrite toward OpenGL ES 2.0 in order to target the iOS and Android platforms and with cleaner design in mind.