Reimplemented Hi-Z via TEXTURE_BASE_LEVEL to avoid ping-ponging during the downsample. This is all hacked into three.js. Not perfect but finally conservative. Next is to implement two-pass occlusion culling and then hierarchical clustering with recent Meshoptimizer improvements.
Working on GPU frustum and occlusion culling again, this time with meshlets and multidraw. Using WebGL, which lacks indirect drawing, so streaming results to the CPU from transform feedback, which lets me display misc stats. Calculating meshlet bounds myself, so no cone culling.