Feature #7: Next-gen renderer (codename "Gloom")
Efficient reuse of world geometry across multiple frames/passes
One of the most fundamental performance problems of the old 1.x renderer is that every time the player view is drawn, world surfaces are recomputed into GL geometry. (One can see how costly this is by freezing the rendering lists.) However, many rendering techniques require rendering all or some parts of the world multiple times: VR modes draw dual views, shadow mapping requires passes from lights' point of view, reflections need several passes for dynamic cube maps, and overall most of the world remains static across frames so recomputing geometry is wasted effort.
In practice, geometry should be stored as a reasonably small number of static vertex buffers. We should explore if moving planes could be partially or even completely implemented similarly to skeletal animation, where certain vertices would be affected by selected transformations. The trick would be to do this efficiently only for the needed planes, and only when the planes are expected to move. (After all, it is not necessary to efficiently support for all planes to move in the map with no foreknowledge.)Benchmarking:
#9 Updated by skyjake about 2 years ago
- Status changed from New to Resolved
- Assignee set to skyjake
- Target version changed from Rendering to 3.0 (2020)
- % Done changed from 0 to 100
Gloom has an entirely different model for managing the map geometry.
For details, see the blog: Further rendering explorations