Project

General

Profile

Feature #1945

Feature #7: Next-gen renderer (codename "Gloom")

Efficient reuse of world geometry across multiple frames/passes

Added by skyjake almost 6 years ago. Updated about 2 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Category:
Redesign
Target version:
Start date:
2015-01-13
% Done:

100%


Description

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:

Related issues

Related to Feature #1628: Surface meshesNew2013-10-22

Related to Feature #1745: Performance optimizationProgressed2014-04-09

Related to Feature #2136: Add a map rendering abstraction layer for supporting both Classic and Modern rendering modesRejected2015-11-28

Related to Feature #1308: Splitscreen multiplayerProgressed2003-11-01

History

#1 Updated by skyjake almost 6 years ago

  • Description updated (diff)

#2 Updated by skyjake almost 6 years ago

#3 Updated by skyjake almost 6 years ago

  • Tags changed from Renderer, MapData, Performance to Renderer, MapData, Performance, OpenGL

#4 Updated by skyjake almost 6 years ago

  • Tags changed from Renderer, MapData, Performance, OpenGL to Renderer, MapData, Performance, OpenGL, GL2

#5 Updated by skyjake over 5 years ago

#6 Updated by skyjake about 4 years ago

  • Target version set to Rendering

#7 Updated by skyjake about 4 years ago

  • Related to Feature #2136: Add a map rendering abstraction layer for supporting both Classic and Modern rendering modes added

#8 Updated by skyjake almost 3 years ago

  • Description updated (diff)

#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

#10 Updated by skyjake about 1 year ago

Also available in: Atom PDF