Hmm... maybe you didn't enabled VBO? I just tested the file. Yes, it does seem to be slower comparing upstream with 'Auto' caching, but 'Experimental' has the same performance. The difference between 'Auto' and upstream is in how transparency is handled. In my branch the triangle sorting is handled in FreeCAD instead of Coin3D to workaround problem of rendering artifacts
of transparent faces at certain angle. But the performance should be about the same. I'll investigate later.
The reason I decide to implement my own render caching is two fold. For one, with customized caching, it is now possible to handle rendering entirely in my own code, which makes it much easier to use other rendering library as mentioned in my previous post. Second, the Coin3D render caching is not good at handling hierarchies, more specifically, it is not good at handling cache changes in the hierarchy. If the cache is always clean, then the performance is good, but if it becomes dirty or got disabled (e.g. because of selection highlight), the performance will drop because it has to traverse the hierarchy for rendering. My experimental renderer caches the geometries in a flattened data structure, so it will always have the same rendering performance regardless of changes in the scene hierarchy.
To demonstrate the problem, you can select one face in the cube array (or just pre-select a face and spin the 3D view) and see huge drop of rendering performance in upstream. This is because Coin3D render cache is disable if there is element selection in transparent object. This problem can be solved by changing how selection highlight is rendered. In my branch with `Auto` render caching, you have the option to render pre selection highlight on top. And this makes it possible to keep using the Coin3D render cache. However, with other more advanced effects, such trick won't be so effective. For example, in my branch, with 'Selection on top' enabled, the selected object will become transparent and rendered on top with alternative hidden line style, all of which affects the rendering performance if using Coin3D. But with my 'experimental' caching, the performance is the same.
Zolko's lego house
is a more suitable files for benchmarking, as it contains deep hierarchies. Another one is this
, which has large amount of Link instances to relatively simple geometries with hierarchies. I got only 5fps for rendering the later model using 'experimental' renderer. I expect this type of scene to perform a lot better if using shader with OpenGL instancing.