Isosurface Algorithms

Overview

As part of my honours research, I created an application which allowed the user to edit voxel terrain using several techniques. The terrain was polygonised using isosurface techniques, including modified marching cubes and a dual contouring algorithm. In an effort to improve the efficiency, both the marching cubes algorithm and dual contouring algorithm were implemented on the GPU through the compute shader.

    Features:
  • Renderer written in DirectX 12
  • Marching Cubes
  • Surface Nets
  • Dual Contouring
  • Simple Terrain Sculpting

Marching Cubes

I implemented marching cubes on the compute shader adapting paul bourke's algorithm initially written on the CPU.

For future, I aim to write an alternative algorithm which takes advantage of GPGPU techniques using a prefix scan to generate global indices and avoid using atomic increments to store triangles.

A snippet of marching cubes textured in engine.
A snippet of marching cubes textured in engine.

Surface Nets

I implemented Surface Nets on the compute shader based on some psuedo code aquired from a paper discussing the Isosurface algorithm.

In future work, I plan on implementing a version of the algorithm taking advantage of GPGPU techniques similarly to Marching Cubes.

A snippet of dual contouring in wire frame.
A snippet of dual contouring in wire frame.

FOOTER

This is where all the legal stuff goes I reckon.

POPULAR TAGS

Engine Programming Graphics Programming Software Engineering C++ C# HLSL Direct X Game Programming GLSL

Rhys Duff Portfolio