आप आज हार्डवेयर रेंडरिंग पर सॉफ़्टवेयर रेंडरिंग का उपयोग क्यों करेंगे?


13

CPU या सॉफ़्टवेयर रेंडरिंग के विपरीत मैं मानता हूं?

आम तौर पर सभी मौजूदा प्रतिपादन GPU आधारित नहीं होंगे, यह देखकर कि आप OpenGL या Direct X का उपयोग कर रहे हैं?

क्या कोई मुझे यहाँ कुछ जानकारी दे सकता है, कोई उपयुक्त उत्तर नहीं मिल सकता है?

जवाबों:


7

जैसा कि आप स्पष्ट रूप से पहले से जानते हैं कि GPU प्रतिपादन क्या है ... मुझे उत्तर दें कि आप क्या पूछ रहे हैं।

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

हालांकि, हाल के वर्षों में, न केवल सीखने की सामग्री बहुत अधिक उपलब्ध हो गई है, बल्कि, कई पुस्तकालय जो इन इंटरफेस की अंतर्निहित जटिलताओं को लपेटते हैं, उपलब्ध हो गए हैं और प्रवेश के लिए बाधाओं को कम कर दिया है। यह सब बढ़ी हुई दिलचस्पी के चक्र में वापस आ गया है जो पहले से ही दृश्यता के बढ़ते महत्व, चालाक उपयोगकर्ता इंटरफेस और कम-शक्ति वाले उपकरणों पर प्रदर्शन के कारण मौजूद था।

इसलिए सॉफ्टवेयर रेंडरिंग और 2D रेंडरिंग उन लोगों के लिए अच्छे एंट्री पॉइंट्स और फोकस क्षेत्र रहे हैं, जो ग्राफिक्स के लिए नए थे और / या एक ऐसा प्रोडक्ट बनाना चाहते थे, जहां रेंडरिंग किसी प्रोजेक्ट पर उपलब्ध समय से बहुत अधिक न हो। कम से कम 2 डी के संबंध में, यह अभी भी लागू होता है; प्रौद्योगिकी ने बड़े पैमाने पर 2 डी रेंडरिंग को जीपीयू तक लाने में अंतर को कवर किया है।


20

यहाँ कुछ बहुत अच्छे जवाब हैं, तो बस उन्हें पूरक करने के लिए।

सॉफ्टवेयर रेंडरिंग के पीछे एक प्रमुख प्रेरणा शक्ति क्षमता है। यह उत्तर में से एक पर छुआ था, लेकिन मैं एक विरोधी बिंदु बनाने जा रहा हूं: सॉफ़्टवेयर रेंडरिंग वास्तव में हार्डवेयर रेंडरिंग की तुलना में अधिक सक्षम हो सकता है, कम नहीं।

हार्डवेयर के साथ आप आम तौर पर हार्डवेयर की क्षमताओं तक ही सीमित रहते हैं, हालांकि ओपनग्ल के लिए एक सॉफ्टवेयर बहुत सारी चीजों में सक्षम है, जो हार्डवेयर में मौजूद नहीं है। इसका मतलब यह है कि यदि आप फ़ीचर एक्स का उपयोग करने की कोशिश करते हैं, लेकिन हार्डवेयर इसका समर्थन नहीं करता है, तो दो चीजों में से एक होगा: या तो आप सॉफ्टवेयर एमुलेशन (विशिष्ट ओपनग्लर्ड परिदृश्य) पर वापस आ जाएंगे या आपको नहीं मिलेगा यह बिल्कुल (विशिष्ट डी 3 डी परिदृश्य) का उपयोग करें।

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

यह वर्तमान जीपीयू के मामले में भी अधिक है, लेकिन ग्राफिक्स पाइपलाइन के अभी भी महत्वपूर्ण हिस्से हैं जिन्हें निश्चित कार्यक्षमता के रूप में उजागर किया गया है (या बिल्कुल भी उजागर नहीं किया गया है)।

सॉफ्टवेयर रेंडरिंग बेहतर तरीके से काम कर सकता है। यह केवल अपेक्षाकृत हाल ही में है कि हमने मल्टी-जीपीयू सेटअपों को वास्तव में व्यवहार्य बनते देखा है, लेकिन सॉफ्टवेयर कई सीपीयू कोर के कई सर्वरों में बड़े पैमाने पर हो सकता है। आपके पास संपूर्ण सर्वर फ़ार्म इसके लिए समर्पित हो सकते हैं, और पेशेवर रेंडर फ़ार्म अभी भी सॉफ़्टवेयर रेंडरिंग का उपयोग करेंगे।

सॉफ्टवेयर विभिन्न प्रतिपादन प्रतिमानों को उजागर कर सकता है। वर्तमान हार्डवेयर त्रिभुज / शीर्ष / टुकड़े / विखंडन प्रतिमान के आसपास बहुत अधिक केंद्रित है; यह एक चीज़ को चुनने और इसे तब तक अनुकूलित करने का मामला है जब तक कि यह दया के लिए चिल्लाता नहीं है। जीपीयू अभी भी रे ट्रेसिंग के लिए एक खराब विकल्प है, जो सॉफ्टवेयर में अधिक सामान्यतः लागू होता है।

निश्चित रूप से जब यह एक प्रत्यक्ष सेब से सेब की तुलना में आता है, तो जीपीयू सप्ताह के किसी भी दिन सॉफ्टवेयर को हरा देगा - बशर्ते हम उन क्षेत्रों की तुलना कर रहे हैं जहां जीपीयू मजबूत हैं। लेकिन यह कहना नहीं है कि वे हर क्षेत्र में मजबूत हैं। इसके बावजूद, और इस एसई साइट के प्रयोजनों के लिए, हार्डवेयर का उपयोग करना आमतौर पर जाने का तरीका है, लेकिन बस इस बात से अवगत रहें कि वहां ऐसे मामले हैं जहां सॉफ्टवेयर भी व्यवहार्य है।


8
"सॉफ़्टवेयर रेंडरिंग के लिए +1 वास्तव में हार्डवेयर रेंडरिंग की तुलना में अधिक सक्षम हो सकता है, कम नहीं।"
concept3d

10

हार्डवेयर या जीपीयू रेंडरिंग है, जैसा कि आपने चित्र बनाने के लिए ग्राफिकल प्रोसेसिंग यूनिट (उर्फ वीडियो कार्ड) का उपयोग करने का अनुमान लगाया है। विपरीत सॉफ्टवेयर प्रतिपादन है जहां सीपीयू का उपयोग किया जाता है।

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


2

मुझे लगता है कि यह वास्तव में अच्छा सवाल है।

मैं क्या कल्पना कर सकता हूं:

  • वीआरएएम सामान्य रैम मेमोरी की तुलना में अधिक सीमित है। GPU प्रतिपादन के मामले में - हर बनावट एक समस्या से अधिक है। आप VRAM की तुलना में रैम में औसतन 4 से 8 गुना अधिक डेटा स्टोर कर सकते हैं। बेशक यह परिदृश्य मानता है कि ऐसी कोई प्रणाली नहीं है जो अप्रयुक्त / अपेक्षित बनावट को / RAM / VCAM से मुक्त / धकेलने के लिए जिम्मेदार है

  • जब आप सॉफ़्टवेयर रेंडरिंग के साथ काम करते हैं तो मल्टीथ्रेडिंग के संदर्भ में यह बहुत आसान है - संदर्भों को साझा करने की आवश्यकता नहीं है

  • यदि आप 2D ग्राफिक्स कर रहे हैं - आमतौर पर ज्यादातर फ्रेमवर्क डर्टी रेक्टेंगल्स इवैल्यूएशन के इम्प्लीमेंटेशन पर चलते हैं - जो कई परफॉरमेंस जारी करता है।

फिर भी, ओजीएल / डी 3 डी का उपयोग करके प्रतिपादन बहुत अधिक प्रदर्शन और संभावनाएं देता है। शेडर्स वास्तव में आश्चर्यजनक चीजें कर सकते हैं, जो सॉफ्टवेयर रेंडरिंग के साथ लगभग असंभव हैं।

लेकिन इस तरह के ब्लिटिंग के रूप में, colorkeys का उपयोग करते हुए तकनीकी, अपनी तरह की भावना है जैसे कि आप आधार स्तर पर थे, कंप्यूटर ग्राफिक्स की दुनिया की उत्पत्ति।

मुझे लगता है कि सॉफ्टवेयर रेंडरिंग के बारे में जानना कम से कम अच्छा है। यह वास्तव में एक बहुत ही रोमांचक दुनिया है, यह उल्लेख नहीं करना कि यह आज हम जो कुछ भी देखते हैं, उसकी जड़ है।


1
आपको शेड चलाने के लिए हार्डवेयर त्वरण की आवश्यकता नहीं है। OS X 10.9 जहाजों में जीएल 4 के पूर्ण सॉफ्टवेयर कार्यान्वयन की सुविधा है। सॉफ़्टवेयर रेंडरिंग के लिए प्रदर्शन अविश्वसनीय रूप से अच्छा है; यह उस बिंदु पर नहीं है जहां आप वास्तविक रूप से परिष्कृत गेम खेल सकते हैं (निष्पक्ष होने के लिए, न तो जीपीयू ऐप्पल अपने उत्पादों के साथ जहाज हैं), लेकिन यह डायरेक्ट 3 डी संदर्भ रेस्टराइज़र जैसी चीज़ का उपयोग करने की तुलना में कहीं अधिक व्यावहारिक है। यह वास्तव में कुछ है जिसे आप काम कर रहे सॉफ़्टवेयर को उपयोग करके शिप कर सकते हैं।
एंडन एम। कोलमैन

@ AndonM.Coleman हर कोई Apple का उपयोग नहीं करता है और मुझे सॉफ़्टवेयर रेंडरर्स के बारे में नहीं पता है जो लिनक्स और विंडोज पर शेड का समर्थन करते हैं।
luke1985

1
हालांकि यह मेरी बात नहीं थी। ओपनजीएल के कार्यान्वयन हैं जहां पूरी तरह कार्यात्मक सीपीयू पर पूरी तरह से चलते हैं। तथ्य यह है कि Apple डेवलपर है काफी हद तक अप्रासंगिक है। आपके उत्तर ने यह धारणा दी कि आपको लगा कि ओपनजीएल में आधुनिक शेड चलाने के लिए आपके पास GPU है।
एंडन एम। कोलमैन

@ AndonM.Coleman और यह लगभग सही है, क्योंकि 80% मामलों में आपके पास है।
luke1985

2
शेडर्स को सॉफ्टवेयर रेंडरिंग के माध्यम से आसानी से लागू किया जा सकता है, यहां तक ​​कि टॉम्ब रेडर 1 और क्वेक 1 में पिक्सेल शेड भी थे। यह बिल्कुल विपरीत है, एक सीपीयू आपको अधिक नियंत्रण देता है फिर वर्तमान जीपीयू का सीमित शीर्ष / खंड पाइपलाइन।
lama12345
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.