Direct3D में, मल्टीपेस शेड्स का उपयोग करना सरल है क्योंकि आप सचमुच एक प्रोग्राम के भीतर पास को परिभाषित कर सकते हैं। ओपनजीएल में, यह थोड़ा और अधिक जटिल लगता है क्योंकि शेडर प्रोग्राम को कई वर्टेक्स, जियोमेट्री, और फ्रेगमेंट शेयर्स देना संभव है जैसा आप चाहते हैं।
मल्टीपास शेडर का एक लोकप्रिय उदाहरण एक टॉन शेडर है। एक पास वास्तविक सीएल-छायांकन प्रभाव करता है और दूसरा रूपरेखा बनाता है। अगर मेरे पास दो शीर्ष शैलें हैं, "cel.vert" और "outline.vert", और दो टुकड़ा shaders, "cel.frag" और "outline.frag" (इसी तरह से आप HLSL में करते हैं), मैं कैसे कर सकता हूँ उन्हें पूरा टॉन shader बनाने के लिए गठबंधन?
मैं आपको यह नहीं कहना चाहता हूं कि इसके लिए एक ज्यामिति शेडर का उपयोग किया जा सकता है क्योंकि मैं सिर्फ मल्टीप्लेयर GLSL जेंडर के पीछे के सिद्धांत को जानना चाहता हूं;)