हार्डवेयर टेसेलेशन कैसे काम करता है?


34

मैं बस किसी को स्पष्ट रूप से स्पष्ट शब्दों में समझाना चाहूंगा कि यह कैसे हार्डवेयर tessellation पर विचार करता है कि यह DX11 के साथ नया चर्चा है।

धन्यवाद।

जवाबों:


42

यदि आप रुचि रखते हैं तो मैं आपको "सरल" संस्करण दूंगा और किसी और को आपको विवरणों पर भरने दूंगा :)।

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

दूसरा तरीका यह है कि हम जिस आकृति का प्रतिनिधित्व करना चाहते हैं, उसके बारे में सरल ज्यामिति को मिलाएं। हम इसे टेसेलेशन की प्रक्रिया के साथ करते हैं । हम सकता है tessellate दो हलकों और लंबे समय आयतों की एक श्रृंखला है, जो बाहरी छोर के आसपास चादर: अधिक आदिम आकार में यह टूट द्वारा एक सिलेंडर। सर्कल को कई छोटे त्रिकोणों में विभाजित किया जा सकता है, जैसा कि किनारे के साथ आयताकार हो सकता है। अंतिम परिणाम एक मॉडल है जिसमें केवल त्रिकोण शामिल हैं:

त्रिकोणीय सिलेंडर की छवि

या, टोरस के लिए:

त्रिकोणीय टोरस की छवि

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

एक अन्य समस्या ज्यामितीय जटिलता की है: जबकि एक सिलेंडर की वक्र-आधारित परिभाषा बहुत सरल (त्रिज्या और लंबाई) है, एक tessellated परिभाषा सैकड़ों त्रिकोणों को जोड़ती है, जिनमें से प्रत्येक को स्वतंत्र रूप से परिभाषित करने की आवश्यकता है। नतीजतन, हमारी tessellated मॉडल फ़ाइल बहुत, बहुत बड़ी होगी। मान लीजिए कि हमारे पास किसी व्यक्ति की तरह गणितीय रूप से परिभाषित कुछ जटिल मॉडल है। हमारी मॉडल फ़ाइल आकार में मात्र 24kb हो सकती है। खैर, एक बार उस मॉडल को tessellated किया जाता है, जिसके परिणामस्वरूप फ़ाइल 24mb (24,000kb) हो सकती है। यह काफी अंतर है।

हार्डवेयर टेसलेशन वास्तविक समय (या लगभग वास्तविक समय में) में हार्डवेयर-असिस्टेड टेसलेशन करने के लिए ज्यामिति शेड का लाभ उठाता है । अनिवार्य रूप से, यह गणितीय रूप से परिभाषित 3 डी मॉडल लेने के लिए एक तंत्र प्रदान करता है और इसे एक tessellated प्रारूप में परिवर्तित करता है जिसे वीडियो कार्ड कुशलतापूर्वक प्रस्तुत कर सकता है। परंपरागत रूप से, गेम डेवलपर्स ने स्टूडियो में टेसेलेशन किया है और गेम के साथ टेसेलेटेड मॉडल को भेज दिया है। हार्डवेयर टेसेलेशन हमें इस प्रक्रिया को स्थगित करने की अनुमति देता है जब तक कि खेल वास्तव में खिलाड़ी के कंप्यूटर पर नहीं चल रहा हो । इसके कुछ गंभीर लाभ हैं:

  1. गेम की 3D सामग्री का आकार नाटकीय रूप से कम हो जाता है (कम डिस्क या छोटे डाउनलोड, और कम हार्ड डिस्क स्थान की आवश्यकता होती है)।

  2. हम वास्तविक समय में विस्तार के स्तर को नियंत्रित कर सकते हैं । क्या हम गेमिंग मशीन के अत्याधुनिक जानवर पर चल रहे हैं? यदि ऐसा है, तो हम बहुत उच्च स्तर के विवरण का उपयोग करके टेसलेट कर सकते हैं। क्या हम एकीकृत ग्राफिक्स के साथ एक पुराने लैपटॉप पर चल रहे हैं? कोई बात नहीं; हम प्रदर्शन को बढ़ावा देने के लिए विस्तार के स्तर को कम कर सकते हैं।

तो वह इसका सार है। यह शायद 100% सही नहीं है, क्योंकि मैं एक 3 डी प्रोग्रामर नहीं हूं, लेकिन इससे आपको एक बेहतर विचार देना चाहिए कि सभी उपद्रव के बारे में क्या है :)।

चीयर्स,
माइक


वाह ... शानदार! अब तक का सबसे लंबा 'अवलोकन' मैंने पढ़ा है: P

6
एक और चीज़ है जो स्क्रीन पर ऑब्जेक्ट के आकार - आवश्यक स्तर के स्तर को निर्धारित करती है। रनटाइम टमीलेशन आपको प्रत्येक ऑब्जेक्ट के कई संस्करणों को बनाए बिना, हर जगह विस्तार का सही स्तर देता है।
एडम

कि थोड़ा CPU भारी है?
jcora

@, क्या आपका मतलब है गहन गहन? सीपीयू कम देखभाल कर सकता है।
नैट ज़ॉगिग

0

बहुत बुरा है कि जिस तरह से ज्यादातर डेवलपर्स अब या निकट भविष्य में उपयोग नहीं कर रहे हैं। अभी वे सभी के लिए टेस का उपयोग करते हैं, इसकी ऊँचाई तक ज्यादातर समतल सतहों को विस्थापित करना है। इसका परिणाम अच्छा दिखता है, लेकिन मुझे अभी भी लगता है कि यह बहुत अधिक सक्षम तकनीक का खराब उपयोग है।


उपकरण और उत्पादन पाइपलाइनों को पुनर्निर्मित और पुनर्निर्मित किया जाना है (जैसा कि मुझे यकीन है कि आप सबसे बेहतर जानते हैं, @SamHocevar, इसलिए यह टिप्पणी आपके लिए लक्षित नहीं है), और नए हार्डवेयर को महत्वपूर्ण प्रतिशत के लिए प्रसार करना है।
क्रेग 23

@RobCraig ध्यान दें कि मैंने अभी उस टिप्पणी में वर्तनी तय की है; मैं मूल लेखक नहीं हूं।
सम होसेवर

@SamHcevar Yup, मुझे लगा - स्पष्ट करने के लिए धन्यवाद, हालांकि!
रोब क्रेग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.