No Direct3D, os sombreadores multipass são simples de usar, porque você pode definir literalmente passes dentro de um programa. No OpenGL, parece um pouco mais complexo porque é possível fornecer a um programa de sombreador quantos shaders de vértice, geometria e fragmento desejar.
Um exemplo popular de um sombreador de várias passagens é um sombreador de toon. Uma passagem produz o efeito real de sombreamento e a outra cria o contorno. Se eu tiver dois shaders de vértice, "cel.vert" e "outline.vert", e dois shaders de fragmento, "cel.frag" e "outline.frag" (semelhante à maneira como você faz isso no HLSL), como posso combiná-los para criar o toon shader completo?
Não quero que você diga que um sombreador de geometria pode ser usado para isso, porque eu só quero conhecer a teoria por trás dos sombreadores GLSL multipass;)