VRChat-da Linux-u işə salmağa imkan verən piksel şeyder şəklində RISC-V emulyatoru

3D modelləri öz şeyderləri ilə yükləməyə imkan verən VRChat multiplayer onlayn oyununun virtual 3D məkanında Linux-un işə salınmasının təşkili üzrə eksperimentin nəticələri dərc olunub. Düşünülmüş ideyanı həyata keçirmək üçün RISC-V arxitekturasının emulyatoru yaradıldı, GPU tərəfində piksel (fraqment) şeyder şəklində icra edildi (VRChat hesablama şeyderlərini və İHA-nı dəstəkləmir). Emulator kodu MIT lisenziyası altında nəşr olunur.

Emulator C dilində tətbiqə əsaslanır ki, onun yaradılmasında öz növbəsində Rust dilində hazırlanmış minimalist riscv-rust emulyatorunun işlənib hazırlanmasından istifadə edilib. Hazırlanmış C kodu VRChat-a yükləmək üçün uyğun olan HLSL-də piksel şeyderinə çevrilir. Emulator rv32imasu təlimat dəsti arxitekturası, SV32 yaddaş idarəetmə bloku və minimal periferiya dəsti (UART və taymer) üçün tam dəstək verir. Hazırlanmış imkanlar Linux nüvəsini 5.13.5 və VRChat virtual dünyasından birbaşa qarşılıqlı əlaqə qura biləcəyiniz əsas BusyBox əmr xətti mühitini yükləmək üçün kifayətdir.

VRChat-da Linux-u işə salmağa imkan verən piksel şeyder şəklində RISC-V emulyatoru
VRChat-da Linux-u işə salmağa imkan verən piksel şeyder şəklində RISC-V emulyatoru

Emulator şeyderdə öz dinamik teksturası (Unity Custom Render Texture) şəklində həyata keçirilir, icrası zamanı emulyatoru idarə etmək üçün istifadə olunan VRChat üçün nəzərdə tutulmuş Udon skriptləri ilə tamamlanır. Operativ yaddaşın məzmunu və emulyasiya edilmiş sistemin prosessor vəziyyəti 2048x2048 piksel ölçüsündə faktura şəklində saxlanılır. Emulyasiya edilmiş prosessor 250 kHz tezliyində işləyir. Linux ilə yanaşı, emulyator Micropython-u da işlədə bilər.

VRChat-da Linux-u işə salmağa imkan verən piksel şeyder şəklində RISC-V emulyatoru

Oxuma və yazma dəstəyi ilə davamlı məlumat yaddaşı yaratmaq üçün hiylə, şeyder tərəfindən yaradılan düzbucaqlı sahəyə bağlanmış Kamera obyektindən istifadə etmək və göstərilən fakturanın çıxışını şeyder girişinə yönəltməkdir. Bu yolla, piksel şeyderinin icrası zamanı yazılan istənilən piksel növbəti kadr işləndikdə oxuna bilər.

Piksel şaderlərini tətbiq edərkən, hər bir tekstura pikseli üçün paralel olaraq ayrıca şeyder nümunəsi işə salınır. Bu xüsusiyyət həyata keçirilməsini əhəmiyyətli dərəcədə çətinləşdirir və bütün emulyasiya edilmiş sistemin vəziyyətinin ayrıca əlaqələndirilməsini və emal edilmiş pikselin mövqeyinin onda kodlanmış CPU vəziyyəti və ya emulyasiya edilmiş sistemin operativ yaddaşının məzmunu ilə müqayisəsini tələb edir (hər piksel 128 kodlaşdıra bilər). məlumat parçaları). Şeyder kodu, perl preprocessor perlpp istifadə edildiyi həyata keçirilməsini asanlaşdırmaq üçün çox sayda yoxlamanın daxil edilməsini tələb edir.



Mənbə: opennet.ru

Добавить комментарий