Emulation [RELEASE] Cemu - Wii U emulator

  • Thread starter Thread starter Exzap
  • Start date Start date
  • Views Views 7,718,576
  • Replies Replies 21,671
  • Likes Likes 284
Just wonder which GL extension used for this type of rendering in AMD , or higher version of OpenGL may provide in Nvidia driver?
That's the problem, there is no OpenGL extension for this.

I am not sure if you care about the technical details, but in case you or anyone else is interested:
There is this rule in the specification when using multiple render targets/attachments.
OpenGL specification said:
If the attachment sizes are not all identical, the results of rendering are defined only within the largest area that can fit in all of the attachments. This area is defined as the intersection of rectangles having a lower left of (0;0) and an upper right of (width;height) for each attachment.
(OpenGL 4.5 spec, page 310)

What this means is that if you use a colorbuffer of size 1920x1080 and a depthbuffer of size 1000x1000 then any pixel drawn outside the smaller 1000x1000 rectangle will be discarded. However, AMD goes against the specification and allows to render pixels outside the smaller attachments. That's pretty much what happens in NSMBU/NSLU, where the coin is drawn outside the depthbuffer rectangle.

I actually emailed NVIDIA about this and from what I understand there are no plans to turn it into an extension, but there are workarounds (like rendering everything multiple times, once for each attachment individually or using tricks to simulate a larger depth buffer). All of the workarounds have major disadvantages, mostly reduced performance and being incredibly annoying to implement.

tl;dr; Rendering the coins in NSMBU is hard on NVIDIA/Intel.
 
Last edited by Exzap,
That's the problem, there is no OpenGL extension for this.

I am not sure if you care about the technical details, but in case you or anyone else is interested:
There is this rule in the specification when using multiple render targets/attachments.

(OpenGL 4.5 spec, page 310)

What this means is that if you use a colorbuffer of size 1920x1080 and a depthbuffer of size 1000x1000 then any pixel drawn outside the smaller 1000x1000 rectangle will be discarded. However, AMD goes against the specification and allows to render pixels outside the smaller attachments. That's pretty much what happens in NSMBU/NSLU, where the coin is drawn outside the depthbuffer rectangle.

I actually emailed NVIDIA about this and from what I understand there are no plans to turn it into an extension, but there are workarounds (like rendering everything multiple times, once for each attachment individually or using tricks to simulate a larger depth buffer). All of the workarounds have major disadvantages, mostly reduced performance and being incredibly annoying to implement.

tl;dr; Rendering the coins in NSMBU is hard on NVIDIA/Intel.

Could this be done in another API like Vulkan or DX11, DX12?
 
That's the problem, there is no OpenGL extension for this.

I am not sure if you care about the technical details, but in case you or anyone else is interested:
There is this rule in the specification when using multiple render targets/attachments.

(OpenGL 4.5 spec, page 310)

What this means is that if you use a colorbuffer of size 1920x1080 and a depthbuffer of size 1000x1000 then any pixel drawn outside the smaller 1000x1000 rectangle will be discarded. However, AMD goes against the specification and allows to render pixels outside the smaller attachments. That's pretty much what happens in NSMBU/NSLU, where the coin is drawn outside the depthbuffer rectangle.

I actually emailed NVIDIA about this and from what I understand there are no plans to turn it into an extension, but there are workarounds (like rendering everything multiple times, once for each attachment individually or using tricks to simulate a larger depth buffer). All of the workarounds have major disadvantages, mostly reduced performance and being incredibly annoying to implement.

tl;dr; Rendering the coins in NSMBU is hard on NVIDIA/Intel.

I remember Dolphin having the year-long issue that the coins were only rendered in super-low res (or maybe it was just native res, but looked pretty bad when everything else was at higher res) and not turning. Maybe it's the same underlying issue?
 
That's the problem, there is no OpenGL extension for this.

I am not sure if you care about the technical details, but in case you or anyone else is interested:
There is this rule in the specification when using multiple render targets/attachments.

(OpenGL 4.5 spec, page 310)

What this means is that if you use a colorbuffer of size 1920x1080 and a depthbuffer of size 1000x1000 then any pixel drawn outside the smaller 1000x1000 rectangle will be discarded. However, AMD goes against the specification and allows to render pixels outside the smaller attachments. That's pretty much what happens in NSMBU/NSLU, where the coin is drawn outside the depthbuffer rectangle.

I actually emailed NVIDIA about this and from what I understand there are no plans to turn it into an extension, but there are workarounds (like rendering everything multiple times, once for each attachment individually or using tricks to simulate a larger depth buffer). All of the workarounds have major disadvantages, mostly reduced performance and being incredibly annoying to implement.

tl;dr; Rendering the coins in NSMBU is hard on NVIDIA/Intel.

Exzap, thanks for the explanation .I did hear similar issue in RPCS3 and PPSSPP previously and they are also using tricks to overcome .
 
Am I the only one getting way more stutters on this build?
You are probably getting the same amount of stuttering as last time you used a new Cemu version for the first time. If it's what I think it is (shader cache generation stuttering) they are probably generated anew with every new version.
Play the same track on MK8 twice and the second time around (or even on the second lap) should be much smoother.
But yeah, stuttering is very enjoyment-breaking, more so than minor glitches or pop-ups.
I do hope there will be some kind of solution to this like the Full Asynchronous Shader Cache Generation Dolphin-Ishiiruka offers.
 
That's the problem, there is no OpenGL extension for this...

What this means is...

tl;dr; Rendering the coins in NSMBU is hard on NVIDIA/Intel.

Thanks for the Exzaplination...

As an nivida user, id take accuracy and performance over brute forced coins. And If im correct, collecting coins doesnt unlock anything, plus this isnt a Far Cry/AssCreed collectathon, so im not bothered. Peeps can always play NSMb wii on dolphin if it really bothers them, its the exact same game really.
 
Last edited by CustomEyeBrows,
Rendering the coins relies on AMD-specific behavior in the graphics driver (remember that Wii U's GPU is also from AMD)
Don't expect this issue to be fixed anytime soon on NVIDIA/Intel. It's a nightmare to work around.
Well. That explains alot. Thank you for your info. I didn't know that Nintendo uses AMD as a Processor for their console. :P
I hope that the NX will be Nvidia or so.
 
  • Like
Reactions: TotalInsanity4
Well. That explains alot. Thank you for your info. I didn't know that Nintendo uses AMD as a Processor for their console. :P
I hope that the NX will be Nvidia or so.
It doesn't, it's just easier to replicate on AMD.
Although you are talking about CPUs. Wii, Wii U and GameCube are using AMD GPUs.
 
Last edited by aracom,
  • Like
Reactions: TotalInsanity4
It doesn't, it's just easier to replicate on AMD.
Although you are talking about CPUs. Wii, Wii U and GameCube are using AMD GPUs.

britney-confused-gif.gif
 
Hope I'm not hijacking this thread but I downloaded the 3 games I have on my WII U (Mario, Mario and more Mario ;) ) and 2 worked miraculously (Super Mario 3D World and Super Mario Maker / didn't expect an emu for a current gen console to work so well) and one didn't. The game that doesn't work is Super Mario Bros U -> the download I did, contained the files itself (instead of an "iso"). Any way to convert this as I have no option to run this from within CEMU (or so it seems)?

No problem though if this isn't possible - CEMU is incredible but I will still stick to my WII U for now :) That one has 100% emulation :D

thanks,
/dimi
 
  • Like
Reactions: CustomEyeBrows
Hope I'm not hijacking this thread but I downloaded the 3 games I have on my WII U (Mario, Mario and more Mario ;) ) and 2 worked miraculously (Super Mario 3D World and Super Mario Maker / didn't expect an emu for a current gen console to work so well) and one didn't. The game that doesn't work is Super Mario Bros U -> the download I did, contained the files itself (instead of an "iso"). Any way to convert this as I have no option to run this from within CEMU (or so it seems)?

No problem though if this isn't possible - CEMU is incredible but I will still stick to my WII U for now :) That one has 100% emulation :D

thanks,
/dimi
You will find the solution with a simple search in this thread.
 
  • Like
Reactions: echdareez
Dayum man! Look at the difference between 1.4.0c and 1.4.1!
Super Mario 3D World Final Boss
Edit: Honestly, the 1.4.0c render seems to look like Ōkami and Viewtiful Joe.
Too much Cel-Shading. XD
gXywBr9.jpg
 

Attachments

  • asdas.png
    asdas.png
    209.3 KB · Views: 339
Last edited by Miguel Gomez,
  • Like
Reactions: Growlith1223
Having Strange Issue with Mario kart 8. it hangs the emulator i cant even click it. Task manager shows not responding. It Worked in 1.4.0c. New Super Mario Bros. U and Shovel Knight Working fine with cemu 1.4.1 i am using AMD Driver 16.2.1 Beta Can't try 16.4.1 because AMD no Longer support my card.
MarioKart8.JPG
 
Last edited by Hamza_Farooq,

Site & Scene News

Popular threads in this forum