[SOLVED] Latest update resets shaders for every game on every restart

Hey guys! There was an update today and now every time I start RetroArch, my graphics shaders are unloaded.

I need to load a shader preset every time I launch a game.

How can I get RetroArch to load shaders automatically like it did until this update?

Ah well, sorry for posting before checking out the release notes :slight_smile:

My bad! If anybody else is wondering the same thing, please check out the RetroArch 1.7.8 release notes: https://www.libretro.com/index.php/retroarch-1-7-8-released/

After selecting a shader, select “Save”, then “Save Global”.

Yeah, it’s ultimately a better, more predictable setup. The old way led to some unexpected edge behavior, so this way takes a little more deliberate effort.

OTOH, you can now load shaders from a command line switch, so it’s easier to integrate with launchers and scripts.

Yeah, I agree, it’s a pretty cool change and it’s much more intuitive now.

I’m excited about the new versions you guys keep pushing out, love RetroArch!

1 Like

I still don’t understand how to use it :-/

For example, I run a NES ROM in Nestopia. Then I go to “Shaders”, then toggle “Video Shaders” from “OFF” to “ON”, then “Load Shader Preset”, then “Save”, and “Save Core Preset.”

It doesn’t work. Next time I start the Nestopia core, “Video Shaders” is set to “OFF” again.

Yes. For some reason video_shader_enable = "false" seems to stick in retroarch.cfg. (false is default, might be the reason).

The way I fixed this is to assure video_shader_enable = "true" in retroarch.cfg

Yep, thanks. Missed that in the config file. It works now.

The new system is pretty confusing though. I’m not sure why it works that way. It’s supposed to make things less confusing according to the blog, but actually it’s more confusing now.

Previously, if you changed shaders, they would be loaded by default if the core or game didn’t have a shader override. That is what one would expect since the rest of the settings work in exactly the same way: if you change something, it becomes the new default unless there’s an override. The new behavior diverges from that. Now if you change something, it’s not the new default, contrary to everything else. That is confusing because it’s not consistent with the rest of RA.

Also, you can’t have the global setting be a no shader config. If you disable shaders, the “Save” menu disappears so you can’t have that be the global setting. If you enable it and leave shader passes at 0, you can’t save it as the global setting (you get an error while trying to save it as a preset.)

So my 2 cents opinion is: the new system is worse than before.

I disagree. The new system has more consistent behavior. Having video_shader in retroarch.cfg was indeed inconsistent for me, mostly when creating and using config overrides through the GUI.

For a no shader config, nearest or bilinear can be used and saved as a global preset. A tooltip for this might help.

EDIT: shader presets can now be easily removed from the GUI (for a no shader config).

This is the default behavior. You don’t need a no-shader global shader because default behavior is no shader globally. Right?

The core-specific shaders will not load then. For example if I don’t want a shader for anything else than NES and PS1, then NES and PS1 won’t get a shader either! It’s not possible to have a “no shader” default and only use shaders for the cores you want. You need to either use shaders for everything, or for nothing.

Hmm, I just loaded a core (snes9x) with no global preset and no core/game preset. No shaders.

Then, I loaded another core (genplusgx) with no global preset and no core/game preset. No shaders.

Then, I loaded a shader preset (crt/crt-aperture.slangp), save > save core preset.

Switch back to first core. No shader.

Switch back to second core. Shader.

So, seems to be working as intended here. Is this not happening for you?

I deleted my config and the shader presets directory and let RA create a new one. Now it works the way you describe. Previously it didn’t.

1 Like

This is confusing ; I can save a global preset but every time I load a core, no shader is loaded, because of auto_shaders_enable = “false” in retroarch.cfg, which cannot be changed to “true” from RA, only from retroarch.cfg.

I am trying to get retroarch to save my settings. I select dx12 for a dreamcast game ,restart and retroarch resets the video output back to vulkan even after I saved a new config file in retroarch which was the one selected to load with the program.

Flycast (the dreamcast core) doesn’t support dx12, so it’s switching to a driver that the core supports. You can stop this behavior by disabling the advanced option: core > allow cores to change the video driver.

This will just make it crash instead, though.