Introducing customizable graphics (Patreon)
Content
tomorrow is the release of Cemu 1.7.0 and as promised it's time to share what we have been working on for the past month!
Introducing 'Graphic packs'
Since the very first public release of Cemu, people have asked about the possibility to increase the native resolution of a game. We always responded by saying that this is highly problematic, because Wii U is very different to other emulated platforms and the only way to accomplish upscaling is by giving the emulator game-specific knowledge. In other words, someone has to sit down, look at every game individually and then tell Cemu how to upscale that particular game.
That's exactly where the new feature steps in. But saying it is just intended for upscaling is a massive understatement.
What are 'Graphic packs'?
Graphic packs behave like graphic mods. Anyone can make one (assuming they have the necessary know-how) and users can download and install them. In the options of Cemu individual graphic packs can then be enabled or disabled. Additionally, multiple graphic packs can be active for the same game as long as they don't interfere with each other. You can mix and match according to your own personal preference.
Off the top of my head, here is what graphic packs can potentially do:
- Change the game's internal resolution
- Increase the resolution and quality of shadows
- Modify or remove post-processing effects
- Workarounds for graphic bugs until we find a proper solution
- Change lighting related aspects of the game
- Add or change any visual aspect of the already existing materials
- Custom Anti-Aliasing
From a technical standpoint, graphic packs allow the following:
- Overwrite certain texture properties (like the resolution)
- Overwrite shaders (very powerful since everything uses shaders)
- Not yet supported but planned for the future: Custom textures and some more complex control over drawcalls
However, there are some limitations as well. Graphic packs intercept at the rendering level, so they can't alter the logic of the game. For example, using just graphic packs it's not possible to upgrade a 30FPS game to 60FPS.
By default, Cemu will come with a bunch of graphic packs already pre-installed. We tried to cover as many popular requests as possible, but ultimately the idea behind graphic packs is that they are created and maintained by the community.
Most of the pre-installed packs are there to upscale the internal resolution of games from 720p to 1080p or 4K. Here are some screenshots:
Mario Kart 8 (720p, 1080p, 4K)
Pikmin 3 (720p, 1080p)
Super Mario 3D World (720p, 1080p)
Splatoon (1: 720p, 1080p 2: 720p, 1080p)
XCX (720p, 1080p, 4K Other: 1080p(1), 1080p(2))
Just for testing I also created a graphic pack which reduces the bloom intensity in Wind Waker HD. (Default, with graphic pack active)
Personally I am very excited to see what the community can accomplish using this level of customizability! Like most aspects of Cemu, this is work-in-progress and we will continue to add more functionality to the 'Graphics pack' feature in future releases.
For those interested in creating their own graphic packs:
As mentioned earlier, in tomorrow's release, there will be a bunch of graphic packs preinstalled. You can look at those to get a basic understanding on how they function. Additionally there will be an example graphic pack, containing more detailed explanations. Note that making more advanced changes will require in-depth understanding of engines and/or of how modern graphic APIs work.
A clarification about the version numbers
Last time the Cemu version jumped from 1.5.* to 1.6.0 it caused a bit of confusion because some users assumed that a major version change also means a jump in performance/compatibility. But that's not the case. The major version is increased whenever we add a new feature that we consider milestone-worthy. It's arbitrary to some degree because certain features are very close to being a milestone but don't make the cut. Additionally, over time we became more selective on what to consider a milestone.
tl;dr: The version numbers don't indicate the amount of changes in a single update. Don't read too much into it. Tomorrow's release doesn't have any performance or compatibility related changes.