RISC-V emulaator pikseli üliobjekti kujul, mis võimaldas käivitada Linuxi VRChat'is

Avaldatud on katsed Linuxi käivitamise korraldamiseks 3D-virtuaalsetes ruumides mitme kasutaja online-mängus VRChat, mis võimaldab 3D-mudeleid koos oma shader'itega. Teostatud idee jaoks loodi RISC-V arhitektuuri emulaator, mis töötab GPU poolel piksliliste (fragmentide) shader'itena (VRChat ei toeta arvutusshader'ite ja UAV-de kasutamist). Emulaatori kood on avaldatud MIT litsentsi alusel.

Emulaatori aluseks on C keeles teostatud implementatsioon, mille loomisel on kasutatud minimalistliku emulaatori riscv-rust arengut, mis on arendatud Rust keeles. Valmistatud C-kood tõlgitakse HLSL keeles pikslisse shader'isse, mis sobib VRChat'i üles laadimiseks. Emulaator pakub täielikku toetust rv32imasu käsu komplektile, SV32 mälu juhtplokile ja minimaalsele hulkale periferiaseadmeid (UART ja taimer). Valmistatud võimalustega piisab Linux 5.13.5 tuuma ja BusyBox'i põhikäskluste keskkonna üles laadimisest, millega saab otse virtuaalses maailma VRChat suhelda.

RISC-V emulaator pikseli üliobjekti kujul, mis võimaldas käivitada Linuxi VRChat'is
RISC-V emulaator pikseli üliobjekti kujul, mis võimaldas käivitada Linuxi VRChat'is

Emulaator on implementeeritud shaderis oma dünaamilise tekstuuri (Unity Custom Render Texture) kujul, täiustatud VRChat'i jaoks mõeldud Udon skriptidega, mis haldavad emulaatorit selle töötamise ajal. Emuleeritava süsteemi operatiivmälu sisu ja protsessori olek salvestatakse tekstuuri kujul, mille suurus on 2048×2048 pikslit. Emuleeritav protsessor töötab sagedusel 250 kHz. Lisaks Linuxile saab emulaatoris käivitada ka Micropython'i.

RISC-V emulaator pikseli üliobjekti kujul, mis võimaldas käivitada Linuxi VRChat'is

Andmete püsivaks salvestamiseks, mis toetab lugemist ja kirjutamist, kasutatakse trikki, mis on seotud objekti Camera kasutamisega, mis on seotud shaderist genereeritud ristküliku kujuga, ja renderdatud tekstuuri väljundi suunamisega shaderi sisendisse. Nii on iga piksel, mis kirjutatakse pikslisherderi töötamise käigus, loetav järgmise kaadri töötlemisel.

Pikseli šejderite kasutamisel käivitub iga tekstuuri pikseli jaoks paralleelselt eraldi šejderi экземпляр. See omadus muudab elluviimise oluliselt keerulisemaks ja nõuab kogu emuleeritud süsteemi oleku eraldi koordineerimist ning töödeldava pikseli asukoha sobitamist emuleeritud süsteemi töödeldud CPU olekute või RAM sisu kodeeritud seisundiga (iga piksel võib kodeerida 128 bitti teavet). Samuti nõuab šejderi kood tohutut arvu kontrollimisi, mille elluviimise lihtsustamiseks on kaasatud perl-preprotsessor perlpp.

Vaata videot


Allikas: opennet.ru
Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster