Current specification of the voxel game engine:
- The game screen: 256^3 voxels in a viewable world (from all directions.)
- Colour format: RGB8
- Voxel file format: v3a (can support other raw/compressed/binary formats including MRI/CT scan images.)
- Bitmap mode: size 256^3 voxels, static image (can support scrolling.)
- Tile mode: 16^3 tiles in the viewable world (screen), scrolls in all directions.
- Tile size: 16^3 voxels
- Number of tiles definable: 256 tiles (in memory. Can swap out from a file.)
- Tile map size: max 16^3 screens
- Tile animation: by swapping tiles (flip animation)
- Sprites: 3D sprites (rendered together with tiles at correct depth, and sorted.)
- Sprite size: 16^3 voxels
- Number of Sprites: 256 can be defined. Max up to 32 on the screen (can be increased with performance penalty.)
- Sprite rotation: around Y axis (can support all directions.)
- Sprite animation: by swapping sprites (flip animation)
- Sprite/Tile Lighting/Shadow: pseudo per voxel dynamic lighting/shading (could consider supporting other methods.)
(Sprite/Tile Shadow: casts straight shadow from above)currently disabled- Scripting support: LUA (planned)
Rendering method and optimization:
- iso surface/volume rendering by volume raycasting (1st ray of raytracing. Not a heightmap engine. Not marching cubes algorithm.)
- Early ray termination
- Empty space skipping (Space subdivision by uniform grid like structure. Not octree.)
- CPU software version is Multithreaded (splits the world in sections for rendering in parallel. Increases in performance with more cores. Tested on 1 core CPU system to 32 cores - Opteron. Would love to try it on the Ryzen Threadripper processor!)
- GPU shader version runs on desktop NVIDIA/AMD GPUs, and on high end mobile GPUs.
Optional features:
- Stereoscopic 3D, supports:
- Head tracking support (camera + infrared LED based detection with OpenCV based image processing.)
- Augmented Reality support: The renderer was designed to support AR use. It will overlay/draw the voxel game screen in correct perspective within a bounded cube, given the 2D screen coordinates of the 8 vertices of the cube. It does not require to know the 3D coordinates of the vertices of the cube.
- Virtual Reality (under development for Oculus Rift)
- Shutter method (tested on Vuzix VR920. Can support NVIDIA 3D Vision.)
- Side by side method (untested on device, should work on Vuzix Wrap. Tested on youtube.)
- Interleave method (tested on Zalman 3D monitor + polarized 3D glasses.)
- Anaglyph (should work in theory.)
Supported platforms:
-
Software version rendering on the CPU:
- Mac OSX
- Windows XP/Vista
- Linux
- iPhone iOS
- Android
- Unity
- XBOX One
- GPU (GLSL/HLSL shader)
- Minimum 2.0GHz Dual Core CPU recommended for a playable (30fps) performance. At least 512MB RAM, 1GB or 2GB or more recommended. Currently the file size of data are uncompressed, so it requires relatively large HD storage space.
- Good performance (60fps+) on AMD FX 8320 8 core CPU, 8/16GB RAM. Would require Ryzen grade processor for VR/Stereo rendering.
Shader version rendering on the GPU:
- HLSL/GLSL supported (Open GL/ES 3.0+, Shader Model 3) NVIDIA, AMD and mobile graphics card/processor. (And with any average CPU.)
Development environment:
- Mac OSX, XCode, Unity
- Windows PC, Visual Studio, C++ Builder, Unity
- Linux, GCC
Programming languages and libraries used:
- C++, C#, SDL, OpenGL, OpenGL ES, OpenMP, GLSL, HLSL
- OpenCV, and other stereoscopic 3D libraries. (for optional features.)
Methods of voxel data creation:
- Voxel graphics authoring tools
- Polygon model to voxel conversion
- 3D scanning (e.g. Voxel coloring, 3D laser scan, MRI/CT scan etc.)
In particular, Ken Silverman's web site has many useful tools.