Since it's not possible to update 300+ shaders manually and automation was possible, I thought that I'd take the honor and create a script that's able to automatically convert all of the shaders to be cross-compatible with Vulkan. And change the graphic pack versions to version 4 of course.
Also, the script has some nifty testing code which compiled every shader as OpenGL and Vulkan, but for that see the details that I've written below.
**Here's the script that I've made to do all of this. No manual edits were needed:**
https://gist.github.com/Crementif/8d98a855b95f219d95298fb3db99deae
Both had some weird stuff going on which the Vulkan converter couldn't successfully compile. Also, the presets in the anti-aliasing might be nice, but they are not even used in the shader 🤔.
Since I wanted to make sure that I didn't broke the shaders after converting the shaders to Vulkan, we need to check if all the shaders weren't broken. Since we're talking about like 400 shaders checking all of them is pretty much impossible and even then,
So, the obvious solution was to automate the checking. Not as simple as you'd think, because in 300 of our shaders we use preset variables which without replacing the value like Cemu does, will make the shader error regardless. So I also implemented some functionality that would read the preset values and types out of the rules.txt file and replace them in the shaders using that information. And then we use Khronos' glslang to compile the shaders, using both OpenGL and Vulkan.
The result was that glslang found quite a few errors in some of the shaders, which I fixed in this commit. I'm considering adding this rules.txt parsing and automated shader compilation testing to the build process.
Also, I fixed Clarity's name and description since Monochromia isn't available anymore and Xenoblade's resolution pack had a lot of weird blank lines before their #version declaration, which my converter didn't like.
Remove 30 fps lock packs for Hyrule Warriors, and Paper Mario Color Splash. These games run at the correct frame rate as of 1.15.7.
Removed the Paper Mario intro softlock pack. Also fixed in 1.15.7.
Also removed the version indicator in Windwaker's contrasty file since any updates to that number would remove all the configuration set by the user for that pack.
They were switched from the previous versions. Besides that, somebody reported it being different then before, but I can't find the difference. (There's a slight difference because the vibrancy in one shader was 0.1375 instead of 0.138 but I doubt this would be a big difference and it does simplify it a little bit).
* Delete 42f0844ab0996fe2_0000000000000079_ps.txt
This shader allows for changing of the color for the pixel-mess texture and or making it transparent/opaque. However its also responsible for the Cursor Text in selection screen. So messing with this Shader also messes with the Cursor text. The best way to hide the pixel-mess is to do it the old "version 2" way.
* Update rules.txt
The best way to hide the pixel-mess is to do it the old "version 2" way. Messing with shaders also affects the cursor in selection screen.
* Update 315d61ad21f97614_0000000000000000_vs.txt
Proper Cast the variables as floats because they were failing to compile.
* Update 4b92e636153d6b54_0000000000000000_vs.txt
Proper Cast the variables as floats because they were failing to compile.
* Delete 1ed6dd85057f3924_0000000000000000_vs.txt
It is not needed as editing this shader won't fix the issue.
* Add files via upload
Fragment Shader that when modified does the same thing as resizing the pixel mess texture. However the shader is reloadable.
* Update rules.txt
Presets to load hide the pixel mess broken effect and set it back to original behavior.
Adds the rounded resolution with it's format along. It also moves it to Enhancements since you wouldn't really get much of a performance boost from it.