ZeeSpace
 
ZeeSpace

ZeeSpace - A 2.5D Rendering Engine

What is ZeeSpace?

ZeeSpace is a "2.5D" rendering engine, geared towards real time rendering of structured graphics. It is intended for use in 2D and 3D game engines, to generate graphics when installing or starting the application, or in real time.

ZeeSpace aims to be a way of sqeezing high quality graphics into very small downloads, as well as a way of generating dynamic graphics in applications that would otherwise require unrealistic volumes of prerendered data.

What is ZeeSpace not?

  • ZeeSpace is not a 3D engine. It has a "3D" preview feature, but that's about as close as it gets.
  • It is not a complete game engine.
  • It is not an image editing or 3D modelling tool. However, such tools may use ZeeSpace as a rendering backend.
  • It is not a compression tool. To "compress" an image with it, you need to resynthesize the image using ZeeSpace rendering primitives. Given sufficiently large tolerances, the data needed to reconstruct the image can potentially compress to a fraction of the size of the original image.
  • It is not a file format. However, the plan is to use it as the rendering backend for a structured graphics file format.

How does it work?

(The text below is based on the initial prototype. Details are likely to change.)

ZeeSpace is based on an internal surface format with six channels; Red, Green, Blue, Alpha, Intensity and Z, or RGBAIZ, for short. The R, G, B and A channels have 8 bits per pixel. The I and Z channels have 16 bits per pixel, because they need the extra accuracy and dynamic range to avoid visible artifacts.

ZeeSpace is basically just a library of surface oriented, semi-low level 2.5D blitting and rendering functions that can be used and combined in various ways, pretty much like a normal 2D graphics library. However, the intended method of rendering scenes is something like this:

  1. Render objects into the RGB and Z channels of a surface.
  2. Apply bump mapping and shadow casting based lighting, based on the Z channel, writing to the I channel.
  3. Modulate the RGB channels with the I channel.
  4. Send the resulting RGB data where you want it.
Copyright © 2005-2010 David Olofson