Voxel

A voxel is a pixel that managed to flee from flatland

A voxel is a value in a three-dimensional grid. A bit like a pixel in a image in a two-dimensional grid. Each voxel can contain a single piece of data, such as opacity or multiple pieces such as a color and material. A cell is a group of eight voxels that form a cube.

Content Management

As voxels always is grid based the data set can get big fast. So splitting up it in grids for streaming is a good idea.

Surface extraction

The common way to draw things is with triangles so surface extraction is used to get them. A number of algorithms for that are listed here.

Box/Minecraft Style

For each cell take the voxel with the lowest coordinates and use it to set the material for the whole cell. Each cell is a box primitive with the the coordinates of the corners is the coordinates of each voxel in the cell. For cells that are made of solid material and is beside each other there is no need to create any face on that shared side of the cells. No one can see it as it is inside the wall.

Marching cubes

This algorithm creates a more smooth surface. It works on a single cell at a time and classify each corner of the cell to be inside or outside the surface. That gives 256 possible combinations and that is used to select a layout of the triangles that exist in the cells. Cells where all the voxels generate no triangles at all.

Reference

A Voxel Renderer for Learning C/C++ - 2021

Computing gradients on grids of pixels and voxels – forward, central, and… diagonal differences - 2021

Large Voxel Landscapes On Mobile - 2020

The Spraycan - 2020

Layered voxel rendering - 2019

A level of detail method for blocky voxels - 2018

A Ray-Box Intersection Algorithm and Efficient Dynamic Voxel Rendering - 2018

Voxel terrain: storage - 2017

Voxel terrain: physics - 2017

Optimal grid rendering isn't optimal - 2017

Voxel Rendering Techniques - 2017

Compact Cube Meshes, and Compact Cube Meshes in Unity - 2017

Math for Game Programmers: Voxel Surfing - 2016

Bloxel - Developing a voxel game engine in Java using OpenGL - 2015

20 years of Voxel Engines - 2015

The Poor Man's Voxel Engine - 2015

Isosurface Extraction OBBG: Open Block Building Game - 2015

The Basics of GPU Voxelization - 2015

Craft - 2014

Octree streaming - 2014 - Part 1, Part 2, part 3 and Part 4.

Empirecraft - 2014

Overview of Modern Volume Rendering Techniques for Games - 2013. Part 1 and Part 2.

Morton encoding/decoding through bit interleaving: Implementations - 2013

Ambient occlusion for Minecraft-like worlds - 2013

How we Generate Terrain in DwarfCorp - 2013

Journal Entry 6 – Greedy Mesh Optimization - 2013

Dynamic Sparse Voxel Octrees For Next - Gen Real-Time Rendering - 2012

Project Octant - 2012

Simplifying Isosurfaces 2012 - Part 1 and Part 2.

What is a solid? - 2012

Lighting voxel octrees and procedural texturing - 2012

An Analysis of Minecraft-like Engines - 2012

3D Cube World Level Generation - 2011

Two Uses of Voxels in LittleBigPlanet2’s Graphics Engine - 2011

Minecraft Like Rendering Experiments in OpenGL 4 - 2010

Voxel-Based Terrain for Real-Time Virtual Simulations - 2010

The Transvoxel Algorithm - 2009

A refined data addressing and processing scheme to accelerate volume raycasting - 2004