E RISC-V Emulator a Form vun engem Pixel Shader deen Iech erlaabt Linux an VRChat ze lafen

D'Resultater vun engem Experiment iwwer d'Organisatioun vum Start vu Linux am virtuellen 3D Raum vum Multiplayer Online Spill VRChat, wat et erlaabt 3D Modeller mat hiren eegene Shaders ze lueden, goufen publizéiert. Fir déi konzipéiert Iddi ëmzesetzen, gouf en Emulator vun der RISC-V Architektur erstallt, op der GPU Säit a Form vun engem Pixel (Fragment) Shader ausgefouert (VRChat ënnerstëtzt net computational Shaders an UAV). Den Emulatorcode gëtt ënner der MIT Lizenz publizéiert.

Den Emulator baséiert op enger Implementatioun an der C Sprooch, d'Schafung vun deem, am Tour, d'Entwécklunge vum minimalistesche Emulator riscv-rust benotzt huet, entwéckelt an der Rust Sprooch. De preparéierten C Code gëtt an e Pixel Shader an HLSL iwwersat, gëeegent fir an VRChat ze lueden. Den Emulator bitt voll Ënnerstëtzung fir d'rv32imasu Instruktiounsset Architektur, d'SV32 Memory Management Eenheet, an e minimale Set vu Peripherieger (UART an Timer). Déi preparéiert Fäegkeeten si genuch fir de Linux Kernel 5.13.5 an d'Basis BusyBox Kommandozeilëmfeld ze lueden, mat deem Dir direkt vun der virtueller VRChat Welt interagéiere kënnt.

E RISC-V Emulator a Form vun engem Pixel Shader deen Iech erlaabt Linux an VRChat ze lafen
E RISC-V Emulator a Form vun engem Pixel Shader deen Iech erlaabt Linux an VRChat ze lafen

Den Emulator gëtt am Shader a Form vu senger eegener dynamescher Textur (Unity Custom Render Texture) implementéiert, ergänzt duerch Udon Skripte, déi fir VRChat geliwwert ginn, benotzt fir den Emulator während senger Ausféierung ze kontrolléieren. Den Inhalt vum RAM an de Prozessorzoustand vum emuléierte System ginn a Form vun enger Textur gespäichert, 2048x2048 Pixel an der Gréisst. Den emuléierte Prozessor funktionnéiert mat enger Frequenz vun 250 kHz. Zousätzlech zu Linux kann den Emulator och Micropython lafen.

E RISC-V Emulator a Form vun engem Pixel Shader deen Iech erlaabt Linux an VRChat ze lafen

Fir persistent Datelagerung mat Ënnerstëtzung fir Liesen a Schreiwen ze kreéieren, ass en Trick fir e Kameraobjet ze benotzen, gebonnen un e rechteckege Gebitt generéiert vum Shader an d'Output vun der renderéierter Textur op de Shader-Input ze dirigéieren. Op dës Manéier kann all Pixel geschriwwe ginn während der Pixel Shader Ausféierung gelies ginn wann de nächste Frame veraarbecht gëtt.

Wann Dir Pixel Shaders applizéiert, gëtt eng separat Shader Instanz parallel fir all Textur Pixel lancéiert. Dës Feature komplizéiert d'Implementatioun wesentlech a erfuerdert eng separat Koordinatioun vum Zoustand vum ganze emuléierte System a Verglach vun der Positioun vum veraarbechte Pixel mat dem CPU-Staat deen dran kodéiert ass oder den Inhalt vum RAM vum emuléierte System (all Pixel kann 128 codéieren). Stécker vun Informatioun). De Shader Code erfuerdert d'Inklusioun vun enger riesecher Unzuel u Kontrollen, fir d'Ëmsetzung ze vereinfachen vun deem de Perl Preprocessor perlpp benotzt gouf.



Source: opennet.ru

Setzt e Commentaire