don't regenerate GLSL shaders unless required