Lets say I have a material that has diffuse map, specular map, normal map etc. Should I write a shader for every possible combination of those properties or just pass a cont