Ryujinx, the open-source Nintendo Switch emulator, has been receiving a number of updates that improve its core functionality and compatibility with the latest Nintendo Switch titles. With a large number of first-party titles already supported on the emulator, other features are being routinely added to Ryujinx. The latest update to come is the addition of resolution scaling that can utilize supersampling to achieve the best possible image. We've included some of the pictures and information from the github distribution so that you can check it out for yourself if you want to do a little experimentation and have a powerful enough GPU.
The latest stable build of Ryujinx, 1.0.4847, is currently available to be downloaded and compiled here. Updated on July 4th, this build fixed crashes that would occur in Animal Crossing: New Horizons 1.3.0. As for the Resolution Scaling implementation, that is currently available on github as a separate fork.Compatibility notes
- Games that use spatially aware effects aggressively (such as Xenoblade's AO) will likely only work correctly with power of two scales (1, 2, 4) - with others they will run into unusual issues. Games that use texelFetch will run into issues in general with non integral scales. With the games I have played [on Ryujinx], these issues are few and far between.
- Games that use a form of Anti Aliasing will still think they are running at 1x, and will likely blur the image. For these games (such as xenoblade... again) you should use a LayeredFS mod to remove the AA. For completeness, I have attached a mod for XC:DE to this PR.
- Scales of less than 1 can reduce texture quality on rendered textures as well. You have been warned!
Drawbacks
While every game is technically supported [for resolution scaling on Ryujinx], there are cases where the game will fall back to 1x on targets you might not want to, and the game might have some graphical issues in the worst case. Here's some specific information:
- Only non-indexed textures on the fragment+compute shaders are fully supported for texelFetch scaling. If a texture outside of this category uses texelFetch, the texture will be blacklisted for scaling, as described above.
- Bindless textures are not fully supported, and do not have a blacklist fallback. If they are used with texelFetch, the scale on the texture will be incorrect.
- If a game uses a render target to store data (such as the output of a fragment shader DXT compression algorithm), scaling will not work correctly on it. You can only hope that it will blacklist and render the target again at a later point. This is a theory as I haven't tested any games that do this.