सॉफ्टवेयर रेंडरिंग कैसे की जाती है?


15

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

उदाहरण के लिए: Voxeltron

Voxatron एक अखाड़ा शूटर है जो दुनिया में voxels (छोटे क्यूब्स, तरह) से बना है। खेल में सब कुछ मेनू और प्लेयर इन्वेंट्री सहित एक आभासी 128x128x64 voxel डिस्प्ले में प्रदर्शित होता है। यदि आप बारीकी से देखते हैं, तो आप कभी-कभी इन्वेंट्री (स्कोर / लाइफ / बारूद) को जमीन पर मौजूद कुछ वस्तुओं पर छाया डालते हुए देख सकते हैं।

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

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

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

विशेषताएं:

  • नरम छाया के साथ कस्टम सॉफ्टवेयर रेंडरिंग।
  • अंतर्निहित ध्वनि और संगीत सिंथेसाइज़र (ट्रेलर संगीत बनाने के लिए भी उपयोग किया जाता है)।
  • प्लेबैक और पोस्ट गेम रिकॉर्डिंग।

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

जवाबों:


11

मुझे लगता है कि आप पहले से ही कुछ बुनियादी रैखिक बीजगणित, प्रकार में शामिल होने जा रहे हैं: 3 डी अनुमानों, कैमरा सेटअप, दुनिया की स्थिति में कोने बदलने, आदि ... अगर आप नहीं करते हैं, तो सीखने के लिए बहुत सारे महान स्थान हैं। यहाँ दो हैं जो मुझे पसंद हैं:

खेल इंजन वास्तुकला

  • बुनियादी रेखीय बीजगणित का संक्षिप्त कवरेज, लेकिन वह सब कुछ कवर करता है जो आपको जानना आवश्यक है। किताब कई अन्य कारणों से भी होने योग्य है।

वास्तविक समय प्रतिपादन

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

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

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

यह इन लेखों में अधिक विवरण में शामिल है:

ट्यूटोरियल - सॉफ्टवेयर आधारित प्रतिपादन का परिचय: त्रिभुज रेखांकन

सॉफ्टवेयर रेंडरिंग स्कूल: भाग I


और सिर्फ मनोरंजन के लिए, निम्नलिखित लेख देखें:

क्वेक 2 सोर्स कोड रिव्यू 3/4 (सॉफ्टवेयर रेंडरर)


आपका स्वागत है:] (आप इस प्रक्रिया के अधिक विस्तृत अवलोकन के लिए यहाँ एक नज़र डालना चाहते हैं: en.wikipedia.org/wiki/Rasterisation )
zfedoran

वहाँ कुछ अच्छे लिंक!
जोनाथन कोनेल

5

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

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

दूसरे भाग के लिए बहुत सारे विकल्प हैं। वे आपके ओएस और टूलचैन विकल्पों पर बहुत अधिक निर्भर करते हैं। यदि आप Windows पर C या C ++ का उपयोग कर रहे हैं, तो आप बस पिक्सल को सीधे जीडीआई बिटमैप के लिए प्लॉट कर सकते हैं ( SetPixelयह सरल, लेकिन दर्द रहित, बेकार धीमी गति से है - CreateDIBSectionआपको कच्चे बाइट्स का एक हिस्सा देता है जो आप बहुत तेज दर पर हेरफेर कर सकते हैं)।

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

यदि आप अधिक जानना चाहते हैं, तो आपको संभवतः अधिक विशिष्ट प्रश्न बनाने चाहिए। मैं या अन्य लोग उन्हें जवाब देने में प्रसन्न होंगे।


पुस्तक के लिए: "बहुत अच्छा" कितना अच्छा है? $ 84 नकद का एक उचित बिट है :)
जोनाथन कॉनेल

यह वह है जिसे मैं सबसे अधिक सलाह देता हूं। सबसे सस्ता विकल्प के लिए आप ट्रांसफॉर्मेशन पाइपलाइन पर डायरेक्ट 3 डी प्रलेखन का उल्लेख कर सकते हैं। यद्यपि यह डी 3 डी विशिष्ट है, लेकिन इसका 95% सामान्य सिद्धांत पर लागू होता है। आप OpenGL Red Book की ऑनलाइन प्रतियां भी देख सकते हैं। वे पुराने हैं, लेकिन सिद्धांत (फिर से) अभी भी लागू होता है।

0

ठीक है, मैं इस सवाल को बहुत मूल बातें से संपर्क करने जा रहा हूं; इससे परे कुछ भी एक सरल क्यूए के लिए व्यापक करने का तरीका है; आपको इस विषय पर एक पुस्तक खरीदने की आवश्यकता है।

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

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

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

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