Currently browsing tag

c++

bunny_comparison

Voxel Raycaster: Progress report

After a few weeks of optimizing and getting a lot of good C++ advice from Ares Lagae, I consider my CPU-based voxel raycaster as done. I now have a good framework to test some more interesting stuff on. It offers real-time performance, even for large voxel grids, and I’ve structured the …

Lebesgue-3d-step2

Octree Data Structures

After some days of tweaking my SVO renderer’s performance, it became clear that I needed a more cache-coherent and space-efficient way of storing/accessing the octree data. I decided to start a seperate C++ project that efficiently converts a .binvox Voxel Grid into a Sparse Voxel Octree. Some discussions with my …

dragonwork

Octrees are your friends

After some painstaking debugging (I guess every programmer can start a post like this), I got my Sparse Voxel Octree-based raycaster working. It’s still all CPU-based, to keep things simple for now. As you can see from the following false color images, the efficient skipping of empty space results in …

svn

Phd Web SVN

I’ve put up a WebSVN repository to browse my Phd code. It’s a codebase for an academic project, so don’t expect any ready-for-production-use code. I tend to add a lot of code comments, so it should be quite readable. Dependencies: Visual Studio 2010 OpenMP OpenGL / FreeGlut Boost libraries (latest dev …

work_dragon

Voxel Raycaster: Simply Red

After a short discussion with my promotor Philip Dutré, I rewrote some parts of the basic grid structure to be more compatible with the uninevetable introduction of an octree-based system. No shotgun surgery for me – first I planned it on paper. REAL ACTUAL PAPER. I finished this week by …

Armadillo says booh

Voxel Raycaster: Enter the Stanford zoo

If you’ve looked at some computer graphics literature before, you’ve probably noticed that a lot of models are used over and over again, like the Utah Teapot. Last days, I’ve been working on import functions which allow me to load the Stanford standard benchmark models in and render them, voxelized. …

yuno32

The 32/64 bit DLL confusion on Windows 64-bit

Since I’m developing my PhD renderer for multiple target systems (Win32, x64, LInux, …) I started using the excellent freeGlut project for simple OpenGL windowed output. So after finding the Windows binaries compiled (and maintained) by Max Martin Payne, I look at the contents of the zip file. I was …

voxel_scheme

Voxel Renderer: Spheres and Boundaries

During the last days, I’ve been testing just how much my current renderer implementation can take. My implementation was started from scratch, based on raycasting (eg … interpolating distinct values along a line) in a huge data grid. At the moment it is without any optimization for quick free-space skipping, …

chart_1

Voxel Renderer: Parallellism is key

I’ve implemented a stable version of the Amanatides and Woo algorithm for fast traversal of voxel grids and added some optimisations and support for non-square voxels. After reading up on OpenMP, I couldn’t stand having a renderer which ran an inherently parallel algorithm on just one CPU. Every ray shot …

realvoxels_small

Voxelicious

I’m going to run out of voxel-based titles and puns real soon. Until then, have some more flying cubes! The sparseness factor influences render time a lot, since there is no efficient skipping of empty space inside the voxel grid. So denser grids render at interactive framerates (>30 fps), because the …