/vxl

OpenCL Voxel Raycast Engine

IMPORTANT

This project was my very first project in C++ (I primarily used Java before), therefore there will be many memory leaks, weird programming styles and also changes in my style of coding. There are also unsued classes and functions, that I planned on using before I stopped working on VXL.

What is VXL?

  • VXL is a voxel-octree rendering engine running on OpenCL (OpenGL is used for displaying only)
  • (At the moment) it is using a tree based per-pixel search algorithm for rendering voxel models
  • The project is work in progress and not nearly near a finished state and can be seen as an experiment
  • At the moment it is not open source, however I plan on publishing the source code at some time
  • The latest version is VXL Alpha 1.3

Features

  • The program can convert triangulated OBJ-models into VXL-models with a uniform colour
  • Certain variables like resolution, OpenCL-device and so on can be changed in properties files contained within ./props
  • VXL can render 3D voxel models of any size at any resoution as far as they don't exceed the computers memory
  • You view the models from any perspective using WASD for the camera movenent and the arrow keys for the rotation
  • The project is written in C/C++, it can and will in the future therefore be ported to Linux and OSX

Future Plans

  • VXL is supposed to become a game engine at some point, however it is still far from that
  • The idea is that using search algorithms for rendering, "unlimited" detail can be achieved

Requirements

  • Graphics card that supports OpenGL, OpenCL and recursion
  • Microsoft Visual C++ 2015 (get it here)
  • The required memory (also on the GPU) depends on the size of the model you are rendering

How to run VXL

  • Download the file named "vxl..zip" desired version here
  • Extract the folder and modyfy ./props/graphics.properties and ./props/OpenCL.properties to fit your setup
  • Run either "run.bat" or "Voxel.exe"

Preview (VXL Alpha 1.3)

  • The shown model is an octree with 10 subdivisions (model resolution of 1024x1024x1024, screen resolution of 500x500)
  • Used GPU: NVIDIA GTX 750Ti
  • The Polygonal structure in this preview is due to the original model not being very large
  • The .vxl file is ~400MB in size. For reference: each cube contains 3 normal values (32-bit floats) and one colour (32-bit unsigned int), file size for this model using a simple 1024x1024x1024-matrix would be 16GB

Preview