diasurgical / devilutionX

Diablo build for modern operating systems
Other
7.92k stars 772 forks source link

Feature Request: LibRetro Shader Support #4453

Open fearedbliss opened 2 years ago

fearedbliss commented 2 years ago

Hello all,

This is a continuation of this bug report but with a focus specifically on just the LibRetro shader support.

Summary

When DirectDraw support was dropped from the project, DirectDraw wrapper projects like cnc-ddraw, which also provide libretro shader support stopped working. This mean that Devilution/X players using cnc-ddraw for the purpose of using shaders were no longer able to do this. From @AJenbo's comment in the above report, it seems that time is better spent implementing LibRetro shader support directly since that is cross platform and works with OpenGL (from what I understand).. I do know libretro and their shaders are also used for a variety of emulators used on Linux and other handheld devices (Like RG351p and 351-ELEC).

fearedbliss

AJenbo commented 2 years ago

For historical context DirectDraw support was dropped in 0.1.0 as it and DirectSound were the main blockers for the original goal of DevilutionX (cross platform support) :D

fearedbliss commented 2 years ago

Thanks for that @AJenbo :).

malvarenga123 commented 2 years ago

If I'm not mistaken, only libretro has full support for its shaders. At least I'm not aware of other emulators or games that can import the more complex filters like CRT Royale.

fearedbliss commented 2 years ago

@malvarenga123 I'm not sure either but I would be satisfied with equal or better support as cnc-ddraw. It also only support just regular glsl files not the enhanced ones. But that's ok. It looks amazing with just the glsl look.

evbo commented 1 year ago

@fearedbliss this might mean we could use LibRetro shaders too! Someone did the effort converting them all over to glsl syntax!:

https://github.com/libretro/glsl-shaders

@AJenbo Hopefully this is supported without too much tinkering?:

GLSL shaders themselves are simply a set of strings that are passed to the hardware vendor's driver for compilation from within an application using the OpenGL API's entry points. Shaders can be created on the fly from within an application, or read-in as text files, but must be sent to the driver in the form of a string.

https://en.wikipedia.org/wiki/OpenGL_Shading_Language