More boost!!!!I had a day with YourKit. It is really great. It helped me to improve performance by far.
Another boost gave a slight redesign of OpenMaLI's bounds implementation, which needed a little API change. The getCenter() method (with no parameter) doesn't exist anymore. It was slow. I removed it to ensure, that nobody (including me) uses it by accident at critical places. Use the getCenterX(), getCenterY() and getCenterZ() method instead or the getCenter( Tuple3f ) one.
All in all the Q3FlightTest runs over 50% faster now (relative the yesterday). Relative to three days ago it even runs 100% faster. No lie!. Just try it out.
Another tweak, that doesn't do anything for the Q3 test, is the following:
If you have nested groups and one group is totally inside the view frustum, the inner nodes don't need to be further culled, since they are implicitly fully inside the frustum, too. Previously they were culled, which I have fixed now. So, if you have nested groups (like with a pseudo-OcTree/QuadTree implementation) you will notice another performance gain.
Another tweak, that I have enabled manually just for the Q3 test is, that I have disabled the user-defined clipping planes for the main RenderPass. Handling the Clipper or ScissorRects is expensive for the whole RenderPass with the current implementation. So, if you don't need it, disable it through:
renderPass.setClipperEnabled( false );
Please see my next Thread in the Developer Discussion forum about the Clipper.
Marvin