सभी को नमस्कार। पिछले मेरे लेख और थे गेम डेवलपमेंट में रिएक्टिव प्रोग्रामिंग: यूनिटी की विशिष्टताएं । एकता पर खेल विकसित करना: वास्तुकला को व्यवस्थित करने के दृष्टिकोण की जांच करना आज मैं यूनिटी में रेंडरिंग और शेडर्स जैसे विषय पर बात करना चाहूंगा। शेडर्स (सरल शब्दों में) वीडियो कार्ड के लिए निर्देश हैं जो उन्हें बताते हैं कि गेम में ऑब्जेक्ट को कैसे प्रस्तुत करना और बदलना है। तो, क्लब में आपका स्वागत है दोस्त। सावधानी! यह लेख एक किलोमीटर लम्बा था इसलिए मैंने इसे दो भागों में बाँट दिया! यूनिटी में रेंडरिंग कैसे काम करती है? के वर्तमान संस्करण में, हमारे पास तीन अलग-अलग रेंडरिंग पाइपलाइन हैं - बिल्ट-इन, एचडीआरपी और यूआरपी। रेंडरिंग से निपटने से पहले, हमें रेंडरिंग पाइपलाइनों की अवधारणा को समझने की जरूरत है जो यूनिटी हमें प्रदान करती है। यूनिटी प्रत्येक रेंडरिंग पाइपलाइन कुछ चरण निष्पादित करती है जो अधिक महत्वपूर्ण संचालन करती है और एक संपूर्ण रेंडरिंग प्रक्रिया बनाती है। और जब हम एक मॉडल (उदाहरण के लिए, .fbx) को मंच पर लोड करते हैं, तो हमारे मॉनिटर तक पहुंचने से पहले, यह बहुत दूर चला जाता है, जैसे कि वाशिंगटन से लॉस एंजिल्स तक विभिन्न सड़कों पर यात्रा कर रहा हो। प्रत्येक रेंडरिंग पाइपलाइन के अपने गुण होते हैं जिनके साथ हम काम करेंगे। भौतिक गुण, प्रकाश स्रोत, बनावट और शेडर के अंदर के सभी कार्य स्क्रीन पर वस्तुओं की उपस्थिति और अनुकूलन को प्रभावित करेंगे। तो, यह प्रक्रिया कैसे होती है? इसके लिए, हमें रेंडरिंग पाइपलाइनों की बुनियादी वास्तुकला पर चर्चा करने की आवश्यकता है। एकता हर चीज़ को चार चरणों में विभाजित करती है: अनुप्रयोग कार्य, ज्यामिति के साथ काम करना, रेखापुंजीकरण और पिक्सेल प्रसंस्करण। अनुप्रयोग कार्य फ़ंक्शंस की प्रोसेसिंग सीपीयू पर शुरू होती है और हमारे दृश्य के भीतर होती है। इसमें शामिल हो सकते हैं: भौतिकी प्रसंस्करण और टकराव की गलत गणना बनावट एनिमेशन कीबोर्ड और माउस इनपुट हमारी स्क्रिप्ट यह वह जगह है जहां हमारा एप्लिकेशन हमारे प्राइमेटिव्स (त्रिकोण, शीर्ष, आदि) को उत्पन्न करने के लिए मेमोरी में संग्रहीत डेटा को पढ़ता है। अनुप्रयोग चरण के अंत में, यह सब मैट्रिक्स परिवर्तनों का उपयोग करके शीर्ष परिवर्तनों पर काम करने के लिए ज्यामिति प्रसंस्करण चरण में भेजा जाता है। ज्यामिति प्रसंस्करण जब कंप्यूटर सीपीयू के माध्यम से स्क्रीन पर दिखाई देने वाली छवियों का अनुरोध करता है, तो यह 2 चरणों में किया जाता है: हमारे जीपीयू से जब रेंडर स्थिति सेट हो जाती है, और ज्यामिति प्रसंस्करण से पिक्सेल प्रसंस्करण तक के चरण पारित हो चुके होते हैं जब ऑब्जेक्ट को स्क्रीन पर प्रस्तुत किया जाता है ज्यामिति प्रसंस्करण चरण GPU पर होता है और प्रसंस्करण के लिए जिम्मेदार होता है हमारी वस्तु के शीर्ष। इस चरण को चार उप-प्रक्रियाओं में विभाजित किया गया है: वर्टेक्स शेडिंग, प्रोजेक्शन, क्लिपिंग और स्क्रीन पर डिस्प्ले। जब हमारे प्राइमेटिव्स को पहले एप्लिकेशन चरण में सफलतापूर्वक लोड और असेंबल किया जाता है, तो उन्हें वर्टेक्स शेडिंग चरण में भेजा जाता है। इसके दो कार्य हैं: वस्तु में शीर्षों की स्थिति की गणना करें स्थिति को अन्य स्थानिक निर्देशांकों में परिवर्तित करें (उदाहरण के तौर पर स्थानीय से विश्व निर्देशांक तक) ताकि उन्हें स्क्रीन पर प्रस्तुत किया जा सके साथ ही, इस चरण के दौरान, हम अतिरिक्त रूप से उन गुणों का चयन कर सकते हैं जिनकी ग्राफिक्स बनाने के अगले चरणों के लिए आवश्यकता होगी। इनमें सामान्य, स्पर्शरेखा, साथ ही यूवी निर्देशांक और अन्य पैरामीटर शामिल हैं। प्रोजेक्शन और क्लिपिंग अतिरिक्त चरणों के रूप में काम करते हैं और हमारे दृश्य में कैमरा सेटिंग्स पर निर्भर करते हैं। ध्यान दें कि संपूर्ण रेंडरिंग प्रक्रिया कैमरा फ्रस्टम के सापेक्ष की जाती है। प्रक्षेपण परिप्रेक्ष्य या ऑर्थोग्राफ़िक मैपिंग के लिए जिम्मेदार होगा, जबकि क्लिपिंग हमें कैमरा फ्रस्टम के बाहर अतिरिक्त ज्यामिति को ट्रिम करने की अनुमति देती है। रैस्टराइज़ेशन और पिक्सेल के साथ काम करना रेखापुंजीकरण है। इसमें हमारे प्रक्षेपण में ऐसे पिक्सेल ढूंढना शामिल है जो स्क्रीन पर हमारे 2डी निर्देशांक के अनुरूप हों। स्क्रीन ऑब्जेक्ट द्वारा कब्जा किए गए सभी पिक्सेल को खोजने की प्रक्रिया को रैस्टराइज़ेशन कहा जाता है। इस प्रक्रिया को हमारे दृश्य में ऑब्जेक्ट और स्क्रीन पर पिक्सेल के बीच एक सिंक्रनाइज़ेशन चरण माना जा सकता है। कार्य प्रतिपादन का अगला चरण स्क्रीन पर प्रत्येक ऑब्जेक्ट के लिए निम्नलिखित चरण निष्पादित किए जाते हैं: ट्राएंगल सेटअप हमारी वस्तुओं पर डेटा उत्पन्न करने और उसे ट्रैवर्सल के लिए प्रसारित करने के लिए जिम्मेदार है। त्रिभुज ट्रैवर्सल उन सभी पिक्सेल की गणना करता है जो बहुभुज समूह का हिस्सा हैं; इस स्थिति में, पिक्सेल के इस समूह को फ़्रैगमेंट कहा जाता है। अंतिम चरण तब होता है जब हमने सारा डेटा एकत्र कर लिया है और स्क्रीन पर पिक्सेल प्रदर्शित करने के लिए तैयार हैं। इस बिंदु पर, फ्रैगमेंट शेडर लॉन्च किया जाता है, जो प्रत्येक पिक्सेल की दृश्यता के लिए जिम्मेदार होता है। यह स्क्रीन पर प्रदर्शित होने वाले प्रत्येक पिक्सेल के रंग के लिए जिम्मेदार है। आगे और विलंबित छायांकन जैसा कि हम पहले से ही जानते हैं, यूनिटी में तीन प्रकार की रेंडरिंग पाइपलाइन हैं: बिल्ट-इन, यूआरपी और एचडीआरपी। एक तरफ, हमारे पास बिल्ट-इन (सबसे पुराना रेंडरिंग प्रकार जो सभी यूनिटी मानदंडों को पूरा करता है) है। इसके विपरीत, हमारे पास अधिक आधुनिक, अनुकूलित और लचीला एचडीआरपी और यूआरपी (जिसे स्क्रिप्टेबल आरपी कहा जाता है) है। प्रत्येक रेंडरिंग पाइपलाइन में ग्राफिक्स प्रोसेसिंग के लिए अपने पथ होते हैं, जो ज्यामिति को लोड करने से लेकर इसे स्क्रीन पर प्रस्तुत करने तक के लिए आवश्यक संचालन के सेट के अनुरूप होते हैं। यह हमें किसी प्रबुद्ध दृश्य (उदाहरण के लिए, दिशात्मक प्रकाश और परिदृश्य वाला दृश्य) को ग्राफ़िक रूप से संसाधित करने की अनुमति देता है। रेंडरिंग पथों के उदाहरणों में आगे का पथ, आस्थगित पथ, और लीगेसी आस्थगित और लीगेसी वर्टेक्स लिट शामिल हैं। प्रत्येक अपना प्रदर्शन रखते हुए कुछ विशेषताओं और सीमाओं का समर्थन करता है। यूनिटी में, रेंडरिंग के लिए आगे का पथ डिफ़ॉल्ट है। ऐसा इसलिए है क्योंकि सबसे बड़ी संख्या में वीडियो कार्ड इसका समर्थन करते हैं। लेकिन आगे के रास्ते में प्रकाश व्यवस्था और अन्य सुविधाओं की अपनी सीमाएँ हैं। ध्यान दें कि यूआरपी केवल आगे के पथ का समर्थन करता है, जबकि एचडीआरपी के पास अधिक विकल्प हैं और यह आगे और स्थगित दोनों पथों को जोड़ सकता है। इस अवधारणा को बेहतर ढंग से समझने के लिए, हमें एक उदाहरण पर विचार करना चाहिए जहां हमारे पास एक वस्तु और एक दिशात्मक प्रकाश है। ये ऑब्जेक्ट कैसे इंटरैक्ट करते हैं यह हमारे रेंडरिंग पथ (प्रकाश मॉडल) को निर्धारित करेगा। इसके अलावा, परिणाम इससे प्रभावित होगा: सामग्री विशेषताएँ प्रकाश स्रोतों की विशेषताएँ मूल प्रकाश मॉडल 3 अलग-अलग गुणों के योग से मेल खाता है: परिवेश रंग, फैलाना प्रतिबिंब, और स्पेक्युलर प्रतिबिंब। प्रकाश की गणना शेडर में की जाती है। यह प्रति शीर्ष या टुकड़े पर किया जा सकता है। जब प्रकाश की गणना प्रति शीर्ष पर की जाती है, तो इसे प्रति-शीर्ष प्रकाश व्यवस्था कहा जाता है और इसे शीर्ष शेडर चरण में किया जाता है। इसी प्रकार, यदि प्रकाश की गणना प्रति खंड के अनुसार की जाती है, तो इसे प्रति-खंड या प्रति-पिक्सेल शेडर कहा जाता है और इसे खंड (पिक्सेल) शेडर चरण में किया जाता है। वर्टेक्स लाइटिंग पिक्सेल लाइटिंग की तुलना में बहुत तेज़ है, लेकिन आपको यह विचार करना चाहिए कि सुंदर परिणाम प्राप्त करने के लिए आपके मॉडल में कई बहुभुज होने चाहिए। एकता में मैट्रिक्स तो, चलिए अपने प्रतिपादन चरणों पर लौटते हैं, अधिक सटीक रूप से शीर्षों के साथ काम करने के चरण पर। उनके परिवर्तन के लिए मैट्रिक्स का उपयोग किया जाता है। मैट्रिक्स संख्यात्मक तत्वों की एक सूची है जो कुछ अंकगणितीय नियमों का पालन करते हैं और अक्सर कंप्यूटर ग्राफिक्स में उपयोग किए जाते हैं। एकता में, मैट्रिक्स स्थानिक परिवर्तनों का प्रतिनिधित्व करते हैं। उनमें से, हम पा सकते हैं: UNITY_MATRIX_MVP UNITY_MATRIX_MV UNITY_MATRIX_V UNITY_MATRIX_P UNITY_MATRIX_VP UNITY_MATRIX_T_MV यूनिटी_MATRIX_IT_MV Unity_ObjectToWorld Unity_WorldToObject वे सभी चार-बाय-चार (4x4) मैट्रिक्स के अनुरूप हैं। प्रत्येक मैट्रिक्स में संख्यात्मक मानों की चार पंक्तियाँ और चार स्तंभ होते हैं। मैट्रिक्स का एक उदाहरण निम्नलिखित विकल्प हो सकता है: जैसा कि पहले कहा गया था - हमारी वस्तुओं में दो नोड होते हैं (कुछ ग्राफिक संपादकों में, उन्हें ट्रांसफॉर्म और शेप कहा जाता है), और दोनों ऑब्जेक्ट स्पेस में हमारे शीर्षों की स्थिति के लिए जिम्मेदार हैं। ऑब्जेक्ट स्पेस ऑब्जेक्ट के केंद्र के सापेक्ष नोड्स की स्थिति को परिभाषित करता है। और हर बार जब हम वस्तु के शीर्षों की स्थिति, घूर्णन या पैमाने को बदलते हैं, तो हम प्रत्येक शीर्ष को मॉडल मैट्रिक्स (एकता के मामले में - UNITY_MATRIX_M) से गुणा करते हैं। निर्देशांक को एक स्थान से दूसरे स्थान पर स्थानांतरित करने और उसके भीतर काम करने के लिए, हम लगातार विभिन्न मैट्रिक्स के साथ काम करेंगे। बहुभुज वस्तुओं के गुण बहुभुज वस्तुओं के साथ काम करने के विषय को जारी रखते हुए, मैं कह सकता हूं कि 3डी ग्राफिक्स की दुनिया में, प्रत्येक वस्तु एक बहुभुज जाल से बनी होती है। हमारे दृश्य की वस्तुओं में गुण होते हैं; प्रत्येक में हमेशा शीर्ष, स्पर्शरेखा, मानक, यूवी निर्देशांक और रंग होते हैं। सभी मिलकर एक जाल बनाते हैं। यह सब है। शेडर्स द्वारा प्रबंधित किया जाता शेडर्स के साथ, हम इनमें से प्रत्येक पैरामीटर तक पहुंच और संशोधन कर सकते हैं। इन मापदंडों के साथ काम करते समय हम आमतौर पर वैक्टर (फ्लोट4) का उपयोग करेंगे। आगे, आइए अपनी वस्तु के प्रत्येक पैरामीटर का विश्लेषण करें। कोने किसी वस्तु के शीर्ष बिंदुओं के एक समूह के अनुरूप होते हैं जो 2डी या 3डी अंतरिक्ष में सतह क्षेत्र को परिभाषित करते हैं। 3डी संपादकों में, शीर्षों को आमतौर पर जाल और वस्तु के बीच प्रतिच्छेदन बिंदु के रूप में दर्शाया जाता है। एक नियम के रूप में, शीर्षों की विशेषता 2 बिंदुओं से होती है: वे परिवर्तन घटक के बाल घटक हैं स्थानीय स्थान में सामान्य वस्तु के केंद्र के अनुसार उनकी एक निश्चित स्थिति होती है इसका मतलब यह है कि प्रत्येक शीर्ष का अपना परिवर्तन घटक होता है जो उसके आकार, घूर्णन और स्थिति के लिए जिम्मेदार होता है, साथ ही ऐसे गुण भी होते हैं जो इंगित करते हैं कि ये शीर्ष हमारी वस्तु के केंद्र के सापेक्ष कहां हैं। नॉर्मल्स सामान्य रूप से हमें यह निर्धारित करने में मदद मिलती है कि हमारे ऑब्जेक्ट स्लाइस का चेहरा कहाँ स्थित है। एक सामान्य बहुभुज की सतह पर एक लंबवत वेक्टर से मेल खाता है, जिसका उपयोग किसी चेहरे या शीर्ष की दिशा या अभिविन्यास निर्धारित करने के लिए किया जाता है। स्पर्शरेखा एकता दस्तावेज़ का संदर्भ लेते हुए, हमें निम्नलिखित विवरण मिलता है: स्पर्शरेखा एकता में स्पर्शरेखाओं को वेक्टर4 के रूप में दर्शाया जाता है, जिसमें x,y,z घटक वेक्टर को परिभाषित करते हैं, और यदि आवश्यक हो तो द्विसामान्य को फ़्लिप करने के लिए w का उपयोग किया जाता है - यूनिटी मैनुअल एक इकाई-लंबाई वेक्टर है जो क्षैतिज (यू) बनावट दिशा के साथ मेष सतह का अनुसरण करती है। मैंने अभी क्या पढ़ा? सरल भाषा में, स्पर्शरेखाएं प्रत्येक ज्यामितीय आकृति के लिए यूवी में यू निर्देशांक का पालन करती हैं। यूवी निर्देशांक बहुत से लोगों ने की खालों को देखा है और हो सकता है, मेरी तरह, उन्होंने अपना स्वयं का कुछ चित्र बनाने का प्रयास भी किया हो। और यूवी निर्देशांक बिल्कुल इसी से संबंधित हैं। हम उनका उपयोग किसी 3D ऑब्जेक्ट पर 2D बनावट रखने के लिए कर सकते हैं। GTA वाइस सिटी ये निर्देशांक संदर्भ बिंदु के रूप में कार्य करते हैं जो नियंत्रित करते हैं कि बनावट मानचित्र में कौन से टेक्सल्स जाल में प्रत्येक शीर्ष के अनुरूप हैं। यूवी निर्देशांक का क्षेत्र 0.0 (फ्लोट) और 1.0 (फ्लोट) के बीच की सीमा के बराबर है, जहां "0" प्रारंभ बिंदु का प्रतिनिधित्व करता है और "1" समापन बिंदु का प्रतिनिधित्व करता है। वर्टेक्स रंग स्थिति, घूर्णन और आकार के अलावा, शीर्षों के भी अपने रंग होते हैं। जब हम किसी ऑब्जेक्ट को 3D सॉफ़्टवेयर से निर्यात करते हैं, तो यह उस ऑब्जेक्ट को एक रंग निर्दिष्ट करता है जिसे प्रकाश या किसी अन्य रंग की प्रतिलिपि बनाकर प्रभावित करने की आवश्यकता होती है। डिफ़ॉल्ट शीर्ष रंग सफेद (1,1,1,1,1,1) है, और रंग RGBA में एन्कोड किए गए हैं। उदाहरण के लिए, शीर्ष रंगों की सहायता से, आप बनावट मिश्रण के साथ काम कर सकते हैं, जैसा कि ऊपर की छवि में दिखाया गया है। छोटा सा निष्कर्ष यह पहले भाग का अंत है. दूसरे भाग में, मैं चर्चा करूंगा: शेडर क्या है शेडर भाषाएँ यूनिटी में बुनियादी शेडर प्रकार शेडर संरचना शेडरलैब सम्मिश्रण जेड-बफर (गहराई-बफर) को मारने के सीजी/एचएलएसएल शेडर ग्राफ यदि आपके कोई प्रश्न हैं, तो उन्हें टिप्पणियों में छोड़ें!