RPCS3 / rpcs3

PlayStation 3 emulator and debugger
https://rpcs3.net/
GNU General Public License v2.0
15.43k stars 1.92k forks source link

[Regression] Transparent rendering is stripy in LittleBigPlanet [NPUA80472] (#11373) #11818

Open Metraberryy opened 2 years ago

Metraberryy commented 2 years ago

Summary

Transparent objects render with stripes on them. Not sure how else to explain it

This issue appears in v0.0.20-13177-d6aa834b (https://github.com/RPCS3/rpcs3/pull/11373)

Screenshot and RSX/Renderdoc Captures

Regression

regression https://drive.google.com/file/d/1spYkUDJCeP4dhS8ePw0M0TA_WmFNuf7u/view?usp=sharing

Correct behaviour

correct https://drive.google.com/file/d/1UcuinjGQmLUYdQsuUKBaHZxwoKUvI_Vr/view?usp=sharing

Reproduction

This effect is most noticeable on score bubbles, though the effect can be seen on the Pod windows, glass, or any other transparent objects The screenshots are from the second level (first after the introduction level), 'First Steps'.

System Specs

AniLeo commented 2 years ago

That's interesting, because the new behaviour you describe is very similar to what happened on RDNA2 GPUs prior to the fix

capriots commented 2 years ago

Persona 4 Arena Ultimax has a very similar stripe pattern since that PR with MSAA on.

Before: NPUB31563_screenshot_2022_06_03_18_52_51

After: NPUB31563_screenshot_2022_06_03_18_54_25 RPCS3.log RSX Capture RenderDoc

TorutheRedFox commented 2 years ago

this (in LBP1) is caused by MSAA emulation in its current state not playing well with LBP1, causing not only this, but a noticeable drop in image quality compared to PS3 (it looks like it's deinterlaced by just discarding even fields and keeping the odd)

this is because LBP1 uses hacks to get transparent objects to play nicely with deferred lighting that depends highly on the MSAA buffer being sampled accurately as it uses shader trickery to "disable" G buffer MSAA over a transparent object and instead use its 2x width nature to effectively interlace foreground light data for the transparent object and background light data for everything that's behind it (see https://advances.realtimerendering.com/s2009/final_alex_siggraph.ppt)

this is part of the reason why you can't have two transparent objects overlap in a given pixel

LBP2 and 3 are not affected by this as they use forward lighting and MLAA instead

kd-11 commented 2 years ago

Ok, this one is going to be annoying to fix. I'll think of something. Fixing this game will just break Tales of Graces F again.

kd-11 commented 10 months ago

This should be fixed now with the "hardware MSAA resolve" option.

Triticum0 commented 10 months ago

It is not, it is the same behavior that was in the screenshot for #15000 on the transparent surface

Metraberryy commented 10 months ago

the effect is definitely reduced, but not entirely gone

image image

TorutheRedFox commented 10 months ago

the uv resolving for software msaa resolve should be adjusted to fix this

ItsLaguna commented 7 months ago

Sadly Force MSAA Hardware Resolve murders performance, making the game unplayable (GPU at 100% usage, single digit fps).

I personally resorted to upscaling to 200% instead as a workaround for the issue, though some materials still show up lines like glass in the intro level (this also happens with Force MSAA Hardware Resolve) and if you have any DLC costume installed, the bubbles in the "My Content" section will be empty.

TheGlitcher1705 commented 7 months ago

as metra said even if you want to take that performance hit it still doesn't fix the issue