I’ve added some support for multiple shaders using XmlShaderFormat. It looks for all *.shader files and tries to parse and compile them. However there isn’t a good way to change shaders. So far, all changes have been in the base OpenGL backend. However, in order to expose the shaders through the graphics mode settings, changes may possibly be made to the SDL backend. Right now, it queries a static class function to figure our the supported graphics modes. However, OpenGL calls to compile the shaders cannot succeed before the OpenGL context is created. So either the class needs to be initialized before the SDL backend queries the graphics modes, or the static class function can guess about what shaders will eventually be compiled (For instance if “CoolFilter.shader” exists in the current directory, but is not a valid XmlShader or it does not contain valid GLSL programs, then it would still be reported as a valid graphics mode.).
My work on scaler plugins has slowed down. I want to get it incorporated into the main project, so the things I need to consider are:
- How will the plugins work with existing backends that used the old scalers?
- How will they work with future backends?
- Do more formats need to be supported? Can they be detected at runtime or compile time (Or probably both)?
- How can they be integrated with the build system?
- Options to disable formats (e.g. 32 bit formats which are not used)
- Options to disable plugins. Currently the Edge2x/3x plugin shares the HQ scaler compile option (USE_HQ_SCALERS).