एक दृश्य में कितने बहुभुज वास्तविक समय को बनाए रखते हुए आधुनिक हार्डवेयर तक पहुंच सकते हैं, और वहां कैसे पहुंचें?


11

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

मुझे पता है कि यह एक व्यापक, बहुत ज्यादा खुला हुआ सवाल है, और मैं इसके लिए माफी माँगता हूँ, मैंने अभी सोचा था कि यह यहाँ पर फिर भी एक मूल्यवान प्रश्न होगा।


2
मुझे नहीं लगता कि प्रश्न का आवश्यक रूप से बहुत अधिक खुला हुआ है, लेकिन 12 महीनों के भीतर कोई भी संख्यात्मक उत्तर गलत होने वाला है।
दान हुल्म

@DanHulme हाँ, लेकिन उस तरह की दक्षता तक पहुँचने के लिए उपयोग किए जाने वाले दृष्टिकोण समान रहते हैं। और जब नहीं, तो मैंने ऐसे प्रश्न देखे हैं, जिन्हें अन्य स्टैकएक्सचेंज साइटों पर समय-समय पर जवाब अपडेट करने की आवश्यकता होती है, इसलिए मुझे लगता है कि यह ठीक है।
लेलमेडेडोन

7
इसका उत्तर देना वास्तव में असंभव है। सबसे पहले, "रीयलटाइम" -60fps क्या है? 30? कम? दूसरा, जवाब बेहद अलग-अलग होगा कि आपके पास क्या जीपीयू है और आप किस संकल्प पर भरोसा कर रहे हैं। तीसरा, इसका उत्तर इस बात पर निर्भर करता है कि प्रतिपादन किस प्रकार काम करता है। दृश्य जटिलता पर सीमाएं केवल प्रति बहुभुज की संख्या की तुलना में अधिक जटिल हैं, लेकिन ड्रॉ कॉल की संख्या, राज्य परिवर्तन, रेंडर पास इत्यादि जैसी चीजें शामिल हैं - जो इंजन के काम करने से प्रभावित होते हैं, कलाकारों ने कैसे निर्माण किया दृश्य,
नाथन रीड

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

1
यह थोड़ा देर से है, लेकिन यहाँ आप ब्लेंडर में 24.000.000 वर्टीकल्स के साथ एक स्टेटिक जाल देख सकते हैं। और मैं इसे 40 FPS के साथ SMOOTH घुमा सकता हूँ। मुझे लगता है कि यह आश्चर्यजनक है कि आधुनिक ग्राफिक कार्ड क्या कर सकते हैं।
15:64 बजे user6420

जवाबों:


5

मुझे लगता है कि यह आमतौर पर स्वीकार किया जाता है कि वास्तविक समय वह सब कुछ है जो इंटरैक्टिव से ऊपर है। और इंटरएक्टिव को "इनपुट के प्रति प्रतिक्रिया करता है" के रूप में परिभाषित किया गया है, लेकिन इस तथ्य में चिकना नहीं है कि एनीमेशन गड़बड़ है।
तो वास्तविक समय आंदोलनों की गति पर निर्भर करेगा जिसे किसी को प्रतिनिधित्व करने की आवश्यकता है। 24 एफपीएस पर सिनेमा परियोजनाएं और कई मामलों के लिए पर्याप्त वास्तविक समय है।

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

यदि आपके पास एक उच्च अंत ग्राफिक्स कार्ड है जिसे आप वास्तविक समय में लगभग 1 मिलियन बहुभुज प्रदर्शित कर सकते हैं। हालाँकि, जैसा कि आपने कहा था, इंजन इतनी आसानी से समर्थन का दावा नहीं करेंगे क्योंकि वास्तविक विश्व दृश्य डेटा कई प्रदर्शन हॉग का कारण होगा जो बहुभुज की गिनती से संबंधित नहीं हैं।

आपके पास:

  • दर भरने
    • बनावट का नमूना
    • ROP आउटपुट
  • कॉल ड्रा करें
  • लक्ष्य स्विच प्रस्तुत करना
  • बफर अपडेट (एक समान या अन्य)
  • ओवरड्रॉ
  • shader जटिलता
  • पाइपलाइन जटिलता (किसी भी प्रतिक्रिया का इस्तेमाल किया? पुनरावृत्त ज्यामिति छायांकन? रोड़ा?)
  • सीपीयू (पिक्सेल रीडबैक?) के साथ सिंक पॉइंट
  • बहुभुज समृद्धि

एक विशेष ग्राफिक कार्ड के कमजोर और मजबूत बिंदुओं के आधार पर, इनमें से एक या एक अन्य बिंदु अड़चन होने वाला है। ऐसा नहीं है कि आप निश्चित रूप से कह सकते हैं "वहाँ, वह एक है"।

संपादित करें:

मैं इसे जोड़ना चाहता था, कोई एक विशिष्ट कार्ड के GFlops कल्पना आंकड़े का उपयोग नहीं कर सकता है और इसे रैखिक रूप से बहुभुज धक्का क्षमता के लिए रेखांकन कर सकता है। इस तथ्य के कारण कि बहुभुज उपचार को ग्राफिक्स पाइपलाइन में अनुक्रमिक अड़चन से गुजरना पड़ता है, जैसा कि यहां पर विस्तार से बताया गया है: https://fgiesen.wordpress.com/2011/07/03/a-trip-through-the-graphics -pipeline-2011-भाग -3 /
टीएलडीआर: वर्टीकल को प्राइमरी असेंबली से पहले एक छोटे कैश में फिट होना होता है जो मूल रूप से एक अनुक्रमिक चीज है (वर्टेक्स बफर ऑर्डर मायने रखता है)।

यदि आप GeForce 7800 (9yr पुराने?) की तुलना इस वर्ष 980 तक करते हैं, तो ऐसा लगता है कि प्रति सेकंड संचालन की संख्या एक हजार गुना बढ़ गई है। लेकिन आप शर्त लगा सकते हैं कि यह एक हजार गुना तेजी से पॉलीगोन को आगे बढ़ाने वाला नहीं है (जो कि इस साधारण मीट्रिक द्वारा लगभग 200 बिलियन सेकंड होगा)।

EDIT2:

प्रश्न का उत्तर देने के लिए "एक इंजन को अनुकूलित करने के लिए कोई क्या कर सकता है", जैसा कि "राज्य स्विच और अन्य ओवरहेड्स में बहुत अधिक दक्षता खोने के लिए नहीं"।
यह उतना ही पुराना सवाल है जितना इंजन। और इतिहास प्रगति के रूप में और अधिक जटिल होता जा रहा है।

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

एक पैकेट एक ड्रॉ कॉल के साथ प्रदान किया जा सकता है।
इसमें पहचानकर्ता शामिल हैं:

  • वर्टेक्स बफर
  • सूचकांक बफर
  • कैमरा (पास और रेंडर टारगेट देता है)
  • सामग्री आईडी (shader, बनावट और UBO देता है)
  • आँख से दूरी
  • दिख रहा है

इसलिए प्रत्येक फ़्रेम का पहला चरण एक ऑपरेटर के साथ सॉर्ट फ़ंक्शन का उपयोग करके पैकेट सूची पर एक त्वरित सॉर्ट चलाना है जो दृश्यता को प्राथमिकता देता है, फिर पास, फिर सामग्री, फिर ज्यामिति और अंत में दूरी।

नज़दीकी वस्तुओं को आकर्षित करने से प्रारंभिक जेड कुलिंग को अधिकतम करने की प्राथमिकता मिलती है।
पास निश्चित कदम हैं, इसलिए हमारे पास उनका सम्मान करने के अलावा कोई विकल्प नहीं है।
टार्गेट रेंडर करने के बाद स्टेट-स्विच में सामग्री सबसे महंगी चीज है।

यहां तक ​​कि विभिन्न सामग्रियों के बीच आईडी में, एक उप-आदेश को शादि परिवर्तन (सामग्री राज्य-स्विच संचालन के भीतर सबसे महंगा), और दूसरी बनावट बाध्यकारी परिवर्तनों की संख्या को कम करने के लिए एक न्यायिक मानदंड का उपयोग करके बनाया जा सकता है।

इस सभी आदेश के बाद, यदि आवश्यक समझा जाए , तो कोई मेगा टेक्सचरिंग, वर्चुअल टेक्सचरिंग और विशेषता-कम रेंडरिंग ( लिंक ) लागू कर सकता है।

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

और अंत में, आधुनिक हार्डवेयर के साथ, एक बहुत महंगा (विकसित करने के लिए), लेकिन संभावित रूप से अत्यधिक पुरस्कृत करने वाला कदम एपीआई को धातु / मेंटल / वल्कन / डीएक्स 12-शैली में बदलना और हाथ से रेंडरिंग कमांड तैयार करना है।

एक इंजन जो रेंडरिंग कमांड तैयार करता है वह एक बफर बनाता है जो "कमांड लिस्ट" रखता है जो प्रत्येक फ्रेम पर ओवरराइट किया जाता है।

आमतौर पर फ्रेम "बजट" की धारणा होती है, एक गेम खर्च कर सकता है। आपको 16 मिलीसेकंड में सब कुछ करने की ज़रूरत है, इसलिए आप स्पष्ट रूप से GPU समय "2 एमएस के लिए लाइटपर पास", "सामग्री के लिए 4 एमएस पास", "अप्रत्यक्ष प्रकाश के लिए 6 एमएस", "पोस्टप्रोसेस के लिए 4 एमएस" का विभाजन करें ...


1
एक मिलियन मुझे थोड़ा कम लगता है।
जूजा १४'१५

बस कितने MPoly / s कार्ड लेने में सक्षम है, और वह FPS है जिस पर वह 1 मिलियन जमा करेगा। मुझे अभी एक ATI4800HD पर एक इलाके रेंडरर के लिए एक प्रयोग याद आया। यदि आप यह सूची en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units लेते हैं तो वे एकीकृत आर्किटेक्चर के युग से शुरू होने वाले वर्टिक्स / जानकारी नहीं देते हैं। लेकिन 10 साल पुराना हार्डवेयर 1 मिलियन त्रिकोण के लिए लगभग 40 FPS का विज्ञापन करता है। + cf मेरे उत्तर में संपादित करें
v.oddou

@ v.oddou हाँ, लेकिन यह संख्या आप गतिशील दृश्यों के मामले में, ज्यामिति, या instancing के बैचिंग क्या करने की जरूरत के पास पाने के लिए, और है कि मैं क्या पूछ रहा हूँ है। कैसे हार्डवेयर क्या कर सकते हैं की ओर अपने आप को रास्ते का 2% नहीं टोंटी।
ललमेडेडडन

@ लल्मेड्डन आआह, मैं देखता हूं, यह वास्तव में एक सवाल है। मुझे देखने दो कि मैं इसके बारे में क्या कह सकता हूं। (EDIT2)
v.oddou

गहराई उत्तर में महान! मैंने उपयोगकर्ता के बजाय मॉडरेटर के रूप में कुछ मामूली संपादन किए हैं। यदि वे आपके इरादे से मेल नहीं खाते हैं, तो किसी भी / सभी को वापस करने के लिए स्वतंत्र महसूस करें।
ट्राइकोप्लाक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.