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