Home Artists Posts Import Register
The Offical Matrix Groupchat is online! >>CLICK HERE<<

Content

Disclaimer: As usual, you can discuss these news freely outside of Patreon. However, we ask you to not repost or quote this text anywhere else. (Paraphrasing is allowed)


Hi Patrons,

here is a preview of what to expect in Cemu 1.7.6. Keep in mind that development just started a week ago and everything mentioned in this post is subject to change. There is currently no set release date but we plan to spent about 3-4 weeks working on this release.

General plans

For 1.7.6 we will be looking into the following:

  • Separable shaders (details below)
  • Graphic fixes
  • Performance improvements
  • Fixing remaining rare FPU emulation related gameplay bugs (e.g. Splatoon)
  • And as usual, other various bugs and minor problems

If time permits we will also look into audio and compatibility improvements.

Separable shaders

This part will be quite technical and if you just want to read a summary of what to expect from this change, you can scroll to the end.

Let's start with a bit of background knowledge. Here is an image of a modern render pipeline: Image (Taken from the Khronos OpenGL wiki) The image depicts the steps on the GPU to go from some input geometry data to a pixel on the screen. For the purposes of this post we don't have to worry about all the steps and we can boil it down to only these shader stages:

  • Vertex shader
  • Geometry shader (Optional)
  • Pixel shader (Optional) Also called fragment shader

The above applies to OpenGL, DirectX, Vulkan or any other rendering API on PC. For Wii U it's not exactly identical, but similar enough that we don't need to dive into details.

The problem

For historical reasons Cemu always looked at the entire shader pipeline as a whole and shaders were generated in sets. That means that for each possible configuration of shader types, Cemu would generate a new shader set upon first use. This set would contain a copy of the vertex shader, the geometry and pixel shader. If individual shaders were reused but other stages differed, Cemu would create a new set regardless.

It's easier to explain this with an example:

Assume we have 2 vertex shaders (vsA, vsB), 3 pixel shaders (psA, psB, psC) and no geometry shaders.

The game does the following draw operations:

Draw 1: vsA + psA
Draw 2: vsA + psB  
Draw 3: vsA + psC
Draw 4: vsB + psA  
Draw 5: vsB + psB   
Draw 6: vsB + psC  

Question: How many shader sets do we need to create?

The correct answer is 6. Each of the draw operations uses a unique configuration of shader types.

This is where we start to see the inefficiency emerge: There are only 5 shaders (2 vertex + 3 pixel), but Cemu generates 6 sets. With only a small numbers of shaders this isn't that big of a deal, but since most games actually ship with hundreds of shaders the number of possible permutations is huge. Even worse, each shader set contains a copy of both the vertex and the pixel shader. So in total we are generating 12 shaders from only 5 shaders as input.

The obvious but difficult solution

Naturally, we should try to avoid creating shaders whenever possible. In theory the solution is easy: Scrap the concept of shader sets and handle shaders individually.  Modern OpenGL allows us to do that, so why not make use of it.

However, this is easier said than done. There are a few problems that need to be solved: Not all shaders translate well and sometimes the pixel shader affects the vertex shader and vice versa. In such a case we are forced to create and use those shaders in a set because they cannot exist independently. Another problem is that the current render state can affect the generated shaders. For example, if alpha transparency is enabled it modifies the pixel shader that Cemu generates. Meaning we are forced to generate one pixel shader without alpha transparency and one with it.

But ultimately we try to strive for perfection. Thus, for 1.7.6 we decided to scrap the shader set system in it's entirety and replace it with a solution that can handle individual shaders. The idea is that the new solution is as adaptive as possible. Ideally, it should be able handle shaders individually but also be able to deal with cross-shader dependencies.

The only downside:

The massive change in how we handle shaders in Cemu will break compatibility with already existing shader caches and graphic packs (if they use custom shaders).

Separable shaders (summary)

Cemu 1.7.6 will handle vertex, pixel and geometry shaders individually instead of pairing them up into sets. This allows individual shader types to be reused. 

The pros:

  • Faster shader compilation overall
  • Less RAM usage by shaders
  • Better performance

It's too early to give exact numbers yet.

The cons:

  • Breaks compatibility with shader caches from 1.7.5 or below
  • Breaks compatibility with graphic packs if they use custom shaders

Comments

Anonymous

"audio improvements" Great, I cross my fingers for XCX's audio be fixed in a few releases :) . Also can't wait to see the new individual shader workflow in action! Ganbatte!

Anonymous

Post abruptly stops... Otherwise, can't wait

Anonymous

So No FMV Support? :( CemuHook Crashes to often &amp; often runs the game too fast in full screen mode (40-60 FPS in the desert). but I need it to watch the cut scenes in Zelda. Guess I'll have to wait another 2 months....

Anonymous

Wow this sounds like another pretty good upgrade. Keep up the good work you guys!

Anonymous

You can disable GPUfence hack to fix the crashing/FPS issues.

Anonymous

Thanks for the news. Sounds like a lot of work. Good luck and keep up the fantastic work! I'm looking forward 1.7.6.

Anonymous

Realy enjoy getting a more detailed explanation of the design decisions!

Anonymous

Breaking compatability with previous shader caches seems like a very insignificant sacrifice for better performance.

Anonymous

I think the broken compatibility might be a good thing, considering the fact that a lot of people still use the fake 19k BotW cache claiming it somehow boosts their performance. This will put an end to that bullshit. Well, at least until someone​ makes a new fake cache for 1.7.6.

Anonymous

You guys are earning ALOT of money the last month. My fullest respect to you that you keep working and listening to the community. Greatings from germany and a lot of love!

Anonymous

I really enjoyed this post, one of the best you've done so far. Super excited to follow the development of Cemu!

Anonymous

<a href="http://i.imgur.com/C1O9Sox.png" rel="nofollow noopener" target="_blank">http://i.imgur.com/C1O9Sox.png</a>

Anonymous

Yeah, do what you need to do, those cons are really negligible imo.

Anonymous

Pros outweigh the cons

Anonymous

It's not a cons at all.

Anonymous

People wont be happy about breaking compatibility with shaders and graphics packs :)

Anonymous

Shader caches : It will be easy to generate new ones, Graphic packs : ONLY the graphic packs with custom shaders will need to be updated, and this will be easy to update So it is completely okay :D Good job devs ^^

Anonymous

Good ideas! I think it's better for the future of cemu, and at the moment access to the cache is too long with 19k cache, many people use methods with Ramdisk because of this ... we will have Small bugs on 1.7.6 but with time and fixes it will be much more perfomant in the future ... Thank you team cemu ^^

Anonymous

Ehh, new caches and packs can be built, the amount of difference this change will make is too significant in comparison to what we lose

Anonymous

OK-ley Do-ki-ley programerinos!

Anonymous

I think it's brilliant and totally worth the temporary lost. Do the shift. I'm for it.

André Malcolm

It's worth breaking shader compatibility for the long run. I'll just have to work hard to build them up again haha.

Anonymous

nice work guys :)

Anonymous

I wonder what this will do for ReShade.

Anonymous

looking good. excited about improved performance.

Anonymous (edited)

Comment edits

2023-02-10 01:05:51 これ読みたくて支援させてもらってます続き待ってますうううう
2017-04-30 22:27:32 it should not really affect Reshade as Reshade affects frame buffer not the individual pixels think of reshad as a image mask for the whole scene, Pretty much just coppies whatever is in the frame buffer and adds an effect to it.

it should not really affect Reshade as Reshade affects frame buffer not the individual pixels think of reshad as a image mask for the whole scene, Pretty much just coppies whatever is in the frame buffer and adds an effect to it.

Anonymous

Finally some splatoon love

FL1NTZ

So we have to use a different format for shader and graphic packs, so what? If a newer system increases performance in games, then I'd say it's the way to go and much of the community would agree. In my opinion, there's nothing wrong with someone playing the games they love AGAIN to use the new shader system. Personally, I see it as an opportunity to make games better and not impeding in the slightest!

Anonymous

Thanks for the interesting post. If I understand it correctly, the idea will be to create individual shaders except where sets are specifically required (the example given was where a pixel shader affects the vertex shader), is that correct?

Anonymous

Can't wait till they add more controller support for other coop games like New Super Mario Bros U, Super Luigi Bros, Donkey Kong Tropical Freeze, Yoshi's Woolly world, etc. so I can play in 2-4 player mode with my kids:). One day I imagine. Thanks for all your work.

Anonymous

You guys shouldn't worry about how changes you make to the emulator affect us beta testers. I would much rather a more functional / optimized engine first.

Anonymous

If it means to improve performance for a wide array of systems (AMD, INTEL), bring it on, ditch the old shaders. I'm looking forward to play BotW with no glitches and stable 20~25 fps. Excellent job Exzap and Petergov.

Anonymous

fx 8350 at 4.5 evga 970 ftw+ ddr3 hyperx 2133 msi 970 gaming mb 512gb ssd ...4k monitor...running BOTW awesome ,,,TP awesome WW awesome and super mario u awesome...no fenceskip,,,and 175 works great for hours

Anonymous

I wonder if this means the shader caches will be smaller? It seems like they're going from exponential to polynomial in number of operations but I don't know how that translates to memory.

Anonymous

Great insight, thanks. If I understand it correctly, this might be a really big leap forward. The cons are, none really. For every major change in the emulator, all the third party things like graphic packs, cemuhook, personal shader files etc might break. This should come as no suprise to anyone. At the moment you get a lot of lag while its creating the sets for later use, naturally. Plus the emulator has to handle tons of shader set all at the same time, which I can imagine has a hit on performance. Keep it up, you guys already deserve a medal. I really hope we get some more games running, after all you've implemented and optimized in the last few releases.

Anonymous

Please, Work in this game: Pokkén Tournament

Anonymous

Awaiting BOTW to run the smoothest 30fps it can run on PC . So it is as smooth as runs on the Switch!

Anonymous

Amazing

Anonymous

Can somebody please send me a ccc file optimal for DualShock 4 support? Can it be usable for gyroscope?

Anonymous

Loved reading that post @Exzap. I am excited for what you have planned. Hope it all works out. Thank you. And additionally, if you can also look into why MH3U doesn't boot as a sidequest , that would be amazing.

Anonymous

Hello , Improving the use of ram is a good thing. On the other hand I hope that the 4K, High resolution and AA Removal packs will continue to work or will be made compatible with the future 1.7.6. Let's cross the fingers ...

Anonymous

About the cons, these points will be created again... the gain of performance and RAM usage is more important (I and you think). If you can use these improvments to avoid CPU and GPU problems (crash you talked about if the CPU is too slow to prepare things to GPU) it will be perfect

Anonymous

i think and volkan is good option but and the opengl is one good option that need every emulator yes do it(Breaks compatibility with shader caches from 1.7.5 or below Breaks compatibility with graphic packs if they use custom shaders) we dont care

Anonymous

Interesting news. Good luck for your work. Thanks

Techrev

Nice. Exciting :D.

Anonymous

Just wanted to say, great job guys!

Anonymous

Good luck with the shader seperation idea !

Anonymous

Really nice :) Will you fix the flickering glitch inside the divine beast Vah'Ruta ? (Zelda BOTW)

Matt Hargett

Given the incompatible cache changes, can you update the major version number? Or at least minor version number? Awesome work on the FPU stuff, that is historically a huge pain to implement in a way that is both reasonably compatible and performant!

Anonymous

Great news! I'm really looking forward to it :).

Anonymous

The new version rocks. 25 fps instead of 5-15 fps (with gpuFence-Hax by sshnuke). A suggestion... work together with the ppl provided this feature. Tested with i5-6300HQ &amp; Nvidia GTX 970M.

Anonymous

Bro if you want the same result just change your gameprofile files, the only thing is that with cemuhook you can play cutscenes

Anonymous

this has been available to use within cemu since 1.7.4. you enable disableGPUFence in the gameprofile.

Anonymous

Nice, good luck in this version.

Anonymous

"There is currently no set release date but we plan to spent about 3-4 weeks working on this release" in total or from now on? I mean you probably already worked a few weeks on this.

Anonymous

yisus!!, thats a lot of info to dig. Hope all works as planned. Keep the good work.

Anonymous

Very nice! Keep up the good work. Simple questions: - At which point do you know if "the pixel shader affects the vertex shader and vice versa" ? - The shaders are present in the game itself, is there a specific reason you are only translating them on the fly ? Best regards.

Anonymous

We need a way to generate 100% complete shader caches without having to generate them manually by playing the game. Mostly because there are a lot of bad shader caches out there floating around that have caches from multiple games mixed together. This would make the broken pre-1.7.6 shader cache support less of a problem.

Anonymous

And so we don't have to hunt down shader caches made only on 1.7.6.

Anonymous

how many fps do people get on average on ZBOTW ?

Anonymous

I'm getting a stable 30fps at 1440p, using GTX1080 and i7-5820k @ 4.2GHz, very nominal temps since I'm on water cooling and this isn't a huge load.

Anonymous

I have a Quad Core 2.40 Ghz 8 Gb RAM and a Nvidia GTS 450 1GB it's a low end pc and I play ZBOTW in shrines runs perfect outside in some parts is acceptable but still goes slow it's frustrating my question is with the new version Am I going to be able to play it with better fps rates and more fluid gameplay having this pc?

Anonymous

Why do old shader caches have to be thrown away by the community? Surely compound shader caches can be converted to the new type, by splitting them into their component parts or whatever fragments the new system requires?

Anonymous

What's up with people in the comments and the eternal fight with punctuation?

Anonymous

Certainly would be cool if it was possible to convert older caches...

Anonymous

Yeah, better switch the light switch on and off a prime number of times to cleanse ourselves!

Anonymous

Never. You are using a GPU that is 7 years old. It would be surprising if you could run any sort of modern game on it, more so emulating one considering that it is harder than running a game natively on its system. The problem here isn't CEMU, it's you ancient hardware.

Anonymous

When will you fix the not working pictures in BotW or are you planning to fix it in 1.7.6?

Anonymous

Hey Markus there is a fix for not own taken pictures but for all the pictures Form Nintendo that means after u take a picture u can see one in your compendium

Anonymous

Did you change the way you worked with the polygon shaders? Was it because nvidia was yet to fix their bug or did you just find a better way to use the shaders (not that I know much of the technical details, I'm just curious)

Anonymous

Maybe it's my dump but in paper Mario, while in combat, when you choose your card, the button to advance it to paint the card doesn't work. All else does

Anonymous

Any thoughts to that?

Anonymous

Antoine: it's a known bug. It seems to happen when you run too low on cards (not all the way out, but down to one screen full, for example). The only temp fix I've found is just buying a ton of cards and making sure you're well stocked. Seems to work fine!

Anonymous

Exzap ! I don't see #patreon on discord :( but i'm a patreon :(

Anonymous

Try unlinking your account and relinking it again in discord

Anonymous

so basically you are going to build a generic shader for each(geo,vert and pixel) that you can plug in data on the fly?? I mean that "Sounds" like the most logical move (But hey I'm not versed in shader programming at all), I just know from a real world logic kinda thing If I were gonna physically build something like that I'd make a generic with placeholders for any variable that could be changed so I didn't have to rebuild it every time, just read the variables on the fly, do the math then pass it on to the next section.. I know it's not quite THAT simple though..lol

Anonymous

UPDATE ? WHATS HAPPEN?

Anonymous

Thanks to you guys, I can play full Speed smash bros wiiu on my windows tablet!!!You guys rock! Hope you see my video and see the potential you gave low spec gamers such as myself. Thanks again @team cemu <a href="https://youtu.be/r-t_dyu0w_k" rel="nofollow noopener" target="_blank">https://youtu.be/r-t_dyu0w_k</a>

Anonymous

hi all i have a error when i start cemu (couldn't initialize directinput)

Anonymous

Do you have any idea ?

Anonymous

if you have an antivirus switch off the sandbox mode on it and if you tried already dxdiag and didn't get an error it should work

Anonymous

thx :)

Anonymous

<a href="https://www.youtube.com/watch?v=pZ2MZR30I9E" rel="nofollow noopener" target="_blank">https://www.youtube.com/watch?v=pZ2MZR30I9E</a> Hope 1.7.6 can fix the botw 1.2 freeze

Goku

Reshade always fucks up my game :(

Anonymous

i hope it works on my crappy intel hd only gtx card has died :(

Anonymous

Будет ли сделана система автоматического сбора шейдерного кэша? Will there be an automatic shader cache collection system?

Anonymous

Hello Team Cemu. In World 3-3 level Yoshi's Woolly World crashes the game to such an extent that an error window appears and the emulator is closed. Also, if they could improve the speed of loading of the game and that the subject of the shader of game is arranged so that the game does not lock more. And if I try to jump to the World Level 3-4 begins to fail the graphics in the level. I hope they get it fixed soon And also if they could fix the Lego Dimensions theme so that the game can be playable. regards

Anonymous

if you could hand me 1 million dollars that would be great regards!

Anonymous

When is 1.7.6 coming?

Anonymous

if you want a million dollars go sell some hyrule herbs ? and pimp out zelda lol

Anonymous

para cuando el 1.7.6

Anonymous

2 semanas

Anonymous

looking fowarder for 1.7.6

Anonymous

Great job, team Cemu! :)

Anonymous

I love Cemu and The Team

Anonymous

No date so far, keep yourself informed of the latest news at discord. The devs don't usually answer through patreon.

Anonymous

&gt; "will break compatibility with already existing shader caches and graphic packs (if they use custom shaders)" &gt; "Breaks compatibility with shader caches from 1.7.5 or below" Are two different outcomes. Which is it?

Anonymous

both!! it isn't either/or... any shader cache from 1.7.5 (all of them basically) will not work with 1.7.6 AND and graphics packs that use custom shaders will no longer work (the shaders will be incompatible witht he new code)

Anonymous

so no news? oops ..

Anonymous

POKKEN!!!!! PLEEEEEASE, WE NEED IT SO MUCH!!!!

Anonymous

FUCKING POOOOOOKKEEEEN, FUCKING PLEEEEEASE!

Anonymous

whats with the swearing mate

Anonymous

cheers! great work

Anonymous

go poken a chick

Antonio Ferrari Cazarín

When is the new version going to be released and what is being worked on?

Anonymous

Do u read the post before posting second question? Shader System will be way different then before.

Anonymous

Looking forward to the new version, but of course Team Cemu, take your time and don't rush :) Your shader improvements will be very important for the overall performance and stability. I can't wait to get the new version in my hands.

Anonymous

não ligo de demorarem. mas queria só que trabalhassem em uma maneira de podermos jogar o Pokkén Tournament.

Antonio Ferrari Cazarín

Yes, I read the post, I Ment in the graphics department, for me, my biggest problem is the weird lighting artifacts that break the immersion, these appear randomly

Anonymous

...a long time ago...

Anonymous

One month.

Anonymous

1.8 is so laggy now compared to before....thanks for the effort in getting it out quick, but i think it may need to be tested a little more. I can't even play BOTW now :(

Anonymous

bayonetta 2 still flickering and sound is bad as well , pokemon is not playable just exactly like the previews version of the emulator , paper mario still unplayable , I just tested every game I mention here, no differences between this version and the version 1.7.5

Anonymous

thats just bc all your old shaders arent any good anymore, itll stutter HARD once it finds shaders its never seen(which is all of them now lol). but run around for a bit (i just backed up my save and started a new game) and redo the great platue part and the 4 shrines, after doing that im at almost 4k shaders already and its running smooth af

Anonymous

Paper Mario is playable, you have to skip the opening cutscene by tapping a button or using a savefile past the start of the game.

Anonymous

Thks for response I know u can run the game that way but I meant graphic but on chapters also freezing on some stages.