- Static geometry batching would be *extremely* useful. Couple of times our 3d-artist had to combine several meshes to one in 3ds max, simply because batch-count grew up too high, even for OpenGL. It could be something as simple as Ogre's StaticGeometry class (just combining multiple vertexbuffers to single one).
What did you batch together? Whole parts of the world (e.g. a group of trees) or just meshes for single entities (e.g. a single character or building). A solution different from the static geometry batcher is to use real instancing. Horde could detect automatically if many small objects with the same geometry are drawn and apply instancing in this case. However, the OGL instancing extension is quite new and we need to check where it is already available. Another thing to consider is that draw calls have still a considerable overhead in Horde itself which will be optimized away in the future.
Yes we batched groups of trees and houses. Real instancing would of course be great, but only if majority of hardware supports it... With NVIDIA cards there probably aren't much problems, but it looks like ATI is less and less interested in supporting OGL nowadays.
- Better 2d/overlay handling routines. showOverlay() is far from ideal
What would you like to have here? Just being able to draw a bunch of arbitrarily shaped 2D polygons?
Something which allows easier manipulation of 2d sprites and such. Perhaps 2d polygons yes, then you could go easily rotate/skew bitmaps and even do a modern 2d spaceshooter/platformer with horde
It also annoys me that you are forced you to go through material system for load and draw each single bitmap (and create material file for each and so on), but I understand that's to keep resource handling consistent..
- Performance could still be better, I believe?
Right, there are still many opportunities to optimize Horde. The models represented as scene graphs cost more performance than "atomic" models and the whole string based material and context handling can be optimized (e.g. by using hashes or material class flags instead of class names). We will add some better spatial culling and there are also many opportunities on the GPU side (e.g. using 2 instead of 3 tangent space vectors, light volumes instead of 2d quads for deferred shading, etc.). Horde is certainly not slow at the moment but it has still a lot of potential to get really fast
Beta 3 -> Beta 4 performance increase was excellent, and I hope we will see similiar leapforward on beta 5 then too;-)
Oh btw, talking about features, how would you implement projective decals with horde3d at the moment? I.e. mouse-coordinated crosshair on the terrain, or bloodstains on the character meshes etc? We were looking for a ways to project some stuff on a snowy terrain, but couldn't figure out a straightforward method enough, so idea was then ditched because of lack of time.