The current design computes the desired set of tiles to load from scratch each frame. This is fast enough for most purposes, but there might be room for improvement:
On each update, for each resident chunk, evaluate whether it should be split or merged according to the LoD predicate. When a split or merge occurs, recursively evaluate the newly introduced chunks.
This avoids traversal of the quadtrees and perhaps hash-table lookups for coherent updates. Performance might be worse for incoherent updates, but those are of less interest.
The current design computes the desired set of tiles to load from scratch each frame. This is fast enough for most purposes, but there might be room for improvement:
On each update, for each resident chunk, evaluate whether it should be split or merged according to the LoD predicate. When a split or merge occurs, recursively evaluate the newly introduced chunks.
This avoids traversal of the quadtrees and perhaps hash-table lookups for coherent updates. Performance might be worse for incoherent updates, but those are of less interest.