शेडर: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(85 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Type of program in a graphical processing unit (GPU)}}
{{Short description|Type of program in a graphical processing unit (GPU)}}
{{Use mdy dates|date=October 2020}}
{{Use mdy dates|date=October 2020}}[[File:Phong-shading-sample (cropped).jpg|thumb|upright=1.3|[[ 3 डी मॉडलिंग | 3 डी मॉडलिंग]] के प्रतिपादन में रोशनी और छाया वाले क्षेत्रों का उत्पादन करने के लिए शेडर्स का सबसे अधिक उपयोग किया जाता है। फोंग छायांकन (दाएं) गौरौड छायांकन पर एक सुधार है, और मूल फ्लैट छायांकन (बाएं) के पश्चात कभी विकसित किए गए पहले कंप्यूटर छायांकन मॉडलों में से एक था, जो रेंडर में घुमावदार सतहों की उपस्थिति को बहुत बढ़ाता है।]]
{{Multiple issues|
{{Update|date=April 2017 | inaccurate=yes}}
{{More footnotes|date=April 2014}}
}}
 
[[File:Phong-shading-sample (cropped).jpg|thumb|upright=1.3|[[ 3 डी मॉडलिंग ]] के प्रतिपादन में रोशनी और छाया वाले क्षेत्रों का उत्पादन करने के लिए शेडर्स का सबसे अधिक उपयोग किया जाता है। फोंग छायांकन (दाएं) गौरौड छायांकन पर एक सुधार है, और मूल फ्लैट छायांकन (बाएं) के बाद कभी विकसित किए गए पहले कंप्यूटर छायांकन मॉडलों में से एक था, जो रेंडर में घुमावदार सतहों की उपस्थिति को बहुत बढ़ाता है।]]
[[File:Example of a Shader.png|thumb|upright=1.3|शेडर्स का एक और उपयोग विशेष प्रभावों के लिए है, यहां तक ​​कि 2डी छवियों पर भी, (उदाहरण के लिए, एक [[वेबकैम]] से एक [[डिजिटल फोटोग्राफ]])। अपरिवर्तित, अपरिवर्तित छवि बाईं ओर है, और उसी छवि में दाईं ओर एक शेडर लगाया गया है। यह शेडर छवि के सभी प्रकाश क्षेत्रों को सफेद और सभी अंधेरे क्षेत्रों को चमकीले रंग की बनावट के साथ बदलकर काम करता है।]][[कंप्यूटर चित्रलेख]] में, एक शेडर एक [[कंप्यूटर प्रोग्राम]] है जो एक [[3डी दृश्य]] के [[प्रतिपादन (कंप्यूटर ग्राफिक्स)]] के दौरान प्रकाश, अंधेरे और [[रंग]] के उचित स्तर की गणना करता है - एक प्रक्रिया जिसे ''छायांकन'' के रूप में जाना जाता है। कंप्यूटर ग्राफिक्स [[विशेष प्रभाव]] और [[वीडियो पोस्ट-प्रोसेसिंग]] के साथ-साथ ग्राफिक्स प्रोसेसिंग इकाइयों पर सामान्य-उद्देश्य कंप्यूटिंग में विभिन्न प्रकार के विशेष कार्य करने के लिए शेडर्स विकसित हुए हैं।
[[File:Example of a Shader.png|thumb|upright=1.3|शेडर्स का एक और उपयोग विशेष प्रभावों के लिए है, यहां तक ​​कि 2डी छवियों पर भी, (उदाहरण के लिए, एक [[वेबकैम]] से एक [[डिजिटल फोटोग्राफ]])। अपरिवर्तित, अपरिवर्तित छवि बाईं ओर है, और उसी छवि में दाईं ओर एक शेडर लगाया गया है। यह शेडर छवि के सभी प्रकाश क्षेत्रों को सफेद और सभी अंधेरे क्षेत्रों को चमकीले रंग की बनावट के साथ बदलकर काम करता है।]][[कंप्यूटर चित्रलेख]] में, एक शेडर एक [[कंप्यूटर प्रोग्राम]] है जो एक [[3डी दृश्य]] के [[प्रतिपादन (कंप्यूटर ग्राफिक्स)]] के दौरान प्रकाश, अंधेरे और [[रंग]] के उचित स्तर की गणना करता है - एक प्रक्रिया जिसे ''छायांकन'' के रूप में जाना जाता है। कंप्यूटर ग्राफिक्स [[विशेष प्रभाव]] और [[वीडियो पोस्ट-प्रोसेसिंग]] के साथ-साथ ग्राफिक्स प्रोसेसिंग इकाइयों पर सामान्य-उद्देश्य कंप्यूटिंग में विभिन्न प्रकार के विशेष कार्य करने के लिए शेडर्स विकसित हुए हैं।


[[कंप्यूटर चित्रलेख]] में, एक शेडर एक [[कंप्यूटर प्रोग्राम]] है जो एक [[3डी दृश्य]] के [[प्रतिपादन (कंप्यूटर ग्राफिक्स)]] के दौरान प्रकाश, अंधेरे और [[रंग]] के उचित स्तर की गणना करता है - एक प्रक्रिया जिसे ''छायांकन'' के रूप में जाना जाता है। कंप्यूटर ग्राफिक्स [[विशेष प्रभाव]] और [[वीडियो पोस्ट-प्रोसेसिंग]] के साथ-साथ ग्राफिक्स प्रोसेसिंग इकाइयों पर सामान्य-उद्देश्य कंप्यूटिंग में विभिन्न प्रकार के विशेष कार्य करने के लिए शेडर्स विकसित हुए हैं।
पारंपरिक शेडर्स उच्च स्तर के सुनम्यता के साथ ग्राफिक्स हार्डवेयर पर रेंडरिंग प्रभाव की गणना करते हैं। अधिकांश शेडर्स को [[ ग्राफ़िक्स प्रोसेसिंग युनिट |ग्राफ़िक्स प्रोसेसिंग युनिट]] (जीपीयू) के लिए कोडित (और चालू) किया जाता है,<ref name=":0">{{Cite web|url=https://learnopengl.com/Getting-started/Shaders|title=LearnOpenGL - शेडर्स|website=learnopengl.com|access-date=November 12, 2019}}</ref> चूंकि इसकि एक सख्त आवश्यकता नहीं है। जीपीयू की [[रेंडरिंग पाइपलाइन]] को प्रोग्राम करने के लिए छायांकन भाषाओं का उपयोग किया जाता है, जिसने अधिकतर व्यतीत की [[फिक्स्ड-फ़ंक्शन पाइपलाइन]] को हटा दिया है जो केवल सामान्य ज्यामिति रूपांतरण और [[पिक्सेल]]-छायांकन कार्यों के लिए अनुमति देता है; शेडर्स के साथ, अनुकूलित प्रभावों का उपयोग किया जा सकता है। अंतिम रूप से प्रदान की गई छवि के निर्माण के लिए उपयोग किए जाने वाले सभी पिक्सेल, वर्टेक्स या टेक्सचर की स्थिति और रंग (ह्यू, [[ रंगीनपन |रंगीनपन]], [[ चमक |चमक,]] और [[कंट्रास्ट (दृष्टि)]]) को एक शेडर में परिभाषित [[कलन विधि]] का उपयोग करके परवर्तीत किया जा सकता है, और कंप्यूटर प्रोग्राम द्वारा शेडर को कॉलिंग करने वाले बाहरी [[चर (कंप्यूटर विज्ञान)]] या बनावट द्वारा संशोधित किया जा सकता है।


पारंपरिक शेडर्स उच्च स्तर के लचीलेपन के साथ ग्राफिक्स हार्डवेयर पर रेंडरिंग (कंप्यूटर ग्राफिक्स) प्रभाव की गणना करते हैं। अधिकांश शेडर्स को [[ ग्राफ़िक्स प्रोसेसिंग युनिट ]] (जीपीयू) के लिए कोडित (और चालू) किया जाता है,<ref name=":0">{{Cite web|url=https://learnopengl.com/Getting-started/Shaders|title=LearnOpenGL - शेडर्स|website=learnopengl.com|access-date=November 12, 2019}}</ref> हालांकि यह एक सख्त आवश्यकता नहीं है। छायांकन भाषाओं का उपयोग GPU की [[रेंडरिंग पाइपलाइन]] को प्रोग्राम करने के लिए किया जाता है, जिसने अतीत की [[फिक्स्ड-फ़ंक्शन पाइपलाइन]] को अधिक स्थान दिया है जो केवल सामान्य [[वर्टेक्स शेडर]] और [[[[पिक्सेल]] शेडर]]|पिक्सेल-शेडिंग फ़ंक्शन के लिए अनुमत है; शेडर्स के साथ, अनुकूलित प्रभावों का उपयोग किया जा सकता है। सभी पिक्सेल, वर्टेक्स (कंप्यूटर ग्राफ़िक्स), और/या टेक्सचर (कंप्यूटर ग्राफ़िक्स) के 3डी निर्देशांक और रंग (ह्यू, [[ रंगीनपन ]], [[ चमक ]], और [[कंट्रास्ट (दृष्टि)]]) का उपयोग अंतिम रूप से प्रदान की गई छवि के निर्माण के लिए किया जाता है, जिसे परिभाषित [[कलन विधि]] का उपयोग करके बदला जा सकता है। एक शेडर में, और बाहरी [[चर (कंप्यूटर विज्ञान)]] द्वारा संशोधित किया जा सकता है या शेडर को कॉल करने वाले कंप्यूटर प्रोग्राम द्वारा शुरू की गई बनावट।{{Citation needed|date=March 2020}}
[[फिल्म निर्माण]] [[पोस्ट प्रोसेसिंग (छवियां)]], कंप्यूटर-जनित इमेजरी और [[वीडियो गेम]] में कई तरह के प्रभाव पैदा करने के लिए शेडर्स का व्यापक रूप से उपयोग किया जाता है। साधारण प्रकाश प्रतिरूप के अतिरिक्त, शेडर्स के अधिक जटिल उपयोगों में सम्मलित हैं: एक छवि के रंग, संतृप्ति, चमक (एचएसएल / एचएसवी) या छवि के बनावट (दृष्टि) को बदलना; [[डिफोकस विपथन]], [[ हल्का खिलना |हल्का खिलना]], [[वॉल्यूमेट्रिक लाइटिंग]], [[ साधारण मानचित्रण |साधारण मानचित्रण]] (डेप्थ इफेक्ट्स के लिए), [[ bokeh |बोकेह]], [[सार्डिन को मापना]], [[ posterization |पोस्टराइजेशन]], [[ उभार का मानचित्रण |उभार का मानचित्रण]], डिस्टॉर्शन (ऑप्टिक्स), [[क्रोमा की]]इंग (तथाकथित[[ हरा पर्दा ]]प्रभाव के लिए), [[किनारे का पता लगाना]] और मोशन डिटेक्शन, जैसे साथ ही [[साइकेडेलिया]] प्रभाव जैसे कि [[डेमोसीन]] में देखे गए है।


हमेशा की तरह शेडर्स उच्च स्तर के लचीलेपन के साथ ग्राफिक्स हार्डवेयर पर रेंडरिंग (कंप्यूटर ग्राफिक्स) प्रभाव की गणना करते हैं।  ज्यादातर शेडर्स को [[ ग्राफ़िक्स प्रोसेसिंग युनिट | ग्राफ़िक्स प्रोसेसिंग युनिट]] (जीपीयू) के लिए कोडित ( चालू) किया जाता है,<ref name=":0" /> चूंकि यह अत्यधिक आवश्यकता नहीं है। छायांकन भाषाओं का उपयोग GPU की [[रेंडरिंग पाइपलाइन]] को प्रोग्राम करने के लिए किया जाता है, जिसने अतीत की [[फिक्स्ड-फ़ंक्शन पाइपलाइन]] को अधिक स्थान दिया है जो केवल सामान्य [[वर्टेक्स शेडर]] और [[[[पिक्सेल]] शेडर]]|पिक्सेल-शेडिंग फ़ंक्शन के लिए अनुमत है; शेडर्स के साथ, अनुकूलित प्रभावों का उपयोग किया जा सकता है। सभी पिक्सेल, वर्टेक्स (कंप्यूटर ग्राफ़िक्स), और/या टेक्सचर (कंप्यूटर ग्राफ़िक्स) के 3डी निर्देशांक और रंग (ह्यू, [[ रंगीनपन | रंगीनपन]] , [[ चमक | चमक]] , और [[कंट्रास्ट (दृष्टि)]]) का उपयोग अंतिम रूप से प्रदान की गई छवि के निर्माण के लिए किया जाता है, जिसे परिभाषित [[कलन विधि]] का उपयोग करके बदला जा सकता है। एक शेडर में, और बाहरी [[चर (कंप्यूटर विज्ञान)]] द्वारा संशोधित किया जा सकता है या शेडर को कॉल करने वाले कंप्यूटर प्रोग्राम द्वारा शुरू की गई बनावट।{{Citation needed|date=March 2020}}
== इतिहास ==
"शेडर" शब्द के इस प्रयोग को [[पिक्सर]] द्वारा उनके [[रेंडरमैन इंटरफ़ेस]] विशिष्टता के संस्करण 3.0 के साथ सार्वजनिक के लिए प्रस्तुत किया गया था, जो मूल रूप से मई 1988 में प्रकाशित हुआ था।<ref>{{Cite web|url=http://www.redrabbit-studios.com/coursework/renderman/prman/RISpec/index.html|title=The RenderMan Interface Specification}}</ref>


[[फिल्म निर्माण]] [[पोस्ट प्रोसेसिंग (छवियां)]]इमेज) में शेडर्स का व्यापक रूप से उपयोग किया जाता है | पोस्ट-प्रोसेसिंग, कंप्यूटर जनित इमेजरी, और [[वीडियो गेम]] में कई तरह के प्रभाव पैदा करने के लिए। सरल प्रकाश मॉडल से परे, शेडर्स के अधिक जटिल उपयोगों में शामिल हैं: एक छवि के रंग, रंगीनता, चमक (एचएसएल और एचएसवी | एचएसएल / एचएसवी) या कंट्रास्ट (दृष्टि) को बदलना; [[डिफोकस विपथन]], [[ हल्का खिलना ]], [[वॉल्यूमेट्रिक लाइटिंग]], [[ साधारण मानचित्रण ]] (डेप्थ इफेक्ट्स के लिए), [[ bokeh ]], [[सार्डिन को मापना]], [[ posterization ]], [[ उभार का मानचित्रण ]], डिस्टॉर्शन (ऑप्टिक्स), [[क्रोमा की]]इंग (तथाकथित ब्लूस्क्रीन / [[ हरा पर्दा ]] इफेक्ट्स के लिए), [[किनारे का पता लगाना]] और मोशन पहचान, साथ ही [[साइकेडेलिया]] प्रभाव जैसे कि [[डेमोसीन]] में देखा गया।{{Clarify|date=March 2020}}
जैसे-जैसे ग्राफिक्स प्रोसेसिंग यूनिट विकसित हुई, [[OpenGL|ओपन जीएल]] और [[Direct3D|डायरेक्ट 3 डी]] जैसी प्रमुख ग्राफिक्स [[सॉफ्टवेयर पुस्तकालय]] ने शेडर्स का समर्थन करना शुरू कर दिया। पहला शेडर-सक्षम जीपीयू केवल [[पिक्सेल छायांकन]] का समर्थन करता था, लेकिन डेवलपर्स को शेडर्स की शक्ति का एहसास होने के पश्चात [[वर्टेक्स शेडर्स]] जल्दी से प्रस्तुत किए गए। प्रोग्रामेबल पिक्सेल शेडर वाला पहला वीडियो कार्ड एनवीडिया [[GeForce 3|जीईफ़ोर्स 3]] (एनवी 20) था, जिसे 2001 में जारी किया गया था।<ref>{{Cite web|url=https://www.pcgamer.com/from-voodoo-to-geforce-the-awesome-history-of-3d-graphics/|title=From Voodoo to GeForce: The Awesome History of 3D Graphics|first=Paul|last=Lillypublished|website=PC Gamer |date=May 19, 2009|via=www.pcgamer.com}}</ref> ज्यामिति शेड्स को डायरेक्ट 3 डी 10 और ओपन जीएल 3.2 के साथ प्रस्तुत किया गया था। आखिरकार, ग्राफिक्स हार्डवेयर एक [[एकीकृत शेडर मॉडल]] की ओर विकसित हुआ।


== इतिहास ==
== डिजाइन ==
शेडर शब्द का यह प्रयोग [[पिक्सर]] द्वारा उनके [[रेंडरमैन इंटरफ़ेस]] विशिष्टता के संस्करण 3.0 के साथ जनता के लिए पेश किया गया था, जो मूल रूप से मई 1988 में प्रकाशित हुआ था।<ref>{{Cite web|url=http://www.redrabbit-studios.com/coursework/renderman/prman/RISpec/index.html|title=The RenderMan Interface Specification}}</ref>
शेडर्स सरल प्रोग्राम हैं जो वर्टेक्स (कंप्यूटर ग्राफिक्स) या पिक्सेल के लक्षणों का वर्णन करते हैं। वर्टेक्स शेडर्स एक वर्टेक्स की विशेषताओं (स्थिति, बनावट मानचित्रण, रंग, आदि) का वर्णन करते हैं, जबकि पिक्सेल शेड्स एक पिक्सेल के लक्षणों (रंग, [[z-बफरिंग|जेड-बफरिंग]], जेड-गहराई और [[अल्फा रचना|अल्फा मान]] ) का वर्णन करते हैं। एक [[ज्यामितीय आदिम]] (संभवतः [[टेसलेशन (कंप्यूटर ग्राफिक्स)]] के पश्चात) में प्रत्येक शीर्ष के लिए एक वर्टेक्स शेडर बुलाया जाता है; इस प्रकार एक वर्टेक्स इन, एक (अपडेटेड) वर्टेक्स आउट होता है। प्रत्येक शीर्ष को तब एक सतह (मेमोरी के ब्लॉक) पर पिक्सेल की एक श्रृंखला के रूप में प्रस्तुत किया जाता है जो अंततः स्क्रीन पर भेजा जाएग।
जैसे-जैसे ग्राफिक्स प्रोसेसिंग यूनिट विकसित हुई, [[OpenGL]] और [[Direct3D]] जैसी प्रमुख ग्राफिक्स [[सॉफ्टवेयर पुस्तकालय]] ने शेडर्स का समर्थन करना शुरू कर दिया। पहला शेडर-सक्षम जीपीयू केवल [[पिक्सेल छायांकन]] का समर्थन करता था, लेकिन डेवलपर्स को शेडर्स की शक्ति का एहसास होने के बाद [[वर्टेक्स शेडर्स]] जल्दी से पेश किए गए थे। प्रोग्रामेबल पिक्सेल शेडर वाला पहला वीडियो कार्ड Nvidia [[GeForce 3]] (NV20) था, जिसे 2001 में रिलीज़ किया गया था।<ref>{{Cite web|url=https://www.pcgamer.com/from-voodoo-to-geforce-the-awesome-history-of-3d-graphics/|title=From Voodoo to GeForce: The Awesome History of 3D Graphics|first=Paul|last=Lillypublished|website=PC Gamer |date=May 19, 2009|via=www.pcgamer.com}}</ref> ज्यामिति शेड्स को Direct3D 10 और OpenGL 3.2 के साथ पेश किया गया था। आखिरकार, ग्राफिक्स हार्डवेयर एक [[एकीकृत शेडर मॉडल]] की ओर विकसित हुआ।


== डिजाइन ==
शेडर्स ग्राफिक्स हार्डवेयर के एक भाग को प्रतिस्थापित करते हैं जिसे सामान्यतः फिक्स्ड फलन पाइपलाइन (एफएफपी) कहा जाता है, तथाकथित क्योंकि यह हार्ड-कोडेड तरीके से [[कंप्यूटर ग्राफिक्स प्रकाश]] और [[ बनावट का मानचित्रण |बनावट का मानचित्रण]] बनाता है। शेडर्स इस हार्ड-कोडेड दृष्टिकोण के लिए प्रोग्राम करने योग्य विकल्प प्रदान करते हैं।<ref>{{cite web|url=http://www.directx.com/shader/|title=शेडरवर्क्स का अपडेट - डायरेक्टएक्स ब्लॉग|date=August 13, 2003}}</ref>
शेडर्स सरल प्रोग्राम हैं जो वर्टेक्स (कंप्यूटर ग्राफिक्स) या पिक्सेल के लक्षणों का वर्णन करते हैं। वर्टेक्स शेडर्स एक वर्टेक्स की विशेषताओं (स्थिति, बनावट मानचित्रण, रंग, आदि) का वर्णन करते हैं, जबकि पिक्सेल शेड्स एक पिक्सेल के लक्षणों (रंग, [[z-बफरिंग]] | जेड-डेप्थ और [[अल्फा रचना]] वैल्यू) का वर्णन करते हैं। एक [[ज्यामितीय आदिम]] (संभवतः [[टेसलेशन (कंप्यूटर ग्राफिक्स)]] के बाद) में प्रत्येक शीर्ष के लिए एक वर्टेक्स शेडर कहा जाता है; इस प्रकार एक वर्टेक्स इन, एक (अपडेटेड) वर्टेक्स आउट। प्रत्येक शीर्ष को तब एक सतह (मेमोरी के ब्लॉक) पर पिक्सेल की एक श्रृंखला के रूप में प्रस्तुत किया जाता है जो अंततः स्क्रीन पर भेजा जाएगा।


शेडर्स ग्राफिक्स हार्डवेयर के एक हिस्से को प्रतिस्थापित करते हैं जिसे आमतौर पर फिक्स्ड फंक्शन पाइपलाइन (FFP) कहा जाता है, तथाकथित क्योंकि यह हार्ड-कोडेड तरीके से [[कंप्यूटर ग्राफिक्स प्रकाश]] और [[ बनावट का मानचित्रण ]] करता है। शेडर्स इस हार्ड-कोडेड दृष्टिकोण के लिए प्रोग्राम करने योग्य विकल्प प्रदान करते हैं।<ref>{{cite web|url=http://www.directx.com/shader/|title=शेडरवर्क्स का अपडेट - डायरेक्टएक्स ब्लॉग|date=August 13, 2003}}</ref>
मूल [[ग्राफिक्स पाइपलाइन]] इस प्रकार है:
मूल [[ग्राफिक्स पाइपलाइन]] इस प्रकार है:


Line 30: Line 22:
* वर्टेक्स शेडर के भीतर, ज्यामिति रूपांतरित हो जाती है।
* वर्टेक्स शेडर के भीतर, ज्यामिति रूपांतरित हो जाती है।
* यदि एक ज्यामिति शेडर ग्राफिक प्रोसेसिंग यूनिट में है और सक्रिय है, तो दृश्य में ज्यामिति के कुछ परिवर्तन किए जाते हैं।
* यदि एक ज्यामिति शेडर ग्राफिक प्रोसेसिंग यूनिट में है और सक्रिय है, तो दृश्य में ज्यामिति के कुछ परिवर्तन किए जाते हैं।
* यदि एक टेसलेशन शेडर ग्राफिक प्रोसेसिंग यूनिट में है और सक्रिय है, तो दृश्य में ज्यामितीय [[उपखंड (कंप्यूटर ग्राफिक्स)]] हो सकते हैं।
* यदि एक टेसलेशन शेडर ग्राफिक प्रोसेसिंग यूनिट में है और सक्रिय है, तो दृश्य में ज्यामितीय [[उपखंड (कंप्यूटर ग्राफिक्स)]] को उप-विभाजित किया जा सकता है।
* परिकलित ज्यामिति त्रिभुजाकार (त्रिकोणों में विभाजित) है।
* परिकलित की गई ज्यामिति त्रिकोणीय है (त्रिकोणों में उप-विभाजित)
* त्रिकोणों को फ़्रैगमेंट क्वाड्स में विभाजित किया गया है (एक फ़्रैगमेंट क्वाड 2 × 2 फ़्रैगमेंट प्रिमिटिव है)।
* त्रिकोणों को फ़्रैगमेंट क्वाड्स में विभाजित किया गया है (एक फ़्रैगमेंट क्वाड 2 × 2 फ़्रैगमेंट प्रिमिटिव है)।
* [[ खंड चतुर्भुज ]] को फ्रैगमेंट शेडर के अनुसार संशोधित किया जाता है।
* [[ खंड चतुर्भुज | खंड चतुर्भुज]] को फ्रैगमेंट शेडर के अनुसार संशोधित किया जाता है।
* गहराई परीक्षण किया जाता है; पास होने वाले टुकड़े स्क्रीन पर लिखे जाएंगे और [[फ्रेम बफर]] में मिश्रित हो सकते हैं।
* गहनता परीक्षण किया जाता है; पास होने वाले फ़्रैगमेंट स्क्रीन पर लिखे जाएंगे और [[फ्रेम बफर]] में मिश्रित हो सकते हैं।


प्रदर्शित करने के लिए त्रि-आयामी (या द्वि-आयामी) डेटा को उपयोगी द्वि-आयामी डेटा में बदलने के लिए ग्राफिक पाइपलाइन इन चरणों का उपयोग करती है। सामान्य तौर पर, यह एक बड़ा पिक्सेल मैट्रिक्स या फ्रेम बफर होता है।
प्रदर्शित करने के लिए त्रि-आयामी (या द्वि-आयामी) डेटा को उपयोगी द्वि-आयामी डेटा में बदलने के लिए ग्राफिक पाइपलाइन इन चरणों का उपयोग करती है। सामान्यतः, यह एक बड़ा पिक्सेल मैट्रिक्स या फ्रेम बफर होता है।


== प्रकार ==
== प्रकार ==
आम उपयोग में तीन प्रकार के शेडर हैं (पिक्सेल, वर्टेक्स, और ज्योमेट्री शेडर्स), जिनमें कई और हाल ही में जोड़े गए हैं। जबकि पुराने ग्राफिक्स कार्ड प्रत्येक शेडर प्रकार के लिए अलग प्रसंस्करण इकाइयों का उपयोग करते हैं, नए कार्ड में [[एकीकृत शेडर]] होते हैं जो किसी भी प्रकार के शेडर को निष्पादित करने में सक्षम होते हैं। यह ग्राफिक्स कार्ड को प्रोसेसिंग पावर का अधिक कुशल उपयोग करने की अनुमति देता है।
सामान्य उपयोग में तीन प्रकार के शेडर हैं (पिक्सेल, वर्टेक्स, और ज्योमेट्री शेडर्स), जिनमें कई और इस समय में जोड़े गए हैं। जबकि पुराने ग्राफिक्स कार्ड प्रत्येक शेडर प्रकार के लिए अलग प्रसंस्करण इकाइयों का उपयोग करते हैं, नए कार्ड में [[एकीकृत शेडर]] होते हैं जो किसी भी प्रकार के शेडर को निष्पादित करने में सक्षम होते हैं। यह ग्राफिक्स कार्ड को प्रसंस्करण शक्ति का अधिक कुशल उपयोग करने की अनुमति देता है।


=== 2डी शेड्स ===
=== 2डी शेड्स ===
2डी शेड्स डिजिटल छवियों पर कार्य करते हैं, जिन्हें कंप्यूटर ग्राफिक्स के क्षेत्र में बनावट (कंप्यूटर ग्राफिक्स) भी कहा जाता है। वे पिक्सेल की विशेषताओं को संशोधित करते हैं। 2D शेडर 3D ज्यामिति के प्रतिपादन में भाग ले सकते हैं। वर्तमान में 2D शेडर का एकमात्र प्रकार पिक्सेल शेडर है।
2डी शेड्स डिजिटल छवियों पर कार्य करते हैं, जिन्हें कंप्यूटर ग्राफिक्स के क्षेत्र में बनावट (कंप्यूटर ग्राफिक्स) भी कहा जाता है। वे पिक्सेल की विशेषताओं को संशोधित करते हैं। 2डी शेडर 3डी ज्यामिति के प्रतिपादन में भाग ले सकते हैं। वर्तमान में 2डी शेडर का एकमात्र प्रकार पिक्सेल शेडर है।


==== पिक्सेल शेड्स ====
==== पिक्सेल शेड्स ====
पिक्सेल शेडर्स, जिन्हें फ़्रैगमेंट (कंप्यूटर ग्राफ़िक्स) शेडर्स के रूप में भी जाना जाता है, प्रत्येक फ़्रैगमेंट के रंग और अन्य विशेषताओं की गणना करते हैं: रेंडरिंग कार्य की एक इकाई जो अधिकतम एकल आउटपुट पिक्सेल को प्रभावित करती है। सबसे सरल प्रकार के पिक्सेल शेड्स एक रंग मान के रूप में एक स्क्रीन पिक्सेल का उत्पादन करते हैं; एकाधिक इनपुट/आउटपुट वाले अधिक जटिल शेड भी संभव हैं।<ref>{{cite web|url=http://www.lighthouse3d.com/tutorials/glsl-tutorial/fragment-shader/|title=GLSL Tutorial – Fragment Shader|date=June 9, 2011}}</ref> पिक्सेल शेड्स में हमेशा एक ही रंग के आउटपुट से लेकर [[ प्रकाश ]] वैल्यू लागू करने, बम्प मैपिंग, शैडो, [[स्पेक्युलर हाइलाइट]]्स, [[पारदर्शता]] और अन्य घटनाएं होती हैं। वे खंड की गहराई (जेड-बफरिंग के लिए) को बदल सकते हैं, या यदि एकाधिक रेंडर लक्ष्य सक्रिय हैं तो एक से अधिक रंग आउटपुट कर सकते हैं। 3डी ग्राफिक्स में, एक पिक्सेल शेडर अकेले कुछ प्रकार के जटिल प्रभाव उत्पन्न नहीं कर सकता है क्योंकि यह दृश्य की ज्यामिति (यानी वर्टेक्स डेटा) के ज्ञान के बिना केवल एक ही टुकड़े पर काम करता है। हालांकि, पिक्सेल शेडर्स को स्क्रीन निर्देशांक तैयार करने का ज्ञान होता है, और यदि पूरी स्क्रीन की सामग्री शेडर को बनावट के रूप में पारित की जाती है तो स्क्रीन और आस-पास के पिक्सेल का नमूना ले सकते हैं। यह तकनीक [[ गौस्सियन धुंधलापन ]], या सेल शेडर|कार्टून/सेल शेडर्स के लिए एज डिटेक्शन/एन्हांसमेंट जैसे द्वि-आयामी पोस्ट प्रोसेसिंग (छवियां) प्रभावों की एक विस्तृत विविधता को सक्षम कर सकती है। ग्राफिक्स पाइपलाइन में किसी भी दो-आयामी छवियों- [[स्प्राइट (कंप्यूटर ग्राफिक्स)]] या बनावट (कंप्यूटर ग्राफिक्स) के मध्यवर्ती चरणों में पिक्सेल शेडर्स को भी लागू किया जा सकता है, जबकि वर्टेक्स शेडर्स को हमेशा 3 डी दृश्य की आवश्यकता होती है। उदाहरण के लिए, एक पिक्सेल शेडर एकमात्र प्रकार का शेडर है जो [[वीडियो पोस्टप्रोसेसिंग]] या [[ विडियो स्ट्रीम ]] के लिए [[वीडियो फिल्टर]] के रूप में कार्य कर सकता है, क्योंकि यह रेखांकन किया गया है।
पिक्सेल शेडर्स, जिन्हें फ़्रैगमेंट (कंप्यूटर ग्राफ़िक्स) शेडर्स के रूप में भी जाना जाता है, प्रत्येक "फ़्रैगमेंट" के रंग और अन्य विशेषताओं की गणना करते हैं: रेंडरिंग कार्य की एक इकाई जो अधिकतम एकल आउटपुट पिक्सेल को प्रभावित करती है। सबसे सरल प्रकार के पिक्सेल शेड्स एक रंग महत्व के रूप में एक स्क्रीन पिक्सेल का उत्पादन करते हैं; एकाधिक इनपुट/आउटपुट वाले अधिक जटिल शेड भी संभव हैं।<ref>{{cite web|url=http://www.lighthouse3d.com/tutorials/glsl-tutorial/fragment-shader/|title=GLSL Tutorial – Fragment Shader|date=June 9, 2011}}</ref> पिक्सेल शेड्स में हमेशा एक ही रंग के आउटपुट से लेकर [[ प्रकाश |लाइटिंग]] वैल्यू लागू करने, बम्प मैपिंग, शैडो, [[स्पेक्युलर हाइलाइट|स्पेक्युलर हाइलाइट्स]], [[पारदर्शता]] और अन्य घटनाएं होती हैं। वे फ़्रैगमेंट की गहनता (जेड-बफरिंग के लिए) को बदल सकते हैं, यदि एकाधिक रेंडर लक्ष्य सक्रिय हैं तो एक से अधिक रंग आउटपुट कर सकते हैं। 3डी ग्राफिक्स में, एक पिक्सेल शेडर अकेले कुछ प्रकार के जटिल प्रभाव उत्पन्न नहीं कर सकता है क्योंकि यह दृश्य की ज्यामिति (अर्थात वर्टेक्स डेटा) के ज्ञान के बिना केवल एक ही फ़्रैगमेंट पर काम करता है। चूंकि, पिक्सेल शेडर्स को स्क्रीन निर्देशांक तैयार करने का ज्ञान होता है, और यदि पूरी स्क्रीन की सामग्री शेडर को बनावट के रूप में पारित की जाती है तो स्क्रीन और आस-पास के पिक्सेल का प्रतिरूप ले सकते हैं। यह तकनीक [[ गौस्सियन धुंधलापन |गौस्सियन धुंधलापन]], कार्टून/सीएल शेडर्स के लिए ब्लर, या एज डिटेक्शन/एन्हांसमेंट जैसे द्वि-आयामी पोस्टप्रोसेसिंग प्रभावों की एक विस्तृत विविधता को सक्षम कर सकती है। ग्राफिक्स पाइपलाइन में किसी भी दो-आयामी छवियों- [[स्प्राइट (कंप्यूटर ग्राफिक्स)]] या बनावट (कंप्यूटर ग्राफिक्स) के मध्यवर्ती चरणों में पिक्सेल शेडर्स को भी लागू किया जा सकता है, जबकि वर्टेक्स शेडर्स को हमेशा 3डी दृश्य की आवश्यकता होती है। उदाहरण के लिए, एक पिक्सेल शेडर एकमात्र प्रकार का शेडर है जो [[वीडियो पोस्टप्रोसेसिंग]] के रूप में कार्य कर सकता है या [[ विडियो स्ट्रीम |विडियो स्ट्रीम]] के लिए [[वीडियो फिल्टर]] करने के पश्चात इसे रास्टराइज़ कर सकता है।


=== 3डी शेड्स ===
=== 3डी शेड्स ===
3D शेडर [[मॉडल की गिनती]] या अन्य ज्यामिति पर कार्य करते हैं, लेकिन मॉडल या [[बहुभुज जाल]] बनाने के लिए उपयोग किए जाने वाले रंगों और बनावटों तक भी पहुंच सकते हैं। वर्टेक्स शेड्स सबसे पुराने प्रकार के 3D शेडर हैं, जो आम तौर पर प्रति-शीर्ष आधार पर संशोधन करते हैं। नए ज्योमेट्री शेड्स शेडर के भीतर से नए वर्टिकल उत्पन्न कर सकते हैं। टेस्सेलेशन शेडर नवीनतम 3डी शेडर हैं; वे विवरण जोड़ने के लिए सभी शीर्षों के बैचों पर एक साथ कार्य करते हैं—जैसे कि किसी मॉडल को त्रिभुजों के छोटे समूहों में उप-विभाजित करना या रनटाइम पर अन्य आदिम, घटता और :wikt:bumps जैसी चीज़ों में सुधार करना, या अन्य विशेषताओं को बदलना।
3डी शेडर [[मॉडल की गिनती]] या अन्य ज्यामिति पर कार्य करते हैं, लेकिन मॉडल या [[बहुभुज जाल]] बनाने के लिए उपयोग किए जाने वाले रंगों और बनावटों तक भी पहुंच सकते हैं। वर्टेक्स शेड्स सबसे पुराने प्रकार के 3डी शेडर हैं, जो सामान्यतः प्रति-शीर्ष आधार पर संशोधन करते हैं। नए ज्योमेट्री शेड्स शेडर के भीतर से नए वर्टिकल उत्पन्न कर सकते हैं। टेस्सेलेशन शेडर नवीनतम 3डी शेडर हैं; वे विवरण जोड़ने के लिए एक साथ शीर्षों के बैचों पर कार्य करते हैं—जैसे कि किसी मॉडल को त्रिभुजों के छोटे समूहों में उप-विभाजित करना या रनटाइम पर अन्य आदिम, घटता और टक्कर जैसी चीज़ों को सुधारने के लिए, या अन्य विशेषताओं को बदलने के लिए।


==== वर्टेक्स शेड्स ====
==== वर्टेक्स शेड्स ====
वर्टेक्स शेड्स सबसे स्थापित और सामान्य प्रकार के 3डी शेडर हैं और ग्राफिक्स प्रोसेसर को दिए गए प्रत्येक वर्टेक्स (कंप्यूटर ग्राफिक्स) के लिए एक बार चलाए जाते हैं। इसका उद्देश्य वर्चुअल स्पेस में प्रत्येक वर्टेक्स की 3डी स्थिति को 2डी कोऑर्डिनेट में बदलना है, जिस पर यह स्क्रीन पर दिखाई देता है (साथ ही जेड-बफर के लिए गहराई मान)।<ref>{{cite web|url=http://www.lighthouse3d.com/tutorials/glsl-tutorial/vertex-shader/|title=GLSL Tutorial – Vertex Shader|date=June 9, 2011}}</ref> वर्टेक्स शेड्स स्थिति, रंग और बनावट निर्देशांक जैसे गुणों में हेरफेर कर सकते हैं, लेकिन नए कोने नहीं बना सकते। वर्टेक्स शेडर का आउटपुट पाइपलाइन में अगले चरण में जाता है, जो या तो ज्यामिति शेडर है, यदि मौजूद है, या [[रास्टेराइज़र]] है। वर्टेक्स शेडर्स 3D मॉडल वाले किसी भी दृश्य में स्थिति, गति, प्रकाश और रंग के विवरण पर शक्तिशाली नियंत्रण सक्षम कर सकते हैं।
वर्टेक्स शेड्स सबसे स्थापित और सामान्य प्रकार के 3डी शेडर हैं और ग्राफिक्स प्रोसेसर को दिए गए प्रत्येक वर्टेक्स (कंप्यूटर ग्राफिक्स) के लिए एक बार चलाए जाते हैं। इसका उद्देश्य वर्चुअल स्पेस में प्रत्येक वर्टेक्स की 3डी स्थिति को 2डी समन्वय में बदलना है, जिस पर यह स्क्रीन पर दिखाई देता है (साथ ही जेड-बफर के लिए गहराई मान)।<ref>{{cite web|url=http://www.lighthouse3d.com/tutorials/glsl-tutorial/vertex-shader/|title=GLSL Tutorial – Vertex Shader|date=June 9, 2011}}</ref> वर्टेक्स शेड्स स्थिति, रंग और बनावट निर्देशांक जैसे गुणों में अदल-बदल कर सकते हैं, लेकिन नए कोने ( द्विआधारी ग्राफ) नहीं बना सकते। वर्टेक्स शेडर का आउटपुट पाइपलाइन में अगले चरण में जाता है, जो या तो ज्यामिति शेडर है, यदि उपस्थित है, या [[रास्टेराइज़र]] है। वर्टेक्स शेडर्स 3डी मॉडल वाले किसी भी दृश्य में स्थिति, गति, प्रकाश और रंग के विवरण पर शक्तिशाली नियंत्रण सक्षम कर सकते हैं।


==== ज्यामिति शेड्स ====
==== ज्यामिति शेड्स ====
ज्यामिति शेड्स को Direct3D 10 और OpenGL 3.2 में पेश किया गया था; पहले एक्सटेंशन के उपयोग के साथ OpenGL 2.0+ में उपलब्ध था।<ref>[http://www.opengl.org/wiki/Geometry_Shader Geometry Shader - OpenGL]. Retrieved on December 21, 2011.</ref> इस प्रकार के शेडर उन आदिम से नए ग्राफिक्स [[आदिम (ज्यामिति)]] उत्पन्न कर सकते हैं, जैसे अंक, रेखाएँ और त्रिकोण, जो ग्राफिक्स पाइपलाइन की शुरुआत में भेजे गए थे।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/bb205123(VS.85).aspx|title=Pipeline Stages (Direct3D 10) (Windows)|website=msdn.microsoft.com}}</ref>
ज्यामिति शेड्स को डायरेक्ट 3डी 10 और ओपन जीएल 3.2 में प्रस्तुत किया गया था; पहले एक्सटेंशन के उपयोग के साथ ओपन जीएल 2.0+ में उपलब्ध था।<ref>[http://www.opengl.org/wiki/Geometry_Shader Geometry Shader - OpenGL]. Retrieved on December 21, 2011.</ref> इस प्रकार के शेडर उन आदिम से नए ग्राफिक्स [[आदिम (ज्यामिति)]] उत्पन्न कर सकता है, जैसे कि बिंदु, रेखाएँ और त्रिकोण, जो ग्राफिक्स पाइपलाइन की शुरुआत में भेजे गए थे।<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/bb205123(VS.85).aspx|title=Pipeline Stages (Direct3D 10) (Windows)|website=msdn.microsoft.com}}</ref>
ज्योमेट्री शेडर प्रोग्राम को वर्टेक्स शेडर्स के बाद निष्पादित किया जाता है। वे संभवतः आसन्न जानकारी के साथ इनपुट के रूप में एक संपूर्ण आदिम लेते हैं। उदाहरण के लिए, त्रिभुजों पर काम करते समय, तीन कोने ज्यामिति शेडर के इनपुट होते हैं। शेडर तब शून्य या अधिक आदिम का उत्सर्जन कर सकता है, जो रेखापुंज होते हैं और उनके टुकड़े अंततः एक पिक्सेल शेडर में पारित हो जाते हैं।


ज्योमेट्री शेडर के विशिष्ट उपयोगों में पॉइंट स्प्राइट जेनरेशन, ज्योमेट्री टेसलेशन (कंप्यूटर ग्राफिक्स), [[छाया मात्रा]] एक्सट्रूज़न और [[ घन नक्शा ]] के लिए सिंगल पास रेंडरिंग शामिल हैं। ज्यामिति शेडर्स के लाभों का एक विशिष्ट वास्तविक दुनिया उदाहरण स्वत: जाल जटिलता संशोधन होगा। एक वक्र के लिए नियंत्रण बिंदुओं का प्रतिनिधित्व करने वाली रेखा स्ट्रिप्स की एक श्रृंखला ज्यामिति शेडर को पास की जाती है और आवश्यक जटिलता के आधार पर शेडर स्वचालित रूप से अतिरिक्त लाइनें उत्पन्न कर सकता है जिनमें से प्रत्येक एक वक्र का बेहतर सन्निकटन प्रदान करता है।
ज्योमेट्री शेडर प्रोग्राम को वर्टेक्स शेडर्स के पश्चात निष्पादित किया जाता है। वे संभवतः आसन्न जानकारी के साथ इनपुट के रूप में एक संपूर्ण आदिम लेते हैं। उदाहरण के लिए, त्रिभुजों पर काम करते समय, तीन कोने ज्यामिति शेडर के इनपुट होते हैं। शेडर तब शून्य या अधिक आदिम का उत्सर्जन कर सकता है, जो रास्टेराइज़र होते हैं और उनके फ़्रैगमेंट अंततः एक पिक्सेल शेडर में पारित हो जाते हैं।
 
ज्योमेट्री शेडर के विशिष्ट उपयोगों में पॉइंट स्प्राइट जेनरेशन, ज्योमेट्री टेसलेशन (कंप्यूटर ग्राफिक्स), [[छाया मात्रा]] एक्सट्रूज़न और [[ घन नक्शा |घन नक्शा]] के लिए सिंगल पास रेंडरिंग सम्मलित हैं। ज्यामिति शेडर्स के लाभों का एक विशिष्ट वास्तविक शब्द उदाहरण स्वत: मेश जटिलता संशोधन होगा। एक वक्र के लिए नियंत्रण बिंदुओं का प्रतिनिधित्व करने वाली रेखा स्ट्रिप्स की एक श्रृंखला ज्यामिति शेडर को पास की जाती है और आवश्यक जटिलता के आधार पर शेडर स्वचालित रूप से अतिरिक्त लाइनें उत्पन्न कर सकता है जिनमें से प्रत्येक एक वक्र का बेहतर सन्निकटन प्रदान करता है।


==== टेसलेशन शेड्स ====
==== टेसलेशन शेड्स ====
OpenGL 4.0 और Direct3D 11 के अनुसार, एक नया शेडर वर्ग जिसे टेसलेशन शेडर कहा जाता है, जोड़ा गया है। यह पारंपरिक मॉडल में दो नए शेडर चरणों को जोड़ता है: टेसलेशन कंट्रोल शेड्स (जिसे हल शेड्स के रूप में भी जाना जाता है) और टेसलेशन मूल्यांकन शेडर्स (डोमेन शेडर्स के रूप में भी जाना जाता है), जो एक साथ सरल जालों को रन-टाइम के अनुसार महीन जालों में विभाजित करने की अनुमति देते हैं। एक गणितीय कार्य के लिए। फ़ंक्शन को विभिन्न प्रकार के चर से संबंधित किया जा सकता है, विशेष रूप से विस्तार के सक्रिय स्तर (कंप्यूटर ग्राफिक्स) की अनुमति देने के लिए देखने वाले कैमरे से दूरी। विस्तार-स्तर स्केलिंग। यह कैमरे के करीब की वस्तुओं को बारीक विवरण देने की अनुमति देता है, जबकि आगे की वस्तुओं में अधिक मोटे जाल हो सकते हैं, फिर भी गुणवत्ता में तुलनीय लगते हैं। यह मेमोरी से बहुत जटिल लोगों को डाउनसैंपलिंग करने के बजाय शेडर इकाइयों के अंदर एक बार मेश को परिष्कृत करने की अनुमति देकर आवश्यक मेश बैंडविड्थ को भी काफी कम कर सकता है। कुछ एल्गोरिदम किसी भी मनमाना जाल को बढ़ा सकते हैं, जबकि अन्य सबसे विशिष्ट कोने और किनारों को निर्देशित करने के लिए जाल में संकेत देने की अनुमति देते हैं।
ओपन जीएल 4.0 और डायरेक्ट 3डी 11 के अनुसार, एक नया शेडर वर्ग जिसे टेसलेशन शेडर कहा जाता है, जोड़ा गया है। यह पारंपरिक मॉडल में दो नए शेडर चरण जोड़ता है: टेसलेशन कंट्रोल शेडर्स (जिसे हल शेडर्स के रूप में भी जाना जाता है) और टेसलेशन मूल्यांकन शेडर्स (डोमेन शेडर्स के रूप में भी जाना जाता है), जो एक साथ सरल मेश को गणितीय कार्य के अनुसार रन-टाइम में उत्कृष्ट मेश में उप-विभाजित करने की अनुमति देते हैं। फ़ंक्शन विभिन्न प्रकार के चर से संबंधित हो सकता है, विशेष रूप से सक्रिय लेवल-ऑफ-डिटेल्स स्केलिंग की अनुमति देगा देखने वाले कैमरे से दूरी के लिए। यह कैमरे के करीब की वस्तुओं को उत्कृष्ट विस्तार देने की अनुमति देता है, जबकि आगे की वस्तुओं में अधिक अपरिष्कृत म