• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

yuzu updated with Resolution Scaler - Play Switch games in 8K

8BiTw0LF

Banned
New Feature Release - Resolution Scaler
Written by CaptV0rt3x and GoldenX86 on October 24 2021

Hey there, yuz-ers! For those of you eager to go beyond the limits of Switch hardware and experience the full potential of Switch games, the wait has finally ended. Our most requested and anticipated feature — the Resolution Scaler — is finally here!

This new and massively improved Resolution Scaler is now available in the latest yuzu Early Access builds.
We will be working diligently towards bringing this exciting new feature to our Mainline builds as soon as it’s ready for a full release.

What is Resolution Scaler?​

Resolution Scaler is a new yuzu feature, which scales the dimensions of textures that Switch games render to, and then renders the games at the scaled resolution. This allows games that were designed to render at lower resolutions (720p/900p/1080p), to go far beyond what was intended and be played at much higher resolutions (2K/4K/8K) in the same window!

The massive undertaking to reimplement this complex feature was only possible thanks to the combined efforts of our talented developers Blinkhawk, BreadFish, epicboy, and Rodrigo.

metroid_dread.png


Old Scaler​

Blinkhawk implemented the original Resolution Scaler back in July of 2019. However, the approach he took to achieve that was a bit different. It was inspired by Cemu’s graphic packs, but rather than having a manual graphics pack developed for each title, it would automatically generate scaling profiles as the user played.

The generation algorithm used a database that recorded texture types and whether they were scalable or not. The database was initially empty and, as the game ran, the algorithm would keep learning which textures to scale and which not to. This approach was necessary, because of how yuzu was initially designed.

Originally, yuzu’s memory reads were reactive — meaning textures were downloaded only when games tried to read them and hence it wasn’t possible to know which textures were going to be downloaded.

Although these memory reads were fixed a few months later, the Scaler still needed changes to be made to the management of uniform buffers, so that it would be supported on drivers other than Nvidia. However, the planned rewrites of the Texture Cache, Buffer Cache, and the massive GPU emulation overhaul with Project Hades further delayed developers from working on the Scaler, resulting in it never getting merged.

aoc1x.png

Hyrule Warriors: Age of Calamity (1x)

aoc3x.png

Hyrule Warriors: Age of Calamity (3x)

Enter Project ART​

Once all of the heavy lifting subsided, Blinkhawk quickly went back to working on the Resolution Scaler and instead of continuing work on the original scaler, he decided to rewrite it from the ground up.

Learning from the experiences of the original, Blinkhawk designed and created the new scaling system, which took a significant amount of time and effort. He initially researched and experimented with a lot of different design approaches and learned their challenges, before finally landing on this new scaling system.

botwbilinearzoom.png.jpg

The Legend of Zelda: Breath of the Wild (Bilinear)

botwfsrzoom.png.jpg

The Legend of Zelda: Breath of the Wild (FSR @ 2x)

Unlike the original scaler, which was inspired by Cemu’s profile-based scaling, Project ART uses a rating system. The meticulously designed rating system works by having a set of rules dictating which render targets can be scaled and having a rating for each texture. We couldn’t simply use a binary “YES/NO” system because, unbeknownst to us, some games may render textures only once. Scaling these is pointless and has the potential to break them.

For the uninitiated, render targets are just textures that the game renders to. Textures can only earn 1 credit per frame. And to earn that 1 credit, the texture itself as well as any other textures in that renderpass, all need to satisfy our set of rules. After accruing 2 or more credits, the texture will be scaled and now all rendering will be done in the scaled resolution for that texture.

The textures keep earning more credits as frames pass. But if in any frame, even a single texture within a renderpass fails to satisfy the set of rules, all texture scores will be reset to 0. If a texture interacts with other textures, its new rating will either be based on the current rating of those textures or will be increased to the maximum possible rating, if one of those textures is already scaled.

dread_bilinear_zoom.png.jpg

Metroid Dread (Bilinear)

dread_fsr_zoom.png.jpg

Metroid Dread (FSR @ 2x)

The Rest of the Puzzle Pieces​

After the scaling system was ready, Rodrigo helped implement the shader patching required for scaling. This was needed to ensure shaders behaved properly when textures were scaled.

While Blinkhawk was working on improving scaling in Vulkan and the texture cache, epicboy was working in parallel to add scaling support on the OpenGL side. But little did they know, their bug squashing crusade was just about to begin.

As scaling is intrusive, bugs can occur in a myriad of ways. Scaling occurs when games load in textures, which is usually during loading screens, but the visual bugs tend to happen later during gameplay. This makes it quite hard to figure out where the bug originally manifested.

smp1x.png

Super Mario Party (1x)

smp3x.png

Super Mario Party (3x)

Fast-forward a few weeks, and thanks to continuous iterative internal testing, our developers were finally able to fix most of the bugs they came across.

With much of the scaler work nearly being done, Blinkhawk ported some texture filters from Citra and adapted those to be scaling filters for yuzu. BreadFish later tuned them and also added a little something extra, AMD’s FidelityFX™ Super Resolution (FSR)!

smo1x.png

Super Mario Odyssey (1x)

smo3x.png

Super Mario Odyssey (3x)

Benefits of Project ART​

The feature-set of Project ART includes the following:

  • Native Resolution Scaling:
    • Upscaling (2x, 3x, 4x, 5x, 6x) and Downscaling (0.5x, 0.75x).
  • FXAA Pre-filtering Pass
  • Fixed various bugs introduced from the Texture Cache Rewrite (TCR).
  • Window Adaptation Filters
filters.png.jpg


mk8bilinearzoom.png.jpg

Mario Kart 8 Deluxe (Bilinear)

mk8fsrzoom.png.jpg

Mario Kart 8 Deluxe (FSR @ 2x)

What to expect from Project ART​

The Resolution Scaler requires much more VRAM as compared to games running at their native resolutions. Here are some minimum and recommended values based on our testing:
scaling.png


Upscaling works with most games! We currently know of two games that don’t upscale - Paper Mario: The Origami King and Crash Bandicoot 4: It's About Time. These games are incompatible because they use a compute shader to render an image, which is challenging to work around. However, thanks to mods, Paper Mario: The Origami King can be upscaled with a workaround discussed below.

Downscaling, surprisingly, turned out to be more stable than we thought. With this, you can gain up to 20% performance at the cost of reduced quality. It works for most of the games we tested, but our testing has been limited. We currently know of one game that doesn’t downscale (but upscales) — Sonic Colors: Ultimate.

acnh%201x%2030fps.png.jpg

Animal Crossing (1x 30FPS)

acnh%2005x%2036fps.png.jpg

Animal Crossing (0.5x 36FPS)

Some games that have their own FXAA need a mod to disable their built-in FXAA. This is because the games use hard coded texture dimensions in their FXAA filters, which leads to poor anti-aliasing quality or artifacts. Pokémon Sword/Shield needs the No Outlines mod for optimal picture quality, as the outlines don’t scale correctly.

Kirby Star Allies is known to have an additional performance cost when upscaled. This is caused by the need to downscale textures before upscaling in order to bypass some crashes and issues in the game.

Special thanks to our community member and modder theboy181, who created new mods that help with upscaling some of the games listed earlier.

Conclusion​

As we couldn’t fully test the Resolution Scaling with the entire Switch game library, we look forward to all the user feedback we will receive. Your reports will be important in fixing bugs and polishing the Scaler to be the best experience possible.

If you encounter any issues, bugs, or crashes, please reach out to us via our Discord Patreon channels. We hope you love this new feature and will be back with more exciting news in the future! Happy emulating!

Source: New Feature Release - Resolution Scaler - yuzu (yuzu-emu.org)
 
Last edited:

TIGERCOOL

Member
Very cool. Been messing around with Ryujinx over Yozu because it had resolution scaling. Will definitely check it out.
 

Kuranghi

Member
Great information. I would like an answer to this question if you can though, I've asked before but got no answer really:

Can you actually play a Switch game on Yuzu and on the first time through each area have no stutters/bad frametimes from cache generation or anything else that would cause stutters within the emulation process?

This is all fantastic but whats the point of generating 100s of frames at 8K or whatever if the frametime graph is a mess, I would rather play it natively in that case, even with the subpar IQ of Switch. If its like Hyrule Warriors 2 and its really poor performing on official HW then I get emulating it because even with framepacing issues its going to look much better probably, but when the game basically runs at locked 60fps (like Dread) I don't see the point.

I favour IQ over framerate a lot of the time, I'll go to 30 to get native 4K or higher settings a lot of the time (more recently since my GPU is aging) but it still has to be well-paced and without high input lag, or else its pointless imo.
 
Last edited:

GHG

Gold Member
Great information. I would like an answer to this question if you can though, I've asked before but got no answer really:

Can you actually play a Switch game on Yuzu and on the first time through each area have no stutters/bad frametimes from cache generation or anything else that would cause stutters.

This is all fantastic but whats the point of generating 100s of frames at 8K or whatever if the frametime graph is a mess, I would rather play it natively in that case, even with the subpar IQ of Switch. If its like Hyrule Warriors 2 and its really poor performing on official HW then I get emulating it because even with framepacing issues its going to look much better probably, but when the game basically runs at locked 60fps (like Dread) I don't see the point.

I favour IQ over framerate a lot of the time, I'll go to 30 to get native 4K or higher settings but it still has to be well-paced and without high input lag, or else its pointless.

It will ultimately come down to how strong your CPU is.

Also if you've got it set up right it shouldn't need to compile the same assets more than once so only the initial time new assets are loaded should be rough.
 

Holammer

Member
Great information. I would like an answer to this question if you can though, I've asked before but got no answer really:

Can you actually play a Switch game on Yuzu and on the first time through each area have no stutters/bad frametimes from cache generation or anything else that would cause stutters within the emulation process?

This is all fantastic but whats the point of generating 100s of frames at 8K or whatever if the frametime graph is a mess, I would rather play it natively in that case, even with the subpar IQ of Switch. If its like Hyrule Warriors 2 and its really poor performing on official HW then I get emulating it because even with framepacing issues its going to look much better probably, but when the game basically runs at locked 60fps (like Dread) I don't see the point.

I favour IQ over framerate a lot of the time, I'll go to 30 to get native 4K or higher settings a lot of the time (more recently since my GPU is aging) but it still has to be well-paced and without high input lag, or else its pointless imo.
If you have enough computer it's far less noticeable, but you could download & install a completed shader cache and use that instead of generating it yourself. Never tried that myself, but it's an option.


Played a lot of Animal Crossing at 1440p with Ryujinx which already had this feature, but not Vulkan support, so it'll be fun to try when the update goes public.
Pictured: It's Sunday, my dudes!

28E08D81E9FBBB877E8D014ADEC2E122A3B6DF2B
 

Notabueno

Banned
The fact they still haven't worked on making one of it's major title, Luigi's Mansion 3 running great makes me not want to bother with Yuzu again yet.
 

ACESHIGH

Banned
Between yuzu and ryujinx which is the less CPU bound emulator? I think so far I had better performance with yuzu buy YMMV.
 
Ended up grabbing Yuzu Early access, I bought Dread, but haven't played through much. I seriously want to get this up and running at 4k/60fps. I just hope it doesn't crash much, lol.
 

TIGERCOOL

Member
Ended up grabbing Yuzu Early access, I bought Dread, but haven't played through much. I seriously want to get this up and running at 4k/60fps. I just hope it doesn't crash much, lol.
you can run dread with an unlocked fps fyi. It's one of the few games that doesn't lock its game speed to the framerate. Played it at 4k (supersampled to 1440p)/120-140fps on a ryzen 3600 and 2070.
 

kiphalfton

Member
Ripping/dumping games on Wii and Wii U is super straight forward. Is that still the case with Switch? I think that's the biggest hurdle and takes the most energy, is learning the process involved with doing that. Pretty daunting.
 

jaysius

Banned
Emulators doing what Nintendcan't but more like Nintendon't want to do because that would cost money.

It's really sad that the people having the best experiences with Switch titles are people emulating them, instead of the people paying good(and too much) money for the experience.
 

Ezquimacore

Banned
Also just so people know, you don't need the most expensive hardware. I have a mini PC with a 1050 ti, 16gb ddr4 and a Ryzen 3300x and can upscale every game I have at 1440p and even 4k for the least demanding games, or could use FidelityFX SR for more demanding games. They're doing an amazing job with this emulator.
 
So I was playing 4k/60FPS with FSR locked SOLID with drops only in cutscenes. It doesn't look bad at all and while streaming on twitch at 1080p 60FPS... my CPU has done me proud. No drop in fps, no thermal spikes. Everything has been lovely. I think it's time to replay all of my Switch games on this thing. (I am aware not all games scale well, I have been combing through the Yuzu site's information within the OP.

I want to add, Dread has been a GOOD FUCKING game. Love it, so far.
 
Last edited:

Graciaus

Member
So who is better these days Ryujinx or Yuzu? Switch progress has been crazy. Now if only I could upgrade to take advantage of it...
 

TIGERCOOL

Member
So who is better these days Ryujinx or Yuzu? Switch progress has been crazy. Now if only I could upgrade to take advantage of it...
They're both pretty great but I'd give a slight edge to Yuzu with this update. Vulkan support and fsr is really nice and I feel like it has more options to optimize each game.
 

nkarafo

Member
It's really sad that the people having the best experiences with Switch titles are people emulating them, instead of the people paying good(and too much) money for the experience.
Pretty sure all the users who have a PC, capable of emulating the Switch at such quality, also paid good money for the experience.
 

Sakura

Member
Is Switch emulation really that good? I tried using a 360 emulator the other day and it was still trash.
 

jaysius

Banned

The fact that this is possible with the base assets and some heavy tweaking makes me hate Nintendo even more.

I wouldn't expect this kind of treatment from a console but even half of this could be possible if those schulbs would stop with the gimmicks and put the hardware they're charging for into the machines they're selling. This kind of stuff would encourage 3rd parties to make games for their machines. If someone making an emulator can do this, someone being paid big bucks could certainly come up with a reasonable solution better than what we have with the Switch.

Pretty sure all the users who have a PC, capable of emulating the Switch at such quality, also paid good money for the experience.
Oh jesus, semantics. When I was talking about PAID good money I mean people that have paid to use a license from Nintendo(bought the game) along with paying for the hardware from Nintendo.
 
how easy is it to use this? last time i looked into it you needed an old switch model with a specific firmware. so legally that would restrict this to a small number of people. has this changed? i mean can anyone with a switch now dump their games?
 

cragarmi

Member
how easy is it to use this? last time i looked into it you needed an old switch model with a specific firmware. so legally that would restrict this to a small number of people. has this changed? i mean can anyone with a switch now dump their games?
I've no idea, but morally speaking if you own the games you 'acquire' from the usual places, I wouldn't feel guilty about doing so.
 
Top Bottom