1.7.3 is getting very near ready to be unleashed. I've just put the latest touches on the simple menus, so I think I'm pretty much done with them for now. The major outstanding item is the name maker, which has been broken for all of the 1.7 line.
I almost started diving in and rewriting the surface refresh, but the realisation that it's a fairly huge job drove me off. This is still reserved for 1.8. Another thing I want to add for 1.8 is support for 1 TMU and 2 TMU cards, which has never been in DirectQ. The major codepaths affected by this are brush surfs, alias models and sky. It's not overly critical though, as there are really very few of those left; it's only people with really really old hardware (that would struggle with the basic render anyway) that this is for, but all the same it's on the "nice to have" list.
Another item I've been considering is paletted textures. Direct3D seems to have some pretty good support for dynamically changing palettes at runtime, and that would be a rather neat solution to the whole issue of colormaps. Unfortunately I can't even get the API working without a crash, and the documentation is scattered across various different parts of the SDK with no links between the related items (again!) so it's difficult at this stage to say which version - if any - they might appear in.
One final big surprise for 1.8 might be a reversion of the renderer to Direct3D 8. I even caught myself out thinking along those lines, but it does mean broader hardware support, and it's possible that the API might be faster. Right now though it appears as though the D3D8 headers and libs won't even link correctly under VCPP 2008 Express, but if I can get past that hurdle it's something that might be worth trying. No promises.
Just did a fairly heavy run through some of SDQuake to test some limits and stability; everything is good. Man, this mod is mental! I don't know whether some of the features in it are just plain annoying or not (especially some sound effects), but the gibbing and firefighting is quite intense.
If nothing dramatic comes up I might bring the release forward to this coming weekend. Wait and see.
Update:
The name maker is now fixed and restored to the Multiplayer/Setup menu.
I've managed to successfully compile and run some of the DirectX 8 samples on VC++ 2008 Express, so that switchover is looking more and more likely. I might take a copy of the code and do a test changeover right now (i.e pre-release) so that I can do some performance comparisons.
Paletted textures require support for D3DFMT_P8 which I believe is quite rare (my primary dev/test box doesn't have it either) so that's not an option.
Update 2:
I've ported a copy of my current codebase (rather crudely) to Direct3D 8, and it's actually a little slower than 9, which is a strange result as I was assuming that the earlier version of the API would have simpler code paths/etc. Of course, some of it may be down to the crudeness of the port, but all the same I think that the actual runtime stuff is well enough done. My current best guess is that 9 contains significant optimisations over 8 in the basic code paths.
For all that Direct3D has a reputation for changing the API completely with each new version, 8 and 9 are incredibly similar. There are some new params in some places with 9, some restrictions have been relaxed, and some flags have moved around a little, but it's nothing too dramatic.
I don't think 8 is going to be viable though (I may have accepted the speed loss in exchange for broader hardware support) as it lacks D3DTSS_CONSTANT/D3DTA_CONSTANT (it may have an equivalent which I just didn't find) which I make quite extensive use of.
All the same, it was fun and I might go back and do it seriously again if I can find an adequate replacement way of doing the constant stuff. At least I've established that it can be done without any pain, which was important.
1 comments:
..Nice update. Lots of info there. Here's hoping for a weekend release. ;-) Unless Dx8 is really going to give that much more hardware support over 9 then forget that noise and keep DX9's speed.
Post a Comment