@BelowTheBelt - The proof of concept Megaton hak is about 130 megs. The version I'm using is not as optimized as I thought and appears to be put together like an ordinary tile group. I had optimized at least the ground (making it all one mesh) in another version but I had an extremely unfortunate event happen with my Max 5 which left me scrambling to recover what I could.
You can download the Megaton proof of concept here. Just create a new 16 x 16 area and place the "Crater, Town 01 (16x16)" group.
'>
@OldMansBeard - Well, what I'd really like to accomplish with this post is get 5-10 more people downloading the gDEBugger and playing around with it to be able to peer-review my assertions and also see what their experience provides in the way of ideas on how to approach issue.
"If two meshes in a models have different bitmaps, would combining the bitmaps into one larger one, just so that the meshes could be combined, ever be worthwhile?" I'm assuming you mean "if two meshes in the same model", the answer is a qualified "yes". It totally depends on what that model is. If it's a tile with lots of meshes mesh on it which use the same texture, then absolutely. However, what if it's a tile with just 3 different meshes with 3 different textures? I suppose those meshes could be consolidated into one mesh and their textures into one texture, but one would have to look at how much savings you were actually getting on the deal. The larger/more complex the mesh is, the better the savings are. If you had a 3 x 3 sailing ship group all sliced up into 10 meter chunks, you're going to have at least 3 different draw calls (one for each chunk) which, since they're not the WOK, don't need to be sliced. Three chunks for that example is (IMO) a lowball estimate.
Since I deal more with creatures than tilesets, let me give an illustration which is a little less ambiguous or qualified. Below are four creatures. From back to front: Beggar (non-dynamic NPC), Dynamic NPC with a conventional robe, Male Dynamic NPC with full-body robe, and Female Dynamic NPC with full body robe and cloak. Here's the draw call breakdown for them:
NOTE: These numbers may double with environment mapping turned on. In that case, I've noticed a silvered (envmapped) version of the mesh being drawn in one draw call and then the textured version on the next.
A big part of this focus on draw calls isn't so much how one object affects NWN gameplay but how the large number of meshes impact the performance, overall. I'm a big fan of stuffing as much as I can get away with into the game so, NPC-wise, I've looked at things which affect performance- like how much overhead pathing consumes in NPC-dense situations. In the same way that EffectCutSceneGhost() relieves CPU overhead, the above screenshot indicates that skin-meshed NPC's (especially completely skinmeshed NPC's) would consume dramatically less drawcalls to put on the screen in comparison to the non-dynamic but still part-based ones we have now.
"What would be the trade-off?" In situations where multiple meshes on the same object used the same texture (and there was no problem with consolidating them), I'm guessing there wouldn't be. However, in situations where you were pushing to consolidate textures (say, for a tile), then you're going to trade off extra texture memory (worst case: single, unique texture for each tile) for lower draw calls. There are a lot of variables in that, though, like how big an area is involved, how much stuff is in it (also using up texture memory), and how much texture memory is available on the video card that's displaying it.
"Can you imagine a software tool (CM4 ?) that fiercely optimised models to minimise draw calls, and if so, what would you want it to do?" I can, but what I'd really like is experts like you and others becoming familiar with the situation and coming up with your own approaches. I am extremely time-limited in real life right now and I'd really like to see what conclusions people with more experience (especially when it comes to tilesets) than I come to after looking at the situation, themselves.
To be honest, I'm mainly trying to get the word out so that people (including me) might implement better practices going forward. I haven't really spent much time thinking about how to retro-mod the existing content to be more efficient. The only two instances are NPC optimization and VFX optimization. Some of the Bioware effects create a mass of chunks and other things I suspect momentarily blow up the draw call count for the frames for which they exist. Most of their effects are almost unnoticeable (given how briefly they exist) and at some point I might try to take an axe to them.