VideoBackends / VideoCommon: add support for specifying include files in shader code #13975
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For simple shader code, you often can fit it in one file. However, it can be useful to organize code into different files. In order to do this, we need an include system.
This PR adds an include system. The end goal is to use this in custom draw shaders due to the complexity and reuse of some of the shader logic. I ultimately want to provide a bunch of Dolphin provided shader code for end users. However, in order to allow devs to test this (and possibly use it in some capacity), I've exposed this to the post processing system.
This works on all backends, though error reporting only works through backends that use glslang (DirectX, Vulkan, Metal).
Example:
And in
get_color.glsl
:The screen will tint a pink color!
One thing to note: the include system isn't as intelligent as C++'s include system. If you have the same file included in multiple places within a "web" of includes, you will get an error. A brief look online seems to indicate this is expected.