This task extracts the essential pieces from
QTBUG-62439, to be shipped as a tech preview in Qt 5.14.
Backends and Modern Graphics APIs
The software backend must stay functional as today. The default rendering path (which today uses OpenGL directly) is to be complemented with a code path allowing to render with the RHI developed in
Shaders, resource binding, material system
As a consequence, there will be a single shading language in use. Likely Vulkan-flavor GLSL (but could be that we will drift towards HLSL long term), with (mostly offline or build-time) compilation to SPIR-V, reflection data generation, and translation to other languages.
Some material-related APIs will need to change (QSGMaterialShader is not suitable, obviously). Providing data to the shaders will slightly differ from today. (uniform buffers will be more prevalent). The old and new MaterialShader APIs should co-exist until Qt 6.0.
Providing shader code will likely move towards baking and compiling offline as much as possible, inline code should still be supported as much as possible but not promoted as the primary way of doing things. Until the Qt Shader Tools module gets integrated into Qt, use the qt-labs repo and do the shader processing manually, checking in the generated .qsb files into qtdeclarative.