Emûlatorek RISC-V di forma şaderek pixel de ku dihêle hûn Linux-ê di VRChat-ê de bimeşînin.

Encamên ceribandinek li ser organîzekirina destpêkirina Linux-ê di hundurê cîhê 3D-ya virtual ya lîstika serhêl a piralîker VRChat, ku destûrê dide barkirina modelên 3D bi shaderên xwe re, hate weşandin. Ji bo cîbicîkirina ramana têgihîştî, emulatorek mîmariya RISC-V hate afirandin, ku li aliyê GPU-yê di forma şaderek pixel (parçeyek) de hate darve kirin (VRChat shaderên hesabker û UAV piştgirî nake). Koda emulatorê di bin lîsansa MIT-ê de tê weşandin.

Emûlator li ser bingehek pêkanînek bi zimanê C-yê ye, di afirandina wê de, pêşkeftinên emulatora mînîmalîst riscv-rust, ku di zimanê Rust de hatî pêşve xistin, bikar tîne. Koda C-ya amadekirî di HLSL-ê de li shaderek pixel tê wergerandin, ku ji bo barkirina li VRChat-ê maqûl e. Emûlator ji bo mîmariya koma rêwerzan a rv32imasu, yekîneya rêveberiya bîranînê ya SV32, û komek hindiktirîn dorhêl (UART û demjimêr) piştgirî dide. Kapasîteyên amadekirî têra barkirina kernel Linux 5.13.5 û jîngeha bingehîn a xeta fermanê BusyBox dikin, ku hûn dikarin rasterast ji cîhana virtual ya VRChat re têkilî daynin.

Emûlatorek RISC-V di forma şaderek pixel de ku dihêle hûn Linux-ê di VRChat-ê de bimeşînin.
Emûlatorek RISC-V di forma şaderek pixel de ku dihêle hûn Linux-ê di VRChat-ê de bimeşînin.

Emûlator di şaderê de di forma xweya xweya dînamîkî de (Unity Custom Render Texture), ku ji hêla nivîsarên Udon ve ji bo VRChat hatine peyda kirin, tê zêdekirin, ku ji bo kontrolkirina emulatorê di dema darvekirina wê de tê bikar anîn. Naveroka RAM-ê û rewşa pêvajoyê ya pergala emulkirî di forma nîgarek, mezinahiya 2048x2048 pixel de têne hilanîn. Pêvajoya emûlkirî bi frekansa 250 kHz kar dike. Ji bilî Linux-ê, emulator dikare Micropython jî bimeşîne.

Emûlatorek RISC-V di forma şaderek pixel de ku dihêle hûn Linux-ê di VRChat-ê de bimeşînin.

Ji bo afirandina hilanîna daneya domdar a bi piştgirîya xwendin û nivîsandinê, hîleyek ev e ku meriv tiştek Kamera ya ku bi qadek çargoşe ya ku ji hêla shader ve hatî çêkirin ve girêdayî ye bikar bîne û derana tevna çêkirî ber bi têketina şader ve bişîne. Bi vî rengî, her pixelek ku di dema darvekirina şadera pixel de hatî nivîsandin dikare dema ku çarçoveyek din were hilanîn were xwendin.

Dema ku şaderên pîxelê têne sepandin, ji bo her pîxelek tevnvîsê mînakek şaderek veqetandî paralel tê destpêkirin. Ev taybetmendî bi girîngî pêkanînê tevlihev dike û hewce dike ku hevrêziya cihêreng a rewşa tevahiya pergala emulkirî û berhevdana pozîsyona pîxela pêvajokirî bi rewşa CPU ya ku tê de kodkirî ye an naveroka RAM-a pergala emulkirî (her pixel dikare 128 kod bike hûrgelên agahdariyê). Koda shader hewceyê tevlêbûna hejmareke mezin a kontrolê hewce dike, da ku bicîhkirina wan hêsan bike ku perl preprocessor perlpp hatî bikar anîn.



Source: opennet.ru

Add a comment