RISC-V-emulilo en la formo de piksela ombrilo, kiu ebligas al vi ruli Linukson en VRChat

La rezultoj de eksperimento pri organizado de la lanĉo de Linukso ene de la virtuala 3D-spaco de la plurludanta reta ludo VRChat, kiu ebligas ŝarĝi 3D-modelojn per siaj propraj ombriloj, estis publikigitaj. Por efektivigi la konceptitan ideon, emulilo de la arkitekturo RISC-V estis kreita, ekzekutita ĉe la GPU-flanko en formo de piksela (fragmento) ombranto (VRChat ne subtenas komputilajn ombrantojn kaj UAV). La emuladkodo estas publikigita sub la MIT-licenco.

La emulilo baziĝas sur efektivigo en la C-lingvo, kies kreado, siavice, uzis la evoluojn de la minimumisma emulilo riscv-rust, evoluigita en la Rust-lingvo. La preta C-kodo estas tradukita en pikselan ombrelon en HLSL, taŭga por ŝarĝo en VRChat. La emulilo provizas plenan subtenon por la arkitekturo de instrukcioj rv32imasu, la unuo pri administrado de memoro SV32 kaj minimuma aro de ekstercentraj (UART kaj tempigilo). La pretaj kapabloj sufiĉas por ŝargi la Linuksan kernon 5.13.5 kaj la bazan komandlinian medion BusyBox, kun kiuj vi povas interagi rekte de la virtuala mondo VRChat.

RISC-V-emulilo en la formo de piksela ombrilo, kiu ebligas al vi ruli Linukson en VRChat
RISC-V-emulilo en la formo de piksela ombrilo, kiu ebligas al vi ruli Linukson en VRChat

La emulilo estas efektivigita en la ombrilo en la formo de sia propra dinamika teksturo (Unity Custom Render Texture), kompletigita per Udon-skriptoj provizitaj por VRChat, uzataj por kontroli la emulilon dum ĝia ekzekuto. La enhavo de la RAM kaj la stato de procesoro de la kopiita sistemo estas stokitaj en formo de teksturo, 2048x2048 pikseloj en grandeco. La kopiita procesoro funkcias ĉe frekvenco de 250 kHz. Krom Linukso, la emulilo ankaŭ povas ruli Micropython.

RISC-V-emulilo en la formo de piksela ombrilo, kiu ebligas al vi ruli Linukson en VRChat

Por krei konstantan datumstokadon kun subteno por legado kaj skribo, lertaĵo estas uzi Fotilon-objekton ligitan al rektangula areo generita de la ombrilo kaj direkti la eliron de la igita teksturo al la ombrila enigo. Tiel, iu ajn pikselo skribita dum piksela ombra ekzekuto povas esti legita kiam la sekva kadro estas prilaborita.

Dum aplikado de pikselaj ombriloj, aparta ombrila kazo estas lanĉita paralele por ĉiu tekstura pikselo. Ĉi tiu trajto signife malfaciligas la efektivigon kaj postulas apartan kunordigon de la stato de la tuta kopiita sistemo kaj komparo de la pozicio de la prilaborita pikselo kun la CPU-stato kodita en ĝi aŭ la enhavo de la RAM de la kopiita sistemo (ĉiu pikselo povas kodi 128). pecetoj da informoj). La ombra kodo postulas la inkludon de grandega nombro da ĉekoj, por simpligi la efektivigon de kiu la perl antaŭprocesoro perlpp estis uzita.



fonto: opennet.ru

Aldoni komenton