-
Notifications
You must be signed in to change notification settings - Fork 223
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bad water transparency layering in start level #656
Comments
@temx Not sure about this. Shouldn't the BSP recursive walk alpha sorting have fixed this one? |
That's not done for the worldmodel. It'd require walking the entire map tree looking for water surfaces, I haven't tried but I suspect it'd be quite slow for large maps. Maybe a pruned tree could be created at load time? I don't think it's worth it for one map with strangely split water. |
I did a quick test - see branch sorted-world-water, requires indirect path. |
I added some basic pruning, the speed hit is greatly lessened but can still be in the >10% range. |
The issue seems to happen in qs too: sezero/quakespasm#53 |
Really don't know, never ever tried it |
Okay, I think I'll keep this bug open - perhaps forever. |
So, it's a map-specific issue and not worth caring about much, yes? |
Technically it's an engine bug, but there is cost to walking the BSP recursively back to front so it might not be worth doing it just for this case. I believe the original Quake did a recursive walk for transparency but it was removed in later source ports for performance reasons. |
No transparency in the original, but it did walk front-to-back to get correct, zero overdraw drawing without a Z-buffer. |
I actually know that! It was writing a Z value during zero overdraw span-based raster and alias was rendered with z check and write. |
I found another place with bad water transparency layering: "Abyss of the troglodytes" (d2m8) of Dwell v2.2. Here's a save looking right at the issue: s2.sav.zip. |
In the start level (using the rerelease basedir), if you look at the water before episode 4, you can see that specific sections of the bottom surface incorrectly render over specific sections of the top surface. (Specifically, the upper surface's right third allows all of the lower surface to render over it, and the upper surface's left two-thirds allows the lower surface's far-left corner to render over it.)
This isn't a recent issue. I've tested master and a few months-old commits and they each show the issue the same way. The issue is not affected by "r_alphasort 0".
I can consistently reproduce this on both MacOS and Linux that I've tested on.
The text was updated successfully, but these errors were encountered: