Emulator RISC-V dalam bentuk pelorek piksel yang membolehkan anda menjalankan Linux dalam VRChat

Hasil percubaan untuk menganjurkan pelancaran Linux di dalam ruang 3D maya permainan dalam talian berbilang pemain VRChat, yang membolehkan memuatkan model 3D dengan shader mereka sendiri, telah diterbitkan. Untuk melaksanakan idea yang diilhamkan, emulator seni bina RISC-V telah dicipta, dilaksanakan pada bahagian GPU dalam bentuk shader piksel (serpihan) (VRChat tidak menyokong shader pengiraan dan UAV). Kod emulator diterbitkan di bawah lesen MIT.

Emulator adalah berdasarkan pelaksanaan dalam bahasa C, penciptaannya, seterusnya, menggunakan perkembangan emulator minimalis riscv-rust, yang dibangunkan dalam bahasa Rust. Kod C yang disediakan diterjemahkan ke dalam pelorek piksel dalam HLSL, sesuai untuk dimuatkan ke dalam VRChat. Emulator menyediakan sokongan penuh untuk seni bina set arahan rv32imasu, unit pengurusan memori SV32 dan set peranti peranti minimum (UART dan pemasa). Keupayaan yang disediakan sudah cukup untuk memuatkan kernel Linux 5.13.5 dan persekitaran baris perintah BusyBox asas, yang dengannya anda boleh berinteraksi secara langsung dari dunia maya VRChat.

Emulator RISC-V dalam bentuk pelorek piksel yang membolehkan anda menjalankan Linux dalam VRChat
Emulator RISC-V dalam bentuk pelorek piksel yang membolehkan anda menjalankan Linux dalam VRChat

Emulator dilaksanakan dalam shader dalam bentuk tekstur dinamiknya sendiri (Unity Custom Render Texture), ditambah dengan skrip Udon yang disediakan untuk VRChat, digunakan untuk mengawal emulator semasa pelaksanaannya. Kandungan RAM dan keadaan pemproses sistem yang dicontohi disimpan dalam bentuk tekstur, bersaiz 2048x2048 piksel. Pemproses yang ditiru beroperasi pada frekuensi 250 kHz. Selain Linux, emulator juga boleh menjalankan Micropython.

Emulator RISC-V dalam bentuk pelorek piksel yang membolehkan anda menjalankan Linux dalam VRChat

Untuk mencipta storan data yang berterusan dengan sokongan untuk membaca dan menulis, silap mata adalah dengan menggunakan objek Kamera yang terikat pada kawasan segi empat tepat yang dijana oleh shader dan mengarahkan output tekstur yang diberikan kepada input shader. Dengan cara ini, sebarang piksel yang ditulis semasa pelaksanaan shader piksel boleh dibaca apabila bingkai seterusnya diproses.

Apabila menggunakan shader piksel, tika shader yang berasingan dilancarkan secara selari untuk setiap piksel tekstur. Ciri ini merumitkan pelaksanaan dengan ketara dan memerlukan penyelarasan berasingan bagi keadaan keseluruhan sistem yang dicontohi dan perbandingan kedudukan piksel yang diproses dengan keadaan CPU yang dikodkan di dalamnya atau kandungan RAM sistem yang ditiru (setiap piksel boleh mengekod 128 cebisan maklumat). Kod shader memerlukan kemasukan sejumlah besar semakan, untuk memudahkan pelaksanaan perl prapemproses perlpp telah digunakan.



Sumber: opennet.ru

Tambah komen