Q1: Does such a need arise at all? Or should the reflectance model be used globally for the entire scene?
Q2: If it is necessary to implement in the shader switching between reflectance models (OrenNayar, Lambert etc), how to do it better? Create a separate shader for each reflectance model? Or use something like
// fragment shader
uniform float reflectanceModel;
...
switch (reflectanceModel) {
case 0.0:
diffuse = lambert(...);
break;
case 1.0:
diffuse = orenNayar(...);
break;
case 2.0:
...
break;
}
I will be grateful for your advice