W Direct3D wielozadaniowe moduły cieniujące są proste w użyciu, ponieważ można dosłownie zdefiniować przebiegi w programie. W OpenGL wydaje się to nieco bardziej skomplikowane, ponieważ możliwe jest nadanie programowi cieniującemu tyle cieniowania wierzchołków, geometrii i fragmentów, ile chcesz.
Popularnym przykładem shadera wielopasmowego jest shader toon. Jedno przejście powoduje rzeczywisty efekt cieniowania, a drugie tworzy kontur. Jeśli mam dwa moduły cieniujące wierzchołki, „cel.vert” i „zarys.vert”, oraz dwa moduły cieniujące fragmenty, „cel.frag” i „zarys.frag” (podobnie jak w HLSL), jak mogę to zrobić? połączyć je, aby stworzyć pełny shader toon?
Nie chcę, żebyś powiedział, że można do tego użyć modułu cieniującego geometrię, ponieważ chcę tylko poznać teorię kryjącą się za wielościennymi modułami cieniującymi GLSL;)