assembleShader function provides a number of features that help applications build up shaders in a structured way.
#version 300 es) must be the very first line in
fsshader if it exists,
assembleShaderswill make sure it is still the very first line in resolved shader.
A two part prologue is injected by default:
A simple map of keys and values are injected as:
#define key1 value1 #define key2 value2 ...
The defines will be included before modules and can thus be used to affect modules.
Will follow module dependencies and inject dependency tree in correct order
Shader injection allows shader code "fragments" to be inserted into existing shader code, allowing applications to add code to an existing shader without having to duplicate and directly modify its source code. One main use case is adding the few lines of code needed to use a new shader module in an existing shader.