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 level of detail method for blocky voxels - 2018

Voxel terrain: physics - 2017

Optimal grid rendering isn't optimal - 2017

Voxel terrain: storage - 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

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

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

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

Generating Complex Procedural Terrains Using the GPU

Project Octant

The Transvoxel™ Algorithm

The Basics of GPU Voxelization

Generation & Chunk Awareness

The Transvoxel Algorithm

A Ray-Box Intersection Algorithm and Efficient Dynamic Voxel Rendering

Voxel terrain: physics

Voxel terrain: storage

Layered voxel rendering