Mercenaries excessive bloom seems to be z-buffer related
#1
excuse me if im way off as im a novice with this sort of thing.

i was playing mercenaries: playground of destruction with the recommended settings (software mode ect.) but was getting rather annoyed at the issue with the horizontal lines on screen.

switched it over to hardware mode and the bloom just exploded everywhere (a commonly reported bug). 
i increased the skipdraw to 100 which got rid of the bloom, but now there was a different problem...
(please excuse this next section, this is where my lack of knowledge in the area may show, but ill explain it best i can)

the pixels appear to retain their depth value from one frame to the next, meaning that the old pixel wont be drawn over unless the new pixel has a depth that is less than the old one.
in laymans terms you can only see new things if they are closer than the last object you saw.

This causes the bloom to crawl across the screen because it is an alpha-transparent effect applied last, and has a depth of zero (meaning that no object can be closer to the screen than it, so it is always drawn)
So, assuming you are standing still, what happens is:
1. the game tries to figure out what needs to be drawn over the previous frame
2. as nothing is closer to the screen than it was before, it draws nothing in the environment (a process that, if the pixel depth information was being properly discarded between frames, would normally erase the bloom from the previous frame)
3. post-processing kicks in and tries to determine what elements in the frame needs to have bloom applied to it (as the frame has not been redrawn, its analyzing the previous frame INCLUDING THE PREVIOUS FRAME'S BLOOM)
4. it applies bloom to all the bright bits (over the top of the last frame's bloom, making it brighter)
5. steps 1-4 are repeated, making the bloom brighter and brighter, until it gets bright enough that the post-processing effects start deciding that it is bright enough to warrant its own bloom, expanding the effect outwards.
6. this cycle of making bloom brighter and giving that bloom its own bloom repeats until it spreads across the screen.

this effect can be observed in other, non-pcsx2 games too. if you have a graphics mod installed on quake 2, and noclip outside the level (where there is no game-world to draw at all) the bloom does the same crawling effect.

now, if i knew how to code (let alone be proficient at it) i would be happy to do this myself. but as i am a dunce in this field, i can only hope that one of you bright-sparks see this and can fix it, so that i can enjoy mercenaries in its original, non liney, blooming glory
Reply

Sponsored links

#2
I'm pretty sure it's not drawing the next frame properly because you have skipdraw set to 100.
Reply
#3
(10-31-2015, 02:18 PM)bomblord Wrote: I'm pretty sure it's not drawing the next frame properly because you have skipdraw set to 100.

the bloom issue is occurring even at 0 skipdraw. you can tell its the same issue because when you move toward an object that object breaks through the bloom as each frame it is closer than the last (and therefore is actually drawing, and cutting through the overzealous post processing)

me setting the skipdraw to 100 just got rid of all the bloom so i could get a better grasp on what was happening
Reply




Users browsing this thread: 1 Guest(s)