fixed: rebuild VAO if properties changed