Emulator Issues #540
Bubble effect in Super Mario Sunshine
Well I hope donko see this :P. I compared the graphics on real GCN and
Dolphin. The bubbles in the ooze has this post-effect that makes them
3dish and they swirl outward. They are rendered from the copied EFB. I
want to figure out what works this effect >=O. In Dolphin you just see
this colored checkerboard pattern. As I can see, the EFB in Dolphin is
still missing some functionality.
#6 Updated by omegadox over 11 years ago
Thanks XK, I forgot about Cc :P
@ ekshenman: This has nothing to do with the bubbles in MP4, those are just shaded
textures. The Bubbles in SMS are drawn from the copied EFB and they use some sort of
post-effect blur to mix the 4 colors in the bubble together.
#23 Updated by nitsuja- almost 9 years ago
Here's my guess: The pixel shader used to render those bubbles is simply using the wrong texture coordinates for sampling from the copied EFB texture. The reason it looks like a checkerboard is that it's incorrectly sampling around the corner of the texture, so you're seeing colors from all 4 corners of the screen in the bubble. If the texture coordinates were correct, you would instead see colors coming from near where the bubble is onscreen.
#25 Updated by nitsuja- almost 9 years ago
I don't think texture wrapping can throw an error... the exact coordinates aren't known until the pixel shader runs, and pixel shaders don't have time to be checking and throwing errors like that. And it's quite possible that the sample mode is set to wrap instead of clamp in this case. You can easily verify that the 4 colors in the bubble are coming from the corners of the screen by moving the camera around while bubbles are visible.
#26 Updated by Anonymous almost 9 years ago
i've not tried to move the camera around, is it coming from viewable area or not? perhaps it is meant to sample from an area of the framebuffer which is meant to be offscreen or not displayed at all. (many effects work like this already, so it's doubtful...)
#32 Updated by NeoBrainX about 7 years ago
For reference, the shader that is being used in OGL is http://pastie.org/private/jjt5qzj5odlcwdytanbva . Most importantly, "tevcoord.xy = wrappedcoord + indtevtrans0;" is causing problems. If I force indtevtrans0 to zero, the bubbles show up fine. Given that the software renderer uses 24 bit values for the final texture coordinate, I guess this is once again a failure to properly emulate the bitness of intermediate values.
#33 Updated by NeoBrainX about 7 years ago
- Status changed from Accepted to Work started
Will be fixed after 4.0.