वे VRChat पर RISC-V एमुलेटर पर Linux चलाने में कामयाब रहे

काफी दिनों बाद एक प्रयोग के परिणाम जारी किए गए के शुभारंभ के आधार पर संगठन 3डी वर्चुअल स्पेस के भीतर लिनक्स कर्नेल एक ऑनलाइन मल्टीप्लेयर गेम की।

यह प्रयोग यह VRChat पर किया गया था जो 3D मॉडल को अपने स्वयं के शेडर के साथ लोड करने की अनुमति देता है. कल्पित विचार को लागू करने के लिए, RISC-V आर्किटेक्चर पर आधारित एक एमुलेटर बनाया गया था जिसे पिक्सेल शेडर के रूप में GPU की तरफ क्रियान्वित किया जाता है।

परियोजना के बारे में

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

एमुलेटर rv32imasu निर्देश सेट आर्किटेक्चर के लिए पूर्ण समर्थन प्रदान करता है, SV32 मेमोरी कंट्रोल यूनिट और बाह्य उपकरणों का एक न्यूनतम सेट (यूएआरटी और टाइमर)। लिनक्स कर्नेल 5.13.5 और बिजीबॉक्स बेसिक कमांड लाइन वातावरण को लोड करने के लिए तैयार क्षमताएं पर्याप्त हैं, जिसके साथ आप सीधे VRChat आभासी दुनिया से बातचीत कर सकते हैं।

मार्च 2021 के आसपास, मैंने VRChat में एक पूर्ण लिनक्स कर्नेल चलाने में सक्षम एक एमुलेटर लिखने का फैसला किया। उस प्लेटफ़ॉर्म की अंतर्निहित सीमाओं के कारण, चुने हुए टूल को एक शेडर होना था। और कुछ महीनों के काम के बाद अब मुझे HLSL पिक्सेल शेडर में दुनिया का पहला RISC-V CPU / SoC एमुलेटर (जो मुझे पता है) पेश करते हुए गर्व हो रहा है, जो 250 kHz (2080 Ti पर) तक चलने में सक्षम है और एमएमयू समर्थन के साथ लिनक्स 5.13.5 बूट करें।

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

एमुलेटेड सिस्टम की मुख्य मेमोरी सामग्री और प्रोसेसर स्थिति को 2048 × 2048 पिक्सल के आकार के साथ एक बनावट के रूप में सहेजा जाता है, जिससे 250 kHz पर एमुलेटेड प्रोसेसर का संचालन होता है। Linux के अलावा, Micropython को एमुलेटर पर भी चलाया जा सकता है।

लिनक्स चलाने के लिए मैंने सोचा था कि हमें कम से कम 32 MiB मुख्य मेमोरी (RAM) की आवश्यकता होगी, लेकिन आइए सुरक्षित रहें और 64 बनाएं - प्रदर्शन अंतर बड़ा नहीं होगा और पर्याप्त VRAM होना चाहिए।

सबसे पहले, मुख्य प्रदर्शन चिंता घड़ी की गति थी। यानी एक फ्रेम में कितनी सीपीयू साइकिल एक्जीक्यूट की जा सकती है।

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

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

यह सुविधा कार्यान्वयन को महत्वपूर्ण रूप से जटिल बनाती है और इसके लिए संपूर्ण एमुलेटेड सिस्टम की स्थिति के अलग समन्वय की आवश्यकता होती है और संसाधित पिक्सेल की स्थिति की सीपीयू या रैम की स्थिति की तुलना इसमें एन्कोडेड इम्यूलेटेड सिस्टम की होती है (प्रत्येक पिक्सेल 128 बिट्स को एनकोड कर सकता है) जानकारी)।

इस मामले में, शेडर कोड को बड़ी संख्या में चेक शामिल करने की आवश्यकता होती है, जिसके कार्यान्वयन को सरल बनाने के लिए पर्ल प्रीप्रोसेसर perlpp का उपयोग किया गया था।

जो हैं उनके लिए विशिष्टताओं में रुचि यह उल्लेख किया गया है कि:

  • कोड GitHub पर है
  • 64 MiB RAM माइनस CPU स्थिति 2048 × 2048 पिक्सेल (128 bpp) पूर्णांक प्रारूप बनावट में संग्रहीत है
  • बफर स्वैपिंग के साथ एकता कस्टम रेंडर बनावट फ्रेम के बीच एन्कोडिंग / डिकोडिंग स्थिति की अनुमति देता है
  • गणना के लिए एक पिक्सेल शेडर का उपयोग अनुकरण के लिए किया जाता है और यूएवी शेडर VRChat द्वारा समर्थित नहीं हैं

अंत में यदि आप इसके बारे में अधिक जानने में रुचि रखते हैं, आप विवरण की जांच कर सकते हैं निम्नलिखित लिंक में


लेख की सामग्री हमारे सिद्धांतों का पालन करती है संपादकीय नैतिकता। त्रुटि की रिपोर्ट करने के लिए क्लिक करें यहां.

पहली टिप्पणी करने के लिए

अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।