एक शेडर प्रोग्राम का वर्णन करने वाली एक क्लास।
प्रत्येक p5.Shader ऑब्जेक्ट में एक शेडर प्रोग्राम होता है जो ग्राफिक्स प्रोसेसिंग यूनिट (GPU) पर चलता है। शेडर एक साथ कई पिक्सल या वर्टेक्स को प्रोसेस कर सकते हैं, जिससे वे कई ग्राफिक्स कार्यों के लिए तेज हो जाते हैं। वे GLSL नामक भाषा में लिखे जाते हैं और स्केच में शेष कोड के साथ चलते हैं।
एक शेडर प्रोग्राम दो फ़ाइलों से बना होता है, एक वर्टेक्स शेडर और एक फ्रैग्मेंट शेडर। वर्टेक्स शेडर 3D ज्यामिति को स्क्रीन पर कहां खींचता है और फ्रैग्मेंट शेडर रंग को प्रभावित करता है। एक बार p5.Shader ऑब्जेक्ट बना लिया जाता है, तो इसका उपयोग shader() फ़ंक्शन के साथ किया जा सकता है, जैसे shader(myShader)।
ध्यान दें: createShader(), createFilterShader() और loadShader() इस क्लास के एक इंस्टेंस बनाने के लिए अनुशंसित तरीके हैं।
उदाहरण
सिंटैक्स
p5.Shader(renderer, vertSrc, fragSrc)
पैरामीटर्स
इस शेडर के लिए WebGL संदर्भ।
वर्टेक्स शेडर प्रोग्राम के लिए स्रोत कोड।
फ्रैगमेंट शेडर प्रोग्राम के लिए स्रोत कोड।
मेथड्स
एक ड्राइंग संदर्भ से दूसरे में शेडर की कॉपी।
प्रत्येक p5.Shader ऑब्जेक्ट को चलने से पहले shader() कॉल करके कॉम्पाइल करना होता है। कॉम्पाइलेशन एक ड्राइंग संदर्भ में होता है जो आमतौर पर मुख्य कैनवास या p5.Graphics का एक उदाहरण होता है। एक शेडर केवल उसी संदर्भ में उपयोग किया जा सकता है जिसमें यह कंपाइल किया गया था। copyToContext() मेथड शेडर को फिर से कॉम्पाइल करती है और इसे किसी अन्य ड्राइंग संदर्भ में कॉपी करती है जहां इसका पुनः उपयोग किया जा सकता है।
पैरामीटर संदर्भ, वह ड्राइंग संदर्भ है जहां शेडर का उपयोग किया जाएगा। शेडर को p5.Graphics के एक उदाहरण में कॉपी किया जा सकता है, जैसे myShader.copyToContext(pg)। शेडर को window वेरिएबल का उपयोग करके भी p5.Graphics ऑब्जेक्ट से मुख्य कैनवास में कॉपी किया जा सकता है, जैसे myShader.copyToContext(window)।
ध्यान दें: createShader(), createFilterShader() या loadShader() से बनाया गया p5.Shader ऑब्जेक्ट createFramebuffer() से बनाए गए p5.Framebuffer ऑब्जेक्ट के साथ सीधे उपयोग किया जा सकता है। दोनों ऑब्जेक्ट मुख्य कैनवास के समान संदर्भ हैं।
शेडर के यूनिफ़ॉर्म (वैश्विक) चर को सेट करता है।
शेडर प्रोग्राम कंप्यूटर के ग्राफिक प्रोसेसिंग यूनिट (GPU) पर चलते हैं। वे कंप्यूटर की मेमोरी के एक हिस्से में रहते हैं जो उन स्केच से पूरी तरह अलग होता है जो उन्हें चलाते हैं। यूनिफ़ॉर्म शेडर प्रोग्राम के भीतर वैश्विक चर हैं। वे एक तरीका प्रदान करते हैं कि CPU पर चलने वाले स्केच से GPU पर चलने वाले शेडर प्रोग्राम में मान पास किए जा सकें।
पहला पैरामीटर, uniformName, यूनिफ़ॉर्म का नाम होता है। उपरोक्त शेडर के लिए, uniformName 'r' होगा।
दूसरा पैरामीटर, data, वह मान है जिसे यूनिफ़ॉर्म को सेट करने के लिए उपयोग किया जाना चाहिए। उदाहरण के लिए, myShader.setUniform('r', 0.5) कॉल करना शेडर में r यूनिफ़ॉर्म को 0.5 पर सेट कर देगा। डेटा को यूनिफ़ॉर्म के प्रकार के अनुरूप होना चाहिए। संख्याएं, स्ट्रिंग, बूलियन, एरे और कई प्रकार की छवि setUniform() के साथ शेडर में पास की जा सकती हैं।