Currently browsing tag

volume rendering

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 …

So what is a voxel, really?

When reading about volume rendering on the internet, I discovered an irritating fact: there is no consistent definition of what a ‘voxel’ is. Most certainly when it comes to various rendering engines, everything that renders something which contains cubes/blocky elements gets the voxel renderer tag hastily slapped on. A good …

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, …

Traversing the grid

I’ve been busy implementing the Fast Voxel Traversal algorithm by Amanatides & Woo (PDF). The base algorithm is pretty straightforward, but getting it to give the correct results for all feasible edge cases I can come up with is hard. I don’t want to stuff the code with more and …

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 …

Voxel Renderer: Sparsity

Once the basic stuff was in place, it was fairly easy (half a day’s work) to implement a renderer which supports sparse voxel fields. Next step is opacity. Generating one image at 600×600 with 64x64x64 voxels in place renders at 15 fps, but that’s without any optimization. For example, there’s …

Voxel Renderer: got it right this time

After a bit of experimenting with the boost::round functionality, the solution to the numeric instability problem was (of course) a lot simpler. The current implementation runs at 25 fps for a 600×600 resolution – pure software rendering. If you don’t know anything about volume rendering or voxels, what you can …

Birth of a Voxel renderer

In the beginning of february, I started implementing a voxel-based renderer for my PhD. Starting from scratch was painful, but it taught me a lot about 3D geometry & maths and C++. To all you C++ enthousiasts out there, print this out and put it on a wall: Every time …