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:
- Render objects into the RGB and Z channels of a surface.
- Apply bump mapping and shadow casting based lighting,
based on the Z channel, writing to the I channel.
- Modulate the RGB channels with the I channel.
- Send the resulting RGB data where you want it.
|