I solved the faceting issue. I thought that feeding unique values into the triangle array would do it, but averaging the vertex normals manually did the trick.
Now to figure out how to sample layers.
[edit] Small update. I was getting some odd world normals between my sections. Seams were visible. I rolled my own mesh normalization function and it cleaned it up, though since no vertices are shared it’s nice and faceted.