Czy wartości jednolite pozostają w cieniu GLSL, jeśli są niezwiązane?

Tworzę program, który używa dwóch różnych shaderów dla różnych różnych prymitywów. Moje pytanie brzmi, jeśli powiąż program, wyślę zmienne jednolite, a następnie skorzystam z innego programu cieniującego i powrócę do pierwszego, czy pozostaną jednolite wartości? Oto kilka pseudokodów:

glUseProgram(shader1);
glUniform(shader1,...);
//stuff

for(elements in a list) {
    if(element.type = 1) {
        glUseProgram(shader2);
        element.draw();
    } else {
        glUseProgram(shader1); //Here, do the uniforms from above remain, if shader2 was bound before?
        element.draw();
    }
}

questionAnswers(1)

yourAnswerToTheQuestion