I'm still in a semi-experimental mode with some other engines, and one of those is DirectQII. It's a nice engine to fool around on as it's D3D renderer formed the basis for a large part of DirectQ 1.7, and some of the code survives in 1.8 even today. There are a few things I want to experiment with and it's good to do so away from the main codebase.
I've also made some enhancements to the basic code as it was released last year. I'm not a fan of the renderer for the Quake 1/II model formats, so I switched this one over to something similar to what's in DirectQ at the moment (although with a memory pointer instead of a vertex buffer, and without the boosted limits) and was quite pleased on one hand (but appalled on the other) to discover that Quake II's triangle model format is roughly twice as inefficient as Quake 1's (I guess the "II" has to stand for something). Using my vertex/mesh optimization trick I've reduced the vertex submission for these to about one fifth of what it was.
The neat thing about this trick is that it passes it's data through the D3DXOptimizeFaces/D3DXOptimizeVertices routines completely unchanged; in other words it produces an already optimal index buffer layout.
The odd thing about it is that it uses the software Quake II data to generate the final mesh; the GL commands are untouched.
I've also completely generalized the process of converting individual polygons (represented as D3DPT_TRIANGLEFAN) into grouped intexed triangle lists. It did help that there was a core group of 4 or 5 functions that everything passes through which I could check for state changes in and submit batches of polygons from.
Overall I reckon it's maybe doubled the speed of the engine at certain times, and made using a low subdivide size for water surfaces a realistic prospect.
I intend checking for other areas where I can feed improvements back to DirectQ too. The Quake II engine is generally good to do some work with, as it's a relatively minor evolution of Quake rather than a different engine, and a lot of the DOS heritage and general ugliness has been removed from it.
So this is where I get to the "possible release" bit. All in all it really depends on whether or not I make a mess during my experiments. The whole purpose of these experiments is to give myself the freedom to make a mess without needing to be overly concerned about the consequences, so there's a chance that might be the outcome (it happened with my WinQuake experiments). It also gives me freedom to abandon things in a half completed state if feel there's nothing to be gained from continuing. So stay tuned and find out.
Thursday, April 22, 2010
Possible DirectQII Update?
Posted by
mhquake
at
10:56 PM
Subscribe to:
Post Comments (Atom)
2 comments:
So is the possible still possible?
Cheers, kempie
Might be. ;)
There's a few things I want to try out on it still, and the whole point is a test platform that I can abuse.
Depends how badly I abuse it, I suppose. :)
Post a Comment