Émulator RISC-V dina bentuk shader piksel anu ngamungkinkeun anjeun ngajalankeun Linux di VRChat

Hasil percobaan pikeun ngatur peluncuran Linux di jero rohangan 3D virtual tina kaulinan online multiplayer VRChat, anu ngamungkinkeun ngamuat modél 3D sareng shaders sorangan, parantos diterbitkeun. Pikeun nerapkeun gagasan katimu dijieun émulator arsitektur RISC-V, dieksekusi di sisi GPU dina bentuk piksel (fragmen) shader (VRChat teu ngarojong shaders komputasi jeung UAV). Kode émulator diterbitkeun dina lisénsi MIT.

Émulator dumasar kana hiji palaksanaan dina basa C, kreasi nu, kahareupna dipaké ngembangkeun minimalistic émulator riscv-karat, dimekarkeun dina basa Rust. Kode C anu disiapkeun ditarjamahkeun kana shader piksel dina HLSL, cocog pikeun dimuat kana VRChat. Émulator nyadiakeun rojongan pinuh pikeun rv32imasu instruksi arsitéktur set, Unit manajemén memori SV32, sarta set minimal tina périferal (UART na timer). Kamampuhan anu disiapkeun cukup pikeun ngamuat kernel Linux 5.13.5 sareng lingkungan garis paréntah BusyBox dasar, dimana anjeun tiasa berinteraksi langsung ti dunya maya VRChat.

Émulator RISC-V dina bentuk shader piksel anu ngamungkinkeun anjeun ngajalankeun Linux di VRChat
Émulator RISC-V dina bentuk shader piksel anu ngamungkinkeun anjeun ngajalankeun Linux di VRChat

Émulator dilaksanakeun dina shader dina bentuk tékstur dinamis sorangan (Unity Custom Render Texture), ditambah ku skrip Udon anu disayogikeun pikeun VRChat, dianggo pikeun ngontrol émulator nalika palaksanaanna. Eusi RAM sareng kaayaan prosésor tina sistem anu ditiru disimpen dina bentuk tékstur, ukuranana 2048x2048 piksel. Prosesor anu ditiru beroperasi dina frékuénsi 250 kHz. Salian Linux, émulator ogé tiasa ngajalankeun Micropython.

Émulator RISC-V dina bentuk shader piksel anu ngamungkinkeun anjeun ngajalankeun Linux di VRChat

Pikeun nyieun gudang data pengkuh kalayan rojongan pikeun maca jeung nulis, hiji trik ngagunakeun objék kaméra kabeungkeut wewengkon rectangular dihasilkeun ku shader tur langsung kaluaran tékstur rendered kana input shader. Ku cara ieu, piksel naon waé anu ditulis nalika palaksanaan shader piksel tiasa dibaca nalika pigura salajengna diolah.

Nalika nerapkeun shaders piksel, conto shader anu misah diluncurkeun paralel pikeun tiap piksel tékstur. Fitur ieu sacara signifikan nyusahkeun palaksanaan sareng ngabutuhkeun koordinasi anu misah tina kaayaan sadaya sistem anu ditiru sareng ngabandingkeun posisi piksel anu diolah sareng kaayaan CPU anu disandikeun atanapi eusi RAM tina sistem anu ditiru (unggal piksel tiasa dikodekeun 128. bit inpormasi). Kode shader merlukeun citakan sajumlah badag cék, pikeun simplify palaksanaan nu perl preprocessor perlpp ieu dipaké.



sumber: opennet.ru

Tambahkeun komentar