-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Juiced 2: Hot Import Nights, screen artifacts and missing half of race tracks #7295
Comments
Could the missing asphalt be another spline or bezier issue? Does changing the spline/bezier quality affect it? |
Negative. Low, Medium or High quality doesn't seem to have any effect. |
Tested it a bit and discovered that Read framebuffers to memory (GPU) or (CPU) fixes the alpha/stencil issue completely, however there is a noticeable speed drop (50%). Also forgot to tell you this but the cars don't fall through the missing asphalt. The asphalt is there, only we cannot see it. Almost as if it was upside-down. |
Hmm. Most likely if "read framebuffers to memory" resolves it, then it involves one of these things:
I suppose it's likely these: in GPU/GLES/TextureCache.cpp, search for this line: if (fbInfo.yOffset > MAX_SUBAREA_Y_OFFSET_SAFE && addr > 0x04110000) { Replace it with: if (false) { This will prevent that heuristic. I'm fairly sure this will break certain other games as-is, but it should verify if this is actually causing problems here and whether it's the overlay issue or the asphalt or what. The basic problem is that we have no way to know the height of framebuffers, so we have to guess. Sometimes we guess too high, especially for framebuffers above 0x04110000, which results in us texturing incorrectly from the framebuffer (render) rather than from memory (loaded texture data.) They're hard to tell apart. -[Unknown] |
Has this improved at all? -[Unknown] |
Looks same as before. |
Anything logged? You can try changing Hmm. -[Unknown] |
a log for it
|
What if you instead change this part: // If we update the format or stride, this affects the current framebuf immediately.
framebuf.fmt = latchedFramebuf.fmt;
framebuf.stride = latchedFramebuf.stride; To: // If we update the format or stride, this affects the current framebuf immediately.
if (framebuf.fmt != latchedFramebuf.fmt || framebuf.stride != latchedFramebuf.stride) {
framebuf.topaddr = latchedFramebuf.topaddr;
framebuf.fmt = latchedFramebuf.fmt;
framebuf.stride = latchedFramebuf.stride;
} -[Unknown] |
Not help. |
This bloom bug looks like a framebuffer effect that doesn't get flushed/flushed on time/properly for whatever reason. Am I right? It just keeps adding pixels to the already existing effect. |
The "vulkan black menu issue" is actually not about Vulkan, but similar thing to #9545, affects all 3 non OGL backends, and it's also possibly related to depth ~ failing to show after "Clear mode: 000401 (on, depth)", however it's not exactly same because neither the workaround of disabling accurate depth nor the hack mentioned #9545 (comment) affects it in any visible way. Here's a dump from that, first draw is that background(a movie frame) I think the "missing road parts" issue does not happen anymore, at least I couldn't find any road with missing parts, it's using bezier curves so maybe it was fixed long ago. I think hardware tesselation might be proving to be glitchy here, but my gpu is too slow for it, so didn't really tested it much. Here's a dump from in-game that should show problems with hardware tesselation(shadows on the road) and might show how the glitchy motion blur layer is made, however doesn't display it when playing dump:|. Since I'm updating that might as well mention some video decoding issue:P there's a fragment in the intro: |
See #8867 for the video frame - it's likely related, it looks similar. Does the draw after the depth clear have anything strange with depth? If you disable the depth test in the GE debugger, does it prevent the issue? -[Unknown] |
Disabling depth test doesn't help, the only way I found to fix this was decreasing depth of the vertices from FFFF to FFFE. |
I'd like to report some issues I'm having with this game here. -No car or road reflections Here are some reports that should help: http://report.ppsspp.org/logs/game/ULES00928_1.00 |
@GuilhermeGS2 if you're using experimental settings like hardware tesselation - disable it. As I mentioned above, it's glitchy and it's used a lot in this game. It's also very slow(at least for me) and could be the cause of your crashes(dunno as I don't use it, software implementation is many times faster on my hardware even on high). For most of us motion blur is causing the glitchy layer seen on the very first screenshot of this issue, so if you see it differently, that might also be caused by some non default setting. |
@LunaMoo I disabled the non-default settings now I have car reflection, but have those "ghosts" on screen. The performance is fine here, 60 FPS at 4x resolution, but sometimes I have some quick slowdown. |
The dark borders I mentioned, but it happens when I use non-default settings: |
So I can tell you're using read to memory rendering mode - you really shouldn't, it's unsafe and causes memory corruption that will preserve in savestates, most likely causes crashes you have. That option should and most likely will be removed ~ #6261. It doesn't even help in this game, it merely breaks the same effect in different way. Best way to get rid of the effect without causing other problems is to just use cwcheat for it. I posted one in game's thread ~ here. |
I never used read framebuffer to memory rendering option, the only non-default settings I used was those in "Performance" list in Graphics settings, I enabled all them. EDIT: And thank you, your cheat works very well here. |
Oh sorry, that was only setting I was able to reproduce this, but now I guess it also happens with hardware tesselation, just not where I was checking. Basically what happens is game is drawing the road to 0x04000000 and copying it later to 0x04154000 using it to draw all reflections, first on car, then later on the road, later on - it draws lights also to 0x04000000, then moving them to 0x04154000. All of that is good so far, but then it changes target to 0x04165000, disables a texture and uploads some glitchy trash which looks like all what should become part of the motion blur layer, just accumulated from all previous frames(which clearly is wrong), and dark rectangle at the top left corner and moves it on top of 0x04154000 which previously had correct lights before finally drawing it on the screen. |
The graphic of this game is really beautiful, even on high resolution. This game is one of the most demanding on PPSSPP, to run it on Android you'll need to use Vulkan and have a decent hardware. |
Where does it upload it from? Is it a texture or a memcpy or what? The source could even be a depth buffer. -[Unknown] |
@GuilhermeGS2 yeah it is one of the prettier games, it's demanding mostly because of 3 things:
@unknownbrackets don't really know how to check that as breakpoints doesn't trigger anything. The framebuffer just get's glitchy stuff after this draw: settings it's using: https://gist.github.com/LunaMoo/b68dc1ecf19b338147d2aba9f8d3f0ce I guess it might be uploading from transfer dst?
makes sense since src here is where game draws lights earlier and this glitch literally looks like lights captured from all frames before.:] Why it draws that small rectangle through? That's the small part of the screen which doesn't get glitchy(althrough doesn't get any effect either). |
Is it right after - like if you step into until it switches? Whatverts is it using - full screen? It's doing a draw in 5650, maybe the issue is framebuffer format switching. Maybe this is it trying to clear alpha... -[Unknown] |
What happens later seems to be interesting as well, it follows with many tiny draws like this to cover all framebuffer and moves it slightly around to create blurry image, I think this isn't whole motion blur, which I think actually does exist in game even with this removed, but separate more noticeable motion blur specially for lights. |
PPSSPP v1.6.0 Removed read framebuffers to memory, and no way to fix it in latest versions |
A reminder:
|
I remembered that video running PPSSPP (https://www.youtube.com/watch?v=4UHNQG459GI&t) that Skip buffer effects fixes light glitches but has road glitches as mentioned in #11630 But now cars are now invinsible and does not display menus when Skip buffer effects is set as rendering mode: |
I also mentioned that issue about skip non buffered rendering here #8171 (comment) |
I added this game id fo [AllowLargeFBTextureOffset] but no luck graphics issue still there:( Latest GE Dump |
…7295 (Juiced 2) To be safe, gating this behind the related AllowLargeFBTextureOffsets, which is also required for the effect to work. Additionally, fixes the offset check for X offsets, which I guess is a very small risk.
This is some weird framebuffer overlap trickery, which requires both enabling |
…7295 (Juiced 2) To be safe, gating this behind the related AllowLargeFBTextureOffsets, which is also required for the effect to work. Additionally, fixes the offset check for X offsets, which I guess is a very small risk.
Okay, fixed, finally :) |
The game has problems with light sources blurring the image, staying forever on screen, also the game is missing half of the asphalt on some tracks. Gameplay-wise is perfectly fine, just graphical issues.
As suggested by unknown, here is the GE Debugger for the game right when the bug happens (after the loading screen and right at start of the race) with all the tabs screenshotted, i've stretched the windows as high as i could:
http://expirebox.com/download/c04b80309ba636314960c73b81fd00c7.html
EDIT: Also the menu is broken in Vulkan:
The text was updated successfully, but these errors were encountered: