क्या बहुउद्देशीय वास्तव में सिर्फ "एक से अधिक बनावट का उपयोग करना" है?


10

यह बेवकूफ लग सकता है, लेकिन यह मुझे परेशान करता है। मैं जो समझता हूं, मल्टीटेक्स्चर केवल 1 से अधिक बनावट प्रति shader का उपयोग कर रहा है (आमतौर पर उन्हें किसी भी तरह मिश्रण करने के लिए)। इसलिए 1 बनावट बनाने के बजाय, मैं 2 या अधिक का निर्माण करता हूं जो कि ... बहुत स्पष्ट है!

उसके लिए एक विशेष शब्द क्यों है? क्या केवल "1 से अधिक बनावट का उपयोग" करने से यह अधिक है? क्या मैं कुछ भूल रहा हूँ?


एक समय में विशेष रूप से वास्तविक समय 3 डी ग्राफिक्स में, एक बनावट (फैलाना नक्शा) का उपयोग करना बहुत आम था। इसलिए नाम का उपयोग यह सुझाव देने के लिए किया गया था कि आप एक से अधिक बनावट का उपयोग कर रहे हैं। मुझे समस्या नहीं दिख रही है। मल्टी-थ्रेडेड की तरह ज्यादा
AturSams

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

इसके लिए विशेष एपीआई की आवश्यकता नहीं होती है। यह कार्यान्वयन पर निर्भर करेगा। मैं कुछ उपकरणों का उपयोग करता हूं जो मल्टीटेक्स्चर का उसी तरह व्यवहार करते हैं जैसे वे "एकजुट" होंगे;)
AturSams

@ कौन सा हिस्सा? शीर्षक?
अंको

जवाबों:


16

विशेष शब्द को ग्राफिक्स कार्ड और वास्तविक समय ग्राफिक्स एपीआई के विकास के साथ इतना विशेष होने के बजाय करना है। उदाहरण के लिए इमेज प्रोसेसिंग और ऑफलाइन ग्राफिक्स रेंडरिंग में रियल टाइम ग्राफिक्स एपीआई और उपभोक्ता स्तर के हार्डवेयर में उपलब्ध होने से बहुत पहले ही यह सुविधा थी।

चूंकि ओपनजीएल 1.1 (फिक्स्ड फंक्शनलिटी) मल्टीटास्टिंग को एपीआई के लिए एक नए राज्य के रूप में पेश किया गया था। केवल एक बनावट को बांधने के बजाय, यह आपको कई बनावटों को बांधने की क्षमता देता है; प्रत्येक बनावट इकाइयों के लिए एक और फिर बनावट पर्यावरण मानकों में से एक का उपयोग करके उन दोनों के बीच मिश्रण, मिश्रण, modulate..etc 1

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

शासकों के परिचय के साथ, पिछले कॉम्बिनेटर आधिकारिक तौर पर पदावनत होने तक निरर्थक हो गए। अंत में यह मामूली रूप से तुच्छ हो गया (जैसा कि हार्डवेयर और तदनुसार एपीआई विकसित) ने शैडर को एक बनावट नमूना उत्तीर्ण करने के लिए और GPU ने आपके बनावट पर मनमाने ढंग से संचालन (अपने shader) को निष्पादित किया जो पहले था उससे अधिक लचीला।

यहाँ बिंदु; यहां तक ​​कि अगर यह तुच्छ हो गया, तो यह शब्द किसी भी ऑपरेशन के लिए एक सामान्य शब्द के रूप में बच गया, जिसमें कई बनावटों के नमूने और सजा का वर्णन है।

1 मैं अपनी याददाश्त का उपयोग कर रहा हूं, अगर मुझे याद नहीं है तो ओपनजीएल फिक्स्ड फंक्शनलिटी मुझे याद दिलाती है।


5

ऐतिहासिक कारण यह है कि "मल्टीटेक्स्चरिंग" एक समय में एक बार "हार्डवेयर टीएनएल" की तरह एक विपणन चर्चा थी। चूंकि यह नए कार्ड की एक विशिष्ट विशेषता थी, इसलिए उन्हें बेचने के लिए इसके लिए एक शब्द होना चाहिए।

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

अंतर यह नहीं है कि आप कई बनावट बना सकते हैं, बल्कि यह कि आप दो या अधिक बनावटों को मिलाते हैं। उदाहरण के लिए, आप उन्हें अल्फा या कुछ प्रति-वर्टेक्स इंटरपोलेटेड ब्लेंड कारकों के आधार पर मिश्रित कर सकते हैं, या आप उन्हें जोड़ सकते हैं, या कुछ अलग कर सकते हैं।
विन्यास / प्रोग्रामबिलिटी की मात्रा पिछले एक दशक में बहुत विकसित हुई है, लेकिन एक बड़ा अंतर यह है कि आप किसी तरह दो या अधिक इनपुट को एक आउटपुट में जोड़ सकते हैं ।


2

शुरुआत में रोशनी थी

ओपनग्ल लाइटिंग, विशिष्ट होने के लिए, जिसने कुछ गणितीय परिचालनों को एक टुकड़े पर लागू करने के लिए निर्दिष्ट किया था, जिन्हें तब अंतिम रंग प्राप्त करने के लिए बनावट के साथ जोड़ा गया था।

और फिर क्वेक था

भूकंप नहीं था यह वस्तुओं के कई के लिए प्रकाश व्यवस्था के इस प्रकार का उपयोग करें। इसके बजाय यह प्रकाश को दर्शाने के लिए एक दूसरी बनावट का उपयोग करता था, जिसे अंतिम रंग प्राप्त करने के लिए ऑब्जेक्ट बनावट से गुणा (या "संशोधित") किया गया था।

हालाँकि, उस समय का हार्डवेयर एकल ऑपरेशन में इसका समर्थन नहीं करता था। तो क्वेक को दो बार दृश्य वस्तुओं को खींचने की आवश्यकता है:

  • बेस टेक्सचर को बिछाने के लिए एक बार सब कुछ ड्रा करें।
  • एक मॉड्यूलेट मिश्रण मोड सेट करें।
  • प्रकाश बनावट लागू करने के लिए दूसरी बार सब कुछ ड्रा करें।

यह पाठ्यक्रम धीमा था; न केवल सभी ज्यामिति को बदलने और दो बार (जो उन दिनों में एक सीपीयू ऑपरेशन था) को क्लिप करने की आवश्यकता थी, लेकिन प्रत्येक पिक्सेल ऑन-स्क्रीन समाप्त होने के दौरान दो बार छुआ जा रहा था।

मल्टीटेक्स्ट दर्ज करें

Multitexture इसका समाधान था, और मूल रूप से GL_SGIS_multitexture एक्सटेंशन के माध्यम से उजागर किया गया था, जो केवल कुछ उपभोक्ता 3DFX कार्ड पर मौजूद था। मूल रूप से यह केवल दो बनावट (और मिश्रण मोड के सीमित सेट के साथ) को सम्मिश्रण करने की अनुमति देता है।

मूल GLQuake readme से उद्धृत करने के लिए :

GL_SGIS_multitexture
Multitextures समर्थन कुछ हार्डवेयर को दो के बजाय एक पास में दुनिया को प्रस्तुत करने की अनुमति देता है। GLQuake दो पासों का उपयोग करता है, एक दुनिया के बनावट के लिए और दूसरा उन लाइटमैप्स के लिए जो बनावट पर मिश्रित होते हैं। कुछ हार्डवेयर पर, GL_SIGS_multitexture समर्थित OpenGL कार्यान्वयन के साथ, यह एक पास में किया जा सकता है। इसका समर्थन करने वाले हार्डवेयर पर, आपको फ्रेम दर में 60% से 100% की वृद्धि मिलेगी। वर्तमान में, केवल 3DFX दोहरे TMU कार्ड (जैसे कि ओब्सीडियन 2220) इस विस्तार का समर्थन करते हैं, लेकिन अन्य हार्डवेयर जल्द ही अनुसरण करेंगे।

यह याद रखना महत्वपूर्ण है कि इस समय प्रभाव जैसे कि सामान्य मैपिंग, किसी अन्य प्रकार की प्रति पिक्सेल प्रकाश व्यवस्था, यहां तक ​​कि शेड्स, और इसी तरह बस अस्तित्व में नहीं था (अच्छी तरह से वे किया था, लेकिन मुख्य रूप से सिर्फ अकादमिक कागजात और अनुसंधान परियोजनाओं में, और वास्तविक समय प्रतिपादन में उपयोग के लिए व्यवहार्य नहीं माना जाता था)।

और इसलिए वर्तमान के लिए

यहाँ से यह बहुत सुंदर है जैसा कि अन्य उत्तरों में वर्णित है। समय के साथ मल्टीटेक्स्टिंग एक मानक विशेषता बन गई, और अधिक ब्लेंड मोड उपलब्ध होने के साथ, अंततः मनमाने ढंग से shader कोड को रास्ता दे रहा है।

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

इस सब के इतिहास पर आगे पढ़ने के लिए यहां उपलब्ध है , और इस प्रोग्रामर पर एक अच्छा ऐतिहासिक राइटअप (व्यापक संदर्भ का, और इसमें खेला जाने वाला हिस्सा बहुउद्देशीय) ।

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