message: demo: Implement statistical analysis of meshlet radii
  For now we're just computing mean/stddev and how many meshlets have a
  radius that fits within mean+stddev as a basic measure for outliers.
diff: @@ -859,11 +859,15 @@ void meshlets(const Mesh& mesh)
  size_t accepted = 0;
  size_t accepted_s8 = 0;
  + std::vector<float> radii(meshlets.size());
  +
  double startc = timestamp();
  for (size_t i = 0; i < meshlets.size(); ++i)
  {
  meshopt_Bounds bounds = meshopt_computeMeshletBounds(&meshlets[i], &mesh.vertices[0].px, mesh.vertices.size(), sizeof(Vertex));
  + radii[i] = bounds.radius;
  +
  // trivial accept: we can't ever backface cull this meshlet
  accepted += (bounds.cone_cutoff >= 1);
  accepted_s8 += (bounds.cone_cutoff_s8 >= 127);
  @@ -885,6 +889,32 @@ void meshlets(const Mesh& mesh)
  }
  double endc = timestamp();
  + double radius_mean = 0;
  +
  + for (size_t i = 0; i < meshlets.size(); ++i)
  + radius_mean += radii[i];
  +
  + radius_mean /= double(meshlets.size());
  +
  + double radius_variance = 0;
  +
  + for (size_t i = 0; i < meshlets.size(); ++i)
  + radius_variance += (radii[i] - radius_mean) * (radii[i] - radius_mean);
  +
  + radius_variance /= double(meshlets.size() - 1);
  +
  + double radius_stddev = sqrt(radius_variance);
  +
  + size_t meshlets_std = 0;
  +
  + for (size_t i = 0; i < meshlets.size(); ++i)
  + meshlets_std += radii[i] < radius_mean + radius_stddev;
  +
  + printf("BoundDist: mean %f stddev %f; %.1f%% meshlets are under mean+stddev\n",
  + radius_mean,
  + radius_stddev,
  + double(meshlets_std) / double(meshlets.size()) * 100);
  +
  printf("ConeCull : rejected apex %d (%.1f%%) / center %d (%.1f%%), trivially accepted %d (%.1f%%) in %.2f msec\n",
  int(rejected), double(rejected) / double(meshlets.size()) * 100,
  int(rejected_alt), double(rejected_alt) / double(meshlets.size()) * 100,
  @@ -1139,8 +1169,10 @@ void processDev(const char* path)
  if (!loadMesh(mesh, path))
  return;
  - simplify(mesh);
  - simplifySloppy(mesh);
  + Mesh copy = mesh;
  + meshopt_optimizeVertexCache(&copy.indices[0], &copy.indices[0], copy.indices.size(), copy.vertices.size());
  +
  + meshlets(copy);
  }
  int main(int argc, char** argv)
  