Within the Urho community I have noticed allot of projects in shaders that only support 1 language and personally after spending a while working on HLSL I lose the motivation to write it again. There are a few solutions to this problems.
Solution 1
Write a custom shader language that performs an offline compile to the target language, this solution would be a big undertaking but I feel there would be the benefit of optimisations for all shaders.
Solution 2
Use a cross compiller to convert between languages. I noticed there have Mojo in our 3rd party list but from my understanding it doesn’t have support for d3d11 or gl3. Therefore I’d recommend https://github.com/James-Jones/HLSLCrossCompiler as it supports all languages used in the engine.
Solution 3
Shader macros, this would involve making a shader in all languages that will change the default methods and variables we use to be the same in all languages. For example change GLSL vec3 and HLSL float3 to UFloat3.