3 डी गेम इतने कुशल कैसे हैं? [बन्द है]


188

कुछ ऐसा है जो मुझे कभी समझ नहीं आया। GTA IV की तरह एक बड़ा बड़ा पीसी गेम मेरे CPU का 50% कैसे उपयोग कर सकता है और 60fps पर चल सकता है जबकि घूर्णन चायदानी @ 60fps का डीएक्स डेमो एक 30% का उपयोग करता है?


124
मुझे नहीं लगता कि इस प्रश्न में क्या गलत है - यह पूरी तरह से स्वाभाविक है कि अन्य डेवलपर्स ने कुछ चीजों को कैसे पूरा किया है। हमें इस तरह की जिज्ञासा को प्रोत्साहित करना चाहिए, न कि इसे करीबी वोटों से दंडित करना।
जॉन फेमिनाला

2
@ user146780: जिसने सवाल पूछा ... मैं जिस सर्वश्रेष्ठ सीजीआई में काम कर रहा हूं वहां सबसे अच्छे प्रोग्रामर मिले हैं। SGI के गुरुओं, Adobe Photoshop आदि को पार्लेलाइज़ करने का काम करने वाले लोग, यहाँ के लोगों को एहसास नहीं है कि आधुनिक गेम लिखना कितना जटिल है और न ही ये कोडर्स कितने कुशल हैं। यदि आप एक विनम्र अनुभव चाहते हैं, तो क्रायोटेक के जर्मनों ने क्राइसिस इंजन के साथ क्या किया। Youtube पर वीडियो हैं। आप बस इस पर विश्वास नहीं करेंगे। यह "अष्टक का उपयोग करना" नहीं है। आमतौर पर ये प्रोग्रामर औसत प्रोग्रामर की तुलना में बहुत अधिक कुशल होते हैं। और आप शर्त लगा सकते हैं कि GT4 कोडर बहुत अच्छे हैं।
SyntaxT3rr0r

2
आप 60fps पर gta4 चला रहे हैं !? गिनीकृमि! gta4 एक POS है जो काफी खराब तरीके से चलता है, मैंने सुना है कि फोर्स अनलेशेड भी करता है। मैं कहूंगा कि यूफोरिया अपराधी है। ईमानदारी से, "CPU उपयोग" तुलना करने के लिए एक बहुत ही खराब तरीका है, बस फ्रेम दर को अनपैक करें और देखें कि कौन सा सबसे तेज चलता है, इसे करने का उचित तरीका। यह भी याद रखें, यह "जटिल खेल", जबकि यह बहुत सारे सामान प्रस्तुत कर सकता है, अभी भी केवल एक स्क्रीन के लायक सामान है, और अगर यह सही क्रम में प्रदान किया गया है, तो आप पिक्सेल की समान मात्रा के साथ समाप्त हो सकते हैं "सरल" डेमो, और पिक्सल का काम वास्तव में वही है जो इसे मारता है।
मैट

8
आपको एक प्रोफाइलर की आवश्यकता है जो आपको दिखाता है कि GPU (ग्राफिक्स प्रोसेसिंग यूनिट) का कितना उपयोग किया जाता है। मुझे विश्वास है कि GTA IV आपको ~ 99% और डेमो 3% दिखाता है।
एसकर

अनुभव से, खेल के लगभग 10% प्रोग्रामर जिनके साथ मैंने काम किया है, वे किसी भी अच्छे थे, बाकी औसतन औसत थे। कुछ बिलकुल अक्षम थे।
स्किज़

जवाबों:


69

सामान्य तौर पर, यह इसलिए है क्योंकि

  1. खेल वे क्या प्रस्तुत करना है की जरूरत के बारे में इष्टतम हैं, और
  2. वे आपके हार्डवेयर का विशेष लाभ उठाते हैं।

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

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

आपके प्रश्न का दूसरा भाग यही है कि डेमो इतना CPU उपयोग क्यों करता है:

... जबकि एक घूर्णन Teapot @ 60fps का डीएक्स डेमो 30% का उपयोग करता है?

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

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


3
एक DX डेमो आपके हार्डवेयर का भी उपयोग करता है। तो, क्या 'विशेष' है?
Tur1ng

3
लेकिन एक डेमो इसके बारे में इष्टतम होने की संभावना नहीं है।
µBio

2
@ tur1ng, चायदानी डेमो, उदाहरण के लिए, प्रतिबिंब , छाया और अन्य प्रभाव सक्षम हो सकते हैं ।
निक डैंडुलाकिस

2
चायदानी में GTA4 दृश्य की तुलना में अधिक बहुभुज हो सकते हैं। तथ्य यह है कि ग्राफिक रेंडरिंग में वर्तमान अड़चन अधिक बनावट प्रभाव है जैसे बम्प मैपिंग व्युत्पन्न तकनीक में विवरण और अन्य पोस्ट रेंडरिंग प्रभाव जोड़ने के लिए।
Klaim

5
बनावट - चायदानी बड़ी संख्या में व्यक्तिगत त्रिकोण से बनाई जा रही है जो सभी मानदंडों और प्रकाश इंटरैक्शन के साथ है। खेल में एक पागल जटिल 3 डी दुनिया जैसा दिखता है अक्सर एक विस्तृत चित्र के साथ कवर किए गए काफी सरल बड़े ब्लॉक होते हैं। 3 डी आकार पर खींची गई स्थिर 2d छवि में '3 डी' का एक बहुत चालाक छाया और परिप्रेक्ष्य कलात्मक प्रभाव है
मार्टिन बेकेट

96

धैर्य, तकनीकी कौशल और धीरज।

पहला बिंदु यह है कि डीएक्स डेमो मुख्य रूप से एक शिक्षण सहायता है इसलिए यह स्पष्टता के लिए किया जाता है कि निष्पादन की गति नहीं।

यह एक बहुत बड़ा विषय है, लेकिन खेल विकास मुख्य रूप से आपके डेटा और आपके निष्पादन पथ को लगभग पैथोलॉजिकल डिग्री समझने के बारे में है।

  1. आपका कोड दो चीजों - आपके डेटा और आपके लक्ष्य हार्डवेयर के आसपास डिज़ाइन किया गया है।
  2. सबसे तेज़ कोड वह कोड है जो कभी भी निष्पादित नहीं होता है - अपने डेटा को बैचों में क्रमबद्ध करें और केवल उस डेटा पर महंगे संचालन करें जो आपको करने की आवश्यकता है
  3. आप अपने डेटा को कैसे संग्रहीत करते हैं, यह महत्वपूर्ण है - सन्निहित पहुंच के लिए लक्ष्य यह आपको उच्च गति पर बैच प्रक्रिया की अनुमति देता है।
  4. सब कुछ आप संभवतः कर सकते हैं
  5. आधुनिक सीपीयू तेज हैं, आधुनिक रैम बहुत धीमी है। कैश मिस घातक हैं।
  6. जितना हो सके GPU को पुश करें - इसमें तेज स्थानीय मेमोरी है ताकि डेटा के माध्यम से विस्फोट हो सके लेकिन आपको अपने डेटा को सही तरीके से व्यवस्थित करके इसकी सहायता करने की आवश्यकता है।
  7. बहुत सारे रेंडरस्ट्रेट स्विच (फिर से समान वर्टेक्स डेटा को एक साथ बैचने) करने से बचें क्योंकि यह GPU को स्टाल करता है
  8. अपने बनावट पर ज़ोर दें और सुनिश्चित करें कि वे दो की शक्तियाँ हैं - यह GPU पर बनावट कैश प्रदर्शन को बेहतर बनाता है।
  9. जितना हो सके विवरण के स्तरों का उपयोग करें - 3 डी मॉडल के निम्न / मध्यम / उच्च संस्करण और कैमरा प्लेयर से दूरी के आधार पर स्विच करें - स्क्रीन पर केवल 5 पिक्सेल होने पर उच्च-रिज़ॉल्यूशन संस्करण का प्रतिपादन नहीं।

39

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

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

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

ये 'अनुकूलन' बहुत बड़े हैं - आप एक एल्गोरिथ्म को कुशलतापूर्वक कार्यान्वित कर सकते हैं और इसे 10 गुना तेज गति से चला सकते हैं, लेकिन एक समान परिणाम ("धोखा") पैदा करने वाले स्मार्ट एल्गोरिदम को चुनने से आप O (N ^ 4) से O () तक जा सकते हैं लॉग (एन))।

वास्तविक कार्यान्वयन का अनुकूलन वही है जो खेलों को और भी अधिक कुशल बनाता है, लेकिन यह केवल एक रैखिक अनुकूलन है।


30

Eeeeek!

मुझे पता है कि यह सवाल पुराना है, लेकिन इसका रोमांचक यह है कि किसी ने भी वीसिन्यू का उल्लेख नहीं किया है ????

आपने 60fps पर गेम के CPU उपयोग की तुलना 60fps पर चायदानी डेमो के CPU उपयोग से की।

क्या यह स्पष्ट नहीं है, कि दोनों 60fps पर बिल्कुल (कम या ज्यादा) चले? कि जवाब की ओर जाता है ...

दोनों ऐप्स vsync सक्षम के साथ चलते हैं! इसका मतलब है (डंबड-डाउन) कि रेंडरिंग फ्रामर्ट आपके मॉनिटर के "वर्टिकल ब्लो इंटरवल" पर लॉक हो जाता है। ग्राफिक्स हार्डवेयर (और / या ड्राइवर) केवल अधिकतम पर प्रस्तुत करेगा। 60fps। 60fps = 60 हर्ट्ज (प्रति हर्ट्ज = प्रति सेकंड) ताज़ा दर। तो आप शायद एक पुराने, टिमटिमाते CRT या एक सामान्य एलसीडी डिस्प्ले का उपयोग करते हैं। 100Hz पर चलने वाले CRT पर आपको संभवतः 100Hz तक के फ्रैमरेट्स दिखाई देंगे। वीएसक्यूएन भी एलसीडी डिस्प्ले के समान तरीके से लागू होता है (उनके पास आमतौर पर 60Hz की ताज़ा दर होती है)।

तो, चायदानी डेमो वास्तव में बहुत अधिक कुशल चला सकते हैं! यदि यह 30% CPU समय (GTA IV के लिए 50% CPU समय की तुलना में) का उपयोग करता है, तो यह संभवतः प्रत्येक फ्रेम में कम सीपीयू समय का उपयोग करता है, और बस अगले ऊर्ध्वाधर रिक्त अंतराल के लिए लंबे समय तक इंतजार करता है। दोनों ऐप की तुलना करने के लिए, आपको vsync को अक्षम करना चाहिए और फिर से मापना चाहिए (आप दोनों ऐप के लिए बहुत अधिक एफपीएस मापेंगे)।

कभी-कभी vsync को अक्षम करने के लिए इसका ठीक है (अधिकांश गेम इसकी सेटिंग्स में एक विकल्प है)। जब आप vsync को अक्षम कर दिया जाता है, तो कभी-कभी आपको "आंसू आंसू" दिखाई देंगे।

आप इसका विवरण पा सकते हैं और इसका उपयोग विकिपीडिया पर क्यों किया जाता है: http://en.wikipedia.org/wiki/Vsync


मैं सहमत हूं, बेहतर तुलना पाने के लिए आपको vsync को अक्षम करना चाहिए। हालाँकि, समस्या की जड़ अभी भी खड़ा है। चायदानी के लिए 30% बनाम गेम के लिए 50% सीपीयू का उपयोग एक छोटा अंतर है जो आम तौर पर उम्मीद कर सकता है। लेकिन मुझे याद है कि शुरुआती दिनों में जब पर्यावरण की मैपिंग सिर्फ लोकप्रिय होने लगी थी और उस समय का कूल एनवीडिया डेमो एक पर्यावरण से जुड़ा हुआ चायदानी था। वे डेमो आमतौर पर दिन में 60 एफपीएस को भी नहीं मारते थे। मुझे लगता है कि मेरी बात यह है कि ये चायदानी डेमो अक्सर एक नए दृश्य प्रभाव की सीमाओं को धक्का देते हैं।
स्टीव वॉर्थम

25

जब कि यहाँ कई उत्तर इस बात के उत्कृष्ट संकेत प्रदान करते हैं कि मैं इसके बजाय क्यों के सरल प्रश्न का उत्तर दूंगा

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

इन प्रोग्रामर्स की क्षमताओं (व्यवसाय प्रेमी के साथ मिलकर) ने उन्हें समृद्ध बनाया है।

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

बस उस व्यक्ति को रखो जिसने चायदानी डेमो लिखा है, निम्नलिखित मुद्दों में से एक या अधिक था:

  • कम समय
  • कम संसाधन
  • कम इनाम प्रोत्साहन
  • कम आंतरिक और बाहरी प्रतियोगिता
  • कम लक्ष्य
  • कम प्रतिभा

आखिरी कठोर 2 लग सकता है लेकिन स्पष्ट रूप से कुछ ऐसे हैं जो दूसरों की तुलना में बेहतर हैं, घंटी के घुमावों में कभी-कभी अत्यधिक छोर होते हैं और वे उस कौशल के साथ किए गए चरम छोरों की ओर आकर्षित होते हैं।

कम लक्ष्य एक वास्तव में मुख्य कारण होने की संभावना है। चायदानी डेमो का लक्ष्य सिर्फ एक डेमो था। लेकिन प्रोग्रामर कौशल 3 का डेमो नहीं । यह इस मामले में DX प्रतिपादन के एक (बड़े) ओएस के एक छोटे पहलू का एक डेमो होगा।

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


  1. उस मामले में पीसी हार्डवेयर पर चिकनी स्क्रॉलिंग
  2. मुझ से ज्यादा शायद इसलिए हम इस बारे में स्पष्ट हैं
  3. कड़ाई से बोलते हुए यह उसके / उसके प्रबंधक के लिए भी एक डेमो होता, लेकिन फिर से यहां ड्राइव समय और / या दृश्य गुणवत्ता होगी।

17

कुछ कारणों की वजह से

  • 3 डी गेम इंजन अत्यधिक अनुकूलित हैं
  • अधिकांश काम आपके ग्राफिक्स एडेप्टर द्वारा किया जाता है
  • 50% एचएम, मुझे लगता है कि आपके पास एक दोहरे कोर है और केवल एक कोर का उपयोग किया जाता है ;-)

EDIT: कुछ नंबर देने के लिए

2.8 Ghz एथलॉन -64 NV-6800 GPU के साथ। परिणाम हैं:

  • CPU: 72.78 Mflops
  • GPU: 2440.32 Mflops

@stacker: क्या आप यह अनुमान लगा रहे हैं कि जीपीयू द्वारा नहीं किए जाने वाले टॉप-नोच 3 डी गेम्स में होने वाली सभी गणना वास्तव में मोनो-थ्रेडेड हैं और, किसी न किसी तरह से, सीपीयू का 100% भरें? मतलब है कि खेल perfs एक गैर-जीपीयू कोर के लिए बाध्य होगा? मुझे विश्वास है कि बहुत मुश्किल है।
SyntaxT3rr0r

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

8

कभी-कभी ऐसा प्रतीत होता है कि एक दृश्य अधिक हो सकता है। उदाहरण के लिए, हजारों चक्कर, पर्यावरण मानचित्रण, टक्कर मानचित्रण, और अन्य जटिल पिक्सेल शेड्स के साथ एक घूर्णन चायदानी जो एक साथ पूरी प्रसंस्करण के लिए एक साथ प्रदान की जाती है। कई बार ये चायदानी डेमो किसी विशेष प्रभाव को दिखाने के लिए होते हैं। जब हमेशा पूर्ण प्रदर्शन लक्ष्य नहीं होता है तो वे हमेशा GPU का सर्वोत्तम उपयोग नहीं कर सकते हैं।

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


4
  1. दृश्य प्रबंधन। केडी-ट्री, फ्रस्ट्रम कलिंग, बीएसपीएस, हिरार्चिकल बाउंडिंग बॉक्स, आंशिक दृश्यता सेट।
  2. LOD। दूर की वस्तुओं के विकल्प के लिए निचले विस्तार संस्करणों को स्विच करना।
  3. Impostors। LOD की तरह लेकिन एक वस्तु भी नहीं, सिर्फ एक तस्वीर या 'बिलबोर्ड'।
  4. SIMD।
  5. कस्टम स्मृति प्रबंधन। संरेखित स्मृति, कम विखंडन।
  6. कस्टम डेटा संरचनाएं (अर्थात कोई एसटीएल, अपेक्षाकृत न्यूनतम अस्थायी)।
  7. स्थानों में विधानसभा, मुख्य रूप से SIMD के लिए।

4

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

अब विंडोज सीपीयू उपयोग काउंटर केवल यह देखता है कि प्रत्येक प्रक्रिया के भीतर कितना सीपीयू समय खर्च किया जाता है, लेकिन यह नहीं कि यह सीपीयू समय कैसे उपयोग किया जाता है। जोड़ने का प्रयास करें

Sleep(0);

रेंडरिंग फंक्शन से लौटने के बाद, और तुलना करें।


मेरे पास एक डीएक्स चायदानी डेमो था जो हमेशा मेरे सीपीयू के 25% का उपयोग करता था। यह पता चला है क्योंकि मैं एक क्वाड कोर पर था और 60 एफपीएस पर गेम लूप को लॉक करने के लिए, मेरे पास एक "क्या हम अभी तक" लूप हैं जो लगातार समय की जांच करते थे। मैंने इसे सोने के लिए बदल दिया (timeToNextFrame) और सीपीयू उपयोग 0. के पास गिरा दिया
जोनाथन पियर्स

3

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


1

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

सीपीयू को साधारण सामान - जैसे एआई और अन्य गेम लॉजिक के साथ छोड़ दिया जाता है।


1

GTA IV की तरह एक बड़ा बड़ा पीसी गेम मेरे CPU का 50% कैसे उपयोग कर सकता है और 60fps पर चल सकता है जबकि घूर्णन चायदानी @ 60fps का डीएक्स डेमो एक 30% का उपयोग करता है?

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

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


1

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

शायद आप इस मॉनिटर की तरह कुछ का उपयोग करने के लिए जाँच कर सकते हैं:

http://downloads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-download-2185.html

इसके अलावा फ्रैमरेट पर विचार करने के लिए कुछ है, हो सकता है कि चायदानी का नमूना पूरी गति से चल रहा हो (शायद 1000fps) और अधिकांश गेम मॉनिटर की ताज़ा आवृत्ति (लगभग 60fps) तक सीमित हैं।


1

Vsync पर जवाब को देखो; यही कारण है कि वे एक ही फ्रेम दर पर चल रहे हैं।

दूसरे, CPU एक खेल में अग्रणी है। एक सरल स्पष्टीकरण यह है कि मुख्य गेम लूप सिर्फ एक अनंत लूप है:

while(1) { 
  update();
  render();
}

यहां तक ​​कि अगर आपका खेल (या इस मामले में, चायदानी) बहुत कुछ नहीं कर रहा है तो भी आप अपने लूप में सीपीयू खा रहे हैं।

जीटीए में 50% सीपीयू "अधिक उत्पादक" है फिर डेमो में 30%, क्योंकि संभावना से अधिक यह बिल्कुल भी नहीं कर रहा है; लेकिन GTA विवरणों को अपडेट कर रहा है। यहां तक ​​कि डेमो में "स्लीप (10)" जोड़ने से संभवतः एक टन तक सीपीयू गिर जाएगा।

अंत में GPU के उपयोग को देखें। डेमो शायद एक आधुनिक वीडियो कार्ड पर <1% ले रहा है जबकि जीटीए शायद गेम खेलने के दौरान बहुमत ले जाएगा।

संक्षेप में, आपके बेंचमार्क और माप सटीक नहीं हैं।


1

डीएक्स चायदानी डेमो उपयोगी काम करने वाले सीपीयू के 30% का उपयोग नहीं कर रहा है। यह व्यस्त-प्रतीक्षा है क्योंकि इसके पास करने के लिए और कुछ नहीं है।


0

मैं अवास्तविक श्रृंखला के बारे में जो कुछ भी जानता हूं उससे कुछ सम्मेलनों को एनकैप्सुलेशन की तरह तोड़ा जाता है। कोड को गेम के आधार पर बाईटेकोड या सीधे मशीन कोड में संकलित किया जाता है। इसके अलावा, वस्तुओं को एक जाल के रूप में प्रदान किया जाता है और पैक किया जाता है और बनावट, प्रकाश और छाया जैसी चीजों को पहले से निर्धारित किया जाता है जबकि शुद्ध 3 डी एनीमेशन के लिए इस वास्तविक समय की आवश्यकता होती है। जब खेल वास्तव में चल रहा होता है तो कुछ अनुकूलन भी होते हैं जैसे किसी वस्तु के केवल दिखाई देने वाले भागों को प्रस्तुत करना और केवल ऊपर जाने पर बनावट का विस्तार प्रदर्शित करना। अंत में, यह संभावना है कि वीडियो गेम एक निश्चित समय पर एक मंच से सर्वश्रेष्ठ प्राप्त करने के लिए डिज़ाइन किए गए हैं (उदा: Intelx86 MMX / SSE, DirectX, ...)।


0

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

  • सीपीयू (घड़ी और कैश)
  • मेमोरी (आवृत्ति और विलंबता)
  • हार्ड ड्राइव (गति और समय की तलाश में)
  • GPU (# कोर, घड़ी और इसकी मेमोरी / कैश)
  • इंटरफ़ेस: Sata नियंत्रक, PCI संशोधन आदि।

लेकिन , उस समय के शीर्ष पर, वर्तमान आधुनिक कंप्यूटरों के साथ, आप कभी भी एक वास्तविक 1080p वीडियो नहीं बना पाएंगे >> 30ftp (64 बिट्स में एक एकल 1080p छवि 15 000 Ko / 14.9 MB लेगी)। इसका कारण नमूना / परिशुद्धता के कारण है। एक वीडियो गेम कभी भी पिक्सेल, चित्र, डेटा, आदि ... के लिए एक दोहरी परिशुद्धता (64 बिट्स) का उपयोग नहीं करेगा ... बल्कि एक कम कस्टम परिशुद्धता (~ 4-8 बिट्स) का उपयोग करें और कभी-कभी कम परिशुद्धता उचित कम्प्यूटेशन की अनुमति देने के लिए प्रक्षेप तकनीकों के साथ rescaled होता है। समय।

अन्य तकनीकों के साथ-साथ डेटा को क्लिप करना भी है (दोनों OpenGL मानक और सॉफ्टवेयर कार्यान्वयन के साथ), डेटा संपीड़न, आदि यह भी ध्यान रखें, कि वर्तमान GPUs हार्डवेयर क्षमता की अवधि में वर्तमान CPU की तुलना में 300 गुना तेज हो सकते हैं। हालांकि, एक अच्छे प्रोग्रामर को 10-20x का कारक मिल सकता है, जब तक कि आपकी समस्या पूरी तरह से अनुकूलित न हो और पूरी तरह से समानांतर (विशेष रूप से कार्य समानांतर) हो।

अनुभव से, मैं आपको बता सकता हूं कि अनुकूलन एक घातीय वक्र की तरह है। इष्टतम प्रदर्शन तक पहुंचने के लिए, आवश्यक समय अविश्वसनीय रूप से महत्वपूर्ण हो सकता है।

इसलिए चायदानी पर वापस जाने के लिए, आपको यह देखना चाहिए कि ज्यामिति / बनावट और सबसे महत्वपूर्ण, विवरण (परिशुद्धता, नमूनाकरण, आदि) में ज्यामिति का प्रतिनिधित्व, नमूना और जीटीए 5 में क्या सटीकता के साथ देखा जाता है।

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