GlPortal / RadixEngine

A free and open game engine.
zlib License
148 stars 58 forks source link

Implement Scene Management #180

Open wow2006 opened 6 years ago

wow2006 commented 6 years ago

We need to Implement some Scene Management algorithms. IMO I find this useful for rendering portals:

  1. Portal Culling VIDEO
  2. Scene graph
  3. LOD Frustum

useful link

wow2006 commented 6 years ago

@hhirsch @ElementW @Geertiebear What do you think about this plane?

ElementW commented 6 years ago
  1. Portal culling or similar is mandatory for good performance, in addition to frustum culling, it's a thing I wanted to do (when I was still actively working on glPortal) but since the maps are entirely dynamic and made of entities right now, there's no way to compute the portals automatically; manual hinting is the only solution then, and it's error-prone and time-consuming. I'd like to enable more static/baked geometry to have this. Quake-derived engines like Source do that by using BSP as a base map space representation, and the vis/vvis tools compute the portals, called "visleaves".
  2. The scene graph has to be duly considered and thought out, as depending on what constraints we put on it we can optimize things differently. Quake-style engines basically have two levels: map geometry and entities' meshes, while more dynamic engines like Gamebryo (Elder Scrolls, Fallout, ...) have a full-featured recursive scene graph. Right now our scene graph is 1 level deep: entities, below a root.
  3. LOD is somewhat obvious to me too, however we don't have a lot of models yet so it's not really a concern thus far. But yeah, it will have to be done at some point if our scenes get quite populated. While it might present limited interest, I wonder if CSG-computed meshes would be a valuable addition, since they basically are the SVG of 3D space and can have a virtually infinite number of detail levels.