createPrograms
fun createPrograms(dynamicRange: DynamicRangeProfile, shaderProviderOverrides: Map<GLUtils.InputFormat?, ShaderProvider?>): Map<GLUtils.InputFormat, GLUtils.Program2D>
Creates program objects based on shaders which are appropriate for each input format.
Each InputFormat may have different sampler requirements based on the dynamic range. For that reason, we create a separate program for each input format, and will switch to the program when the input format changes so we correctly sample the input texture (or no-op, in some cases).