Dolphin, the GameCube and Wii emulator - Forums

Full Version: asynchronous shaders questions
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
In the Ishiikura builds there's support for that (unofficial builds). While they have problems, they significantly reduce stuttering in the metroid prime series (or other games that has shader caching stuttering). I'm not an expert, but it seems that if the dolphin team will implent them and imrpove their compatibility and fix the issues, then maybe there will finally be a fix for the stuttering issues in the metroid prime series. If that's not the case, what prevent it from happenning?

BigAll

Well, I'm not an expert either, but I would guess that these unofficial builds go against the philosophy of dolphin to make an accurate emulator. Which is confirmed by "The focus is the gaming experience and speed." which I just read at the very beginning of that thread. (https://forums.dolphin-emu.org/Thread-un...om-version)
The main development team would love to include asynchronous shaders; it's not "against Dolphin's philosophy" or anything of the sort. The Ishiruuka developers simply refuse to contribute the feature, and nobody else has volunteered to port it from Ishiruuka. Contributions are welcome, I think, if you'd like to take up such a task!
(07-19-2015, 01:02 PM)Fiora Wrote: [ -> ]The Ishiruuka developers simply refuse to contribute the feature, and nobody else has volunteered to port it from Ishiruuka.
From what I've read, this isn't the case. I thought one or more of the developers for master were against the asynchronous shaders, because they fix the stuttering during shader cache generation by making various game assets simply become invisible if they haven't been generated yet, and said developer(s) thought the speed boost afforded by such an approach was too hackish and buggy.
From my understanding the devs have known of the async shaders trick for years and just haven't done it because blackness during rendering is not seen as an acceptable tradeoff to fix stuttering during shader generation. Dolphin has benefited a lot from doing things the right way and avoiding hacks, so it's probably the right call.
THere's also the "uber shader" approach (I read that somewhere in the forums), it would achieve similar results but without hacks; however, implementing it would require several changes to current code and nobody is working on it at the moment (AFAIK)...
(07-19-2015, 04:12 PM)Jhonn Wrote: [ -> ]THere's also the "uber shader" approach (I read that somewhere in the forums), it would achieve similar results but without hacks; however, implementing it would require several changes to current code and nobody is working on it at the moment (AFAIK)...

Yes it's indeed very hacky, I just thought that it would be possible to make them more accurate and compatible. What is "Uber Shader"? And if that's the case, then i really hope that someone will try to work on it in the near future, even if it's only for the metroid prime games (I can guess that many people are waiting for a solution for the stuttering).
Shading stuttering happens because shader compilation is done by OpenGL and D3D, and Dolphin cannot control them. Those shader compilation systems were design for PC games, where shaders are compiled well before they are needed and with a minimum performance impact, so they are tuned to be kind of slow. But the GC and Wii don't use shaders, and just call things up from the hardware whenever they want! Hence, stuttering.

The "uber shader" would theoretically allow Dolphin render a generic shader that it can fill with whatever it wants, bypassing the need to compile shaders entirely! It would still be accurate and have better performance, again, in theory. But so far no one has really tried to implement the theory yet.
(07-19-2015, 10:24 PM)MaJoR Wrote: [ -> ]Shading stuttering happens because shader compilation is done by OpenGL and D3D, and Dolphin cannot control them. Those shader compilation systems were design for PC games, where shaders are compiled well before they are needed and with a minimum performance impact, so they are tuned to be kind of slow. But the GC and Wii don't use shaders, and just call things up from the hardware whenever they want! Hence, stuttering.

The "uber shader" would theoretically allow Dolphin render a generic shader that it can fill with whatever it wants, bypassing the need to compile shaders entirely! It would still be accurate and have better performance, again, in theory. But so far no one has really tried to implement the theory yet.

Is there any other way to completely get rid of the stuttering, or at least reduce them without Uber shaders?
Async shaders and the uber shader are pretty much the only techniques known... The shader compilation is the problem, and there is no way to control it since they are a part of the D3D and OGL spec. It's either continue the game without waiting for the shader compilation (async shaders) and get visual errors, or do an uber shader and work around the problem.

Btw, by "better performance" I meant "no more stuttering". The uber shader technique would most likely be more demanding on your PC hardware. But it would fix an unfixable problem without any added issues (in theory) so it might be worth it.
Pages: 1 2