After a few hours of fairly painstaking work I've successfully managed to get all surfaces chained together ordered by texture from front to back and including all bmodels, both inline and instanced, at the end of each texture chain. I've also been able to remove one of those qsorts.
This represents a pretty damn major integration of the surface renderer as I now have everything going through mostly the same path and organised in what is probably the most optimal fashion. The only real performance penalty here would be if a complex bmodel is drawn before a simple world surface (that uses a different texture occurring later in the list of textures) that would occlude it fully, but that requires greater knowledge of the entire structure, including the relationship of every object to every other one.
Enough is enough I say.
To celebrate here's the official one-and-only first ever DirectQ 1.8.0 screenshot.
The only thing that really looks a big deal here is the game name and map name in the title bar (a nice touch I recently added), and even that is nothing overly special. But this is a significant screenshot as it's showing the engine rendering everything normally through the new paths.
The next step is to start removing that huge C++ class I talked about earlier. I'm probably going to end up keeping some fairly small parts of it, just the parts that manage buffer memory, but the state manager and command interpreter are going to die.
This required surfaces to be completed as full removal of it was heavily dependent on being able to chain them properly.
I've kept a copy of it for posterity, and - as threatened - I might even release it sometime. But right now the sooner I can get away from having to look at it ever again, the happier I'll be.
Tuesday, January 5, 2010
Phew! Surfaces!
Posted by
mhquake
at
12:00 AM
Subscribe to:
Post Comments (Atom)
1 comments:
Still, that title bar looks pretty damn cool.
And I agree with =peg='s comments on the last post, 100%. A DirectQ.cfg is a great idea.
Post a Comment