# LOD/culling algorithms with procedural meshes

I am experimenting with procedural meshes. Those are generated at runtime in a compute shader. I'm getting to the point where those geometries are big enough to require some sort of culling/LODing techniques. Both requires the bounding box of the object, but this bounding box cannot be computed from the current LOD section, otherwise the information will be incomplete and thus the culling won't be conservative.

For offline mesh generation, the problem doesn't exist, because the bounding box of the fully detailed object is available. This is not true with procedural geometries, as generating the most detailed version of the mesh is too costly, if not impossible for memory reasons.

Computing the bounding box from the current sections works to some degree, but it's very dependent on the geometry, eg with a big enough frequency, it will be incorrect and sections will be culled when they should be visible.

Depending on how the mesh is generated, it's possible to be conservative by computing the real bounding box by replacing variables by the min/max possible values. But it's only possible to be conservative by limiting how the mesh is generated. If the mesh is generated from complex maths functions such as noises, then the min/max are meaningless and this information is either hard or impossible to compute.

I haven't seen much mentions of this problem before, yet it should affect any acceleration structure algorithm.. Maybe by lack of terminology, or maybe because runtime procedural meshes are not common enough. Anyway, I'm looking for directions on how to solve this problem, or articles where people mention this problem.

• The possible offset a vertex can have depends on the procedural technique you are using. For example using perlin noise or simplex noise with multiple layers can give you a conservative max bounding box which the procedural geometry is able to become. Therefore you can sum all amplitudes of the noise together and add it to the prior calculated boundaries. To give you better hints on how to calculate bounding boxes, a list of used procedural geometry algorithms is required. Also have in mind that Hessian planes at frustum sides can be used to easily check visibility by dot product. Commented Apr 7, 2023 at 10:54