त्यांनी VRChat वर RISC-V एमुलेटरवर लिनक्स चालवण्यात यश मिळवले

बरेच दिवसांपूर्वी एका प्रयोगाचे निकाल जाहीर झाले च्या प्रक्षेपणावर आधारित संस्था 3D व्हर्च्युअल स्पेसमध्ये लिनक्स कर्नल ऑनलाइन मल्टीप्लेअर गेमचा.

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

प्रकल्पाबद्दल

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

एमुलेटर rv32imasu इंस्ट्रक्शन सेट आर्किटेक्चरसाठी पूर्ण समर्थन प्रदान करते, एसव्ही 32 मेमरी कंट्रोल युनिट आणि परिधीयांचा किमान संच (UART आणि टाइमर). लिनक्स कर्नल 5.13.5 आणि BusyBox बेसिक कमांड लाइन वातावरण लोड करण्यासाठी तयार क्षमता पुरेशी आहेत, ज्याद्वारे आपण VRChat आभासी जगातून थेट संवाद साधू शकता.

मार्च 2021 च्या सुमारास, मी VRChat मध्ये पूर्ण लिनक्स कर्नल चालवण्यास सक्षम एक एमुलेटर लिहिण्याचा निर्णय घेतला. त्या व्यासपीठाच्या अंतर्निहित मर्यादांमुळे, निवडलेले साधन एक शेडर बनले पाहिजे. आणि काही महिन्यांच्या कामानंतर मला आता HLSL पिक्सेल शेडरमध्ये जगातील पहिले RISC-V CPU / SoC एमुलेटर (मला माहित आहे) सादर करण्यात अभिमान वाटतो, जो 250 kHz पर्यंत चालण्यास सक्षम आहे (2080 Ti वर) आणि MMU सपोर्टसह Linux 5.13.5 बूट करा.

इम्युलेटर शेडरमध्ये त्याच्या स्वत: च्या डायनॅमिक टेक्सचर (युनिटी कस्टम रेंडर टेक्सचर) च्या स्वरूपात अंमलात आणला जातो, जो व्हीआरचॅटसाठी प्रदान केलेल्या उडॉन स्क्रिप्ट्सद्वारे पूरक असतो, ज्याचा वापर रनटाइमवर एमुलेटर नियंत्रित करण्यासाठी केला जातो.

मुख्य मेमरी सामग्री आणि इम्युलेटेड सिस्टमची प्रोसेसर स्थिती 2048 × 2048 पिक्सेलच्या आकारासह पोत म्हणून जतन केली जाते, ज्यामुळे इम्युलेटेड प्रोसेसर 250 केएचझेडवर चालते. लिनक्स व्यतिरिक्त, मायक्रोपायथन देखील एमुलेटरवर चालवता येते.

लिनक्स चालवण्यासाठी मला वाटले की आम्हाला किमान 32 एमआयबी मुख्य मेमरी (रॅम) ची गरज आहे, पण चला सुरक्षित राहू आणि 64 बनवू - कामगिरीचा फरक मोठा होणार नाही आणि पुरेसे व्हीआरएएम असावे.

सुरुवातीला, मुख्य कामगिरीची चिंता घड्याळाची गती होती. म्हणजेच एका फ्रेममध्ये किती CPU सायकल चालवता येतात.

डेटा स्टोरेज आयोजित करण्यासाठी वाचन आणि लेखनासाठी समर्थनासह कायम, आयताकृती क्षेत्राशी जोडलेली कॅमेरा ऑब्जेक्ट वापरण्याशी संबंधित युक्ती वापरली जाते शेडरद्वारे व्युत्पन्न आणि प्रस्तुत टेक्सचरचे आउटपुट शेडरच्या इनपुटवर निर्देशित करते. म्हणून, पिक्सेल शेडरच्या अंमलबजावणी दरम्यान लिहिलेले कोणतेही पिक्सेल पुढील फ्रेमवर प्रक्रिया करून वाचले जाऊ शकतात.

जेव्हा पिक्सेल शेडर्स लागू केले जातात, तेव्हा शेडरचे एक वेगळे उदाहरण टेक्सचरमधील प्रत्येक पिक्सेलसाठी समांतर काढले जाते.

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

या प्रकरणात, पेडर प्रीप्रोसेसर perlpp वापरला गेला होता त्याची अंमलबजावणी सुलभ करण्यासाठी शेडर कोडमध्ये मोठ्या संख्येने चेक समाविष्ट करणे आवश्यक आहे.

जे आहेत त्यांच्यासाठी चष्मा मध्ये स्वारस्य असे नमूद केले आहे की:

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

शेवटी आपल्याला त्याबद्दल अधिक जाणून घेण्यात स्वारस्य असल्यास, आपण तपशील तपासू शकता पुढील लिंकवर


आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.