So I’ve been learning about distance fields. The shadowing artifacts are from distance field ambient occlusion. Why, exactly, they are so jacked up like that I don’t know, but it seems that DFAO just craps out with very large objects. Changing the distance field resolution, the UV scale, or subdividing the mesh geometry makes no difference. Scaling down the size of the mesh seems to be the only thing that fixes those very dark, ugly AO artifacts.
The objects shown at the beginning of my previous post were well over a kilometer long. It sounds a little silly on paper but it’s not that crazy compared to something like, say, the scale of the structures in the Halo games. And that’s a first-person game, where mine has you flying an airplane at close to the speed of sound. In order to get the DFAO looking reasonably not awful I found I had to scale this object down by a factor of 20 or more. The shadowing looks a lot better on even smaller objects. But even if I scaled everything in the game down 20-100x so the largest objects look ok then the smallest objects are going to be too small.
The only true solution I have is a hypothetical where you chop large objects up into many smaller meshes, which does work in theory but seems pretty impractical. Bummer!