Feature #1945

Updated by skyjake over 6 years ago

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.)