Howto:Use the system monitor: Difference between revisions

Jump to navigation Jump to search
→‎Interpreting the OSG on screen stats: http://www.mail-archive.com/flightgear-devel%40lists.sourceforge.net/msg37823.html
No edit summary
(→‎Interpreting the OSG on screen stats: http://www.mail-archive.com/flightgear-devel%40lists.sourceforge.net/msg37823.html)
Line 120: Line 120:
mostly due to plenty of structural and often needless nodes in the scenegraph.  
mostly due to plenty of structural and often needless nodes in the scenegraph.  
The reason or this is that historically the xml files did some implicit  
The reason or this is that historically the xml files did some implicit  
grouping for *every* animation in the xml file. To make that reilably work I
grouping for *every* animation in the xml file. To make that reilably work Mathias
had to introduce a huge amount of group nodes in the xml file loader. These  
had to introduce a huge amount of group nodes in the xml file loader. These  
really hurt today as they introduce a whole lot of group nodes that just have  
really hurt today as they introduce a whole lot of group nodes that just have  
a single child which need to be traversed for update and for cull. Profiling  
a single child which need to be traversed for update and for cull.  
shows that Group::traverse is the most used function in flightgear.
 
There's also the long-term plan to flatten the LOD quadtrees and transforms of the tiles. Each tile will get some top-level LOD
groups for all objects (shared and static). I'm hoping in combination with the LOD-scale function in OSG, this will mean we can automatically drop random
tress / building  and STG objects to keep frame-rate up. (as an optional mode of course!) - we hope to simply get less tiles and models present by a better lod structure.
 
The trick is to minimize the number of LOD nodes introduced into the scene graph while avoiding popping effects - flattening the transforms is good to do. But some of them are critical to stay like the are or at least similar. The first one that positions objects with respect to the earth centered
coordinate system for precision reasons. Also these coordinate systems coudl for drawing reasons aligned in any
direction. But as long as we do simulations using the same tree and geometry alignments that we do for draw this still interferes with the bounding volumes
we have for ground intersections. And this axis aligned bounding box  implementation gains a lot by having the boxes horizontally aligned. Todays
transforms are done so that huger things are aligned with the horizont which serves this purpose.
 
In [[FGViewer]] there's a PagedLOD whole world database tree running. This is similar to osg's marble
dataset but carefully designed around our tile structure. Using this I think
we can really replace a lot of our fine structured scenery tiles with something
more croase that is used for tiles more far away.
Drawback with our current codebase: Our integration of the particle systems
need to be rethought as this contains geometry with culling disabled which
makes a pagedlod just never expire. Switching the particle systems off works
pretty good so far.
 
Another goal is to add more node bits (and a GUI dialog to control them) so
various categories of objects can be disabled during the update pass. This will
mean the direct hit of, say, AI models vs particles vs random trees can be
measured. Of course it won't account for resources (memory, textures) burned by
such things, but would still help different people identify slowness on their
setups.
 
Profiling shows that Group::traverse is the most used function in flightgear.
The lowest hanging fruit could be to optimize away the redundant nodes from  
The lowest hanging fruit could be to optimize away the redundant nodes from  
the top level model that gets loaded by a database pager request. We cannot do  
the top level model that gets loaded by a database pager request. We cannot do  

Navigation menu