2016-12-18

I'm building a voxel engine for a destructible chunked (split into same-sized rectangular blocks) voxel terrain.

Previously, I've written a simple voxel engine based on Dual Contouring, but it requires crack patching/stitching (even between chunks with the same LoD/resolution) which is messy and slows down processing.

I'd like to avoid having to deal with that crap by using conformal tetrahedral meshes which require no crack patching at all

(see Longest Edge Bisection, BDAM, Hierarchy of Right Triangles, Diamonds/TetraPuzzles),

e.g. as written in "Real-Time Isosurface Extraction With View-Dependent Level of Detail and Applications" [2015] and "Level of Detail for Real-Time Volumetric Terrain Rendering" [2013].

But calculation of "continuous" normals (to avoid "sharp" lighting artifacts on chunk boundaries) completely ruins the "chunk independence" idea,

because for each boundary vertex I need to know all the triangles sharing this vertex, including the triangles from adjacent chunks.

Is there a way to calculate smooth normals across chunk borders without touching adjacent chunks?

(If the terrain is static, the normals can be precalculated. If the terrain is procedurally generated, the normals can be plausibly estimated.)

Show more