Sunday, June 20, 2010

I'm thinking of removing the underwater warp...

OK, before you panic, I will be replacing it with something like what FitzQuake/etc does, so you will still get a swaying underwater distortion effect.

Right, now down to the reasons why. Firstly is that at the present moment it's complicating my whole setup too much. Far too much. Secondly is the fact that it's not going to play nice when I come to do light blooms in the future. Thirdly is the additional video RAM, processing and fillrate overhead of handling render to texture. In some cases framerates can drop to almost half when you go underwater. Fourthly is the fact that it's by now serious legacy code in dire need of a good working over and cleaning up.

One thing I've certainly learned is that when you're spending too much time wrestling with a feature to make it play nice with the rest of your code, then something is wrong. In this particular case, what seems to be wrong is the underwater warp code, as it's the only thing that's causing trouble.

None of this means that it won't be coming back in the future of course. Who knows - it may even come back before 1.8.5 is released, but right now it's holding me back from moving forward.

Opinions?

Update:

OK, I've decided to keep it. It wasn't a decision made lightly, but in the end the proper software Quake style underwater warp is one of the main standout points of DirectQ, and it would have been a real shame to lose it. It's also good to not give up as soon as you start hitting trouble with something.

What I am going to do is remove the HLSL version of the underwater warp. With retrospect, this was the part that was causing the real trouble, and I was having awful difficulties syncing it up with the non-HLSL version, variable screen sizes, variable rendertarget sizes, variable status bar sizes and variable console scales. It was certainly possible alright, but there comes a point when hacking and slashing at existing code (that was never written with that in mind) becomes counterproductive and makes a bigger mess.

Sometimes you need to take a step back before you can start moving forward again in other words. In this case I'm happy that the non-HLSL code is the right way to go. It's a feature that works for everybody too which weighs in it's favour.

5 comments:

Coranth said...

Damn, if you're doing all of this for 1.8.5, I can scarcely imagine what 1.9.0 and beyond will be like. Whatever you do for -that- release will, undoubtedly, be awesome...

Pottenham said...

On one hand the old Underwater warp was nice,but on the other hand it´s not that important that it should hold your progress back.

Fitzquake´s underwater style is good enough,imo.

BuzzKillington said...

I agree with Pottenham. If it's holding you back then lose it, especially if you can replace it with something almost/equally as good and much less frame intensive (my fps cuts in half when I go underwater at the moment). Whack in an underwater caustic effect aswell, a la joequake, and that will distract people from the change! lol. Can't wait for 1.8.5.

=peg= said...

What they said ^^

=peg= said...

"OK, I've decided to keep it. It wasn't a decision made lightly, but in the end the proper software Quake style underwater warp is one of the main standout points of DirectQ, and it would have been a real shame to lose it."

-- mhquake



Actually, that's what I wanted to say, but I didn't want to hold you back ;)