Вы можете сделать это, например, выполняя вызовы функций из главной точки входа в функции, которые реализованы в различных шейдерных объектах.
main() {
callToShaderObject1()
callToShaderObject2()
}
каждая из этих функций callToShaderObject может находиться в разных шейдерных объектах, но все объекты должны быть присоединены и связаны в одной программе, прежде чем ее можно будет использовать.