Map load times are now substantially faster owing to improvements and efficiencies in a lot of the loading code. They might get faster still if I ever get around to investigating D3D automatic mipmap generation.
Engine startup time is also a lot faster. I removed the splash screen (sorry, I know it was cute, but...) and also removed a lot of legacy crap that was slowing it down. There's still a vid_restart happening during startup that shouldn't be there, but it's not too big a deal.
I've removed dynamic linking to the D3DX library. What this means is that we're back in the situation where you may need to update your D3D. The version of choice is June 2008 so everybody should be more or less OK, but fair warning all the same. I was never 100% happy with dynamic linking anyway, as there was always a chance that something in D3D might change and break it. This way is just better longer-term.
I've fully deprecated the non-Vertex Buffers mode; it's gone. Bear in mind that D3D will very happily create a Vertex Buffer in software if you don't support them in hardware (early DirectQs used them) so this is OK. Things are just a lot cleaner and clearer - not to mention less buggy - this way. I have some tricks for improving the performance of a lot of the renderer, but they might have to wait until the next one as they will need restructuring elsewhere.
Some limits which were previously set at "infinite" have been clawed back to a finite number. MDL verts is 65536 (that's the most the format can support anyway!) and lightmaps to 256. DirectQ uses bigger lightmaps than ID Quake so you should never run out, even on the most extreme maps.
One slightly controversial one is that I've changed the underwater warp. This is something else that I was never happy with; the old code did a lot of shuffling things around and messing with multiple render targets, and it was never really set up right for it (nor was it totally robust). It also offered a choice between running at half the speed or at lower quality. The new code is full speed, full quality, and still gives quite a good warping effect, but not quite the same as software Quake did it. Wait till you see it before complaining, OK.
I've completely overhauled the 2D drawing code, and it's now totally different to what it was before, and potentially a LOT more efficient. A massive bottleneck exists in the polyblend code, which is done during 2D drawing. I've found with RMQ that shifting it back to the 3D drawing (like what ID Quake did) was actually quite a bit faster. API differences may be a factor preventing this, but it's definitely worth trying.
I've also finally bitten the bullet and ran DirectQ through a source code formatter. Bye bye disgusting unreadable code. Of course I had to spend some time cleaning up some of what that did (no formatter is perfect), but at least all my tabs, indents and braces are the way I prefer them now.
Monday, October 18, 2010
Updates for Sunday 17th October 2010
Posted by
mhquake
at
3:08 AM
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment