RISC-V emulator nyob rau hauv daim ntawv ntawm pixel shader uas tso cai rau koj khiav Linux hauv VRChat

Cov txiaj ntsig ntawm kev sim ntawm kev teeb tsa lub community launch ntawm Linux nyob rau hauv lub virtual 3D qhov chaw ntawm multiplayer online game VRChat, uas tso cai rau loading 3D qauv nrog lawv tus kheej shaders, tau luam tawm. Txhawm rau siv lub tswv yim tsim, ib qho emulator ntawm RISC-V architecture tau tsim, raug tua ntawm GPU sab hauv daim duab pixel (fgment) shader (VRChat tsis txhawb kev suav cov duab ntxoov ntxoo thiab UAV). Cov emulator code yog luam tawm raws li MIT daim ntawv tso cai.

Lub emulator yog ua raws li kev siv hauv C hom lus, kev tsim ntawm uas, dhau los, siv cov kev txhim kho ntawm minimalistic emulator riscv-rust, tsim hauv cov lus Rust. Cov C code npaj tau muab txhais ua pixel shader hauv HLSL, haum rau kev thauj khoom rau hauv VRCchat. Lub emulator muab kev txhawb nqa tag nrho rau rv32imasu kev qhia teeb tsa architecture, SV32 lub cim xeeb tswj chav tsev, thiab cov khoom siv tsawg tsawg (UART thiab timer). Cov peev txheej npaj tau txaus los thauj cov Linux ntsiav 5.13.5 thiab qhov yooj yim BusyBox hais kom ua kab ib puag ncig, uas koj tuaj yeem cuam tshuam ncaj qha los ntawm VRChat virtual ntiaj teb.

RISC-V emulator nyob rau hauv daim ntawv ntawm pixel shader uas tso cai rau koj khiav Linux hauv VRChat
RISC-V emulator nyob rau hauv daim ntawv ntawm pixel shader uas tso cai rau koj khiav Linux hauv VRChat

Lub emulator yog siv nyob rau hauv lub shader nyob rau hauv daim ntawv ntawm nws tus kheej dynamic kev ntxhib los mos (Unity Custom Render Texture), ntxiv los ntawm Udon scripts muab rau VRChat, siv los tswj lub emulator thaum nws tua. Cov ntsiab lus ntawm RAM thiab lub xeev processor ntawm lub emulated system yog khaws cia nyob rau hauv daim ntawv ntawm kev ntxhib los mos, 2048x2048 pixels loj. Lub emulated processor ua haujlwm ntawm qhov zaus ntawm 250 kHz. Ntxiv rau Linux, lub emulator tseem tuaj yeem khiav Micropython.

RISC-V emulator nyob rau hauv daim ntawv ntawm pixel shader uas tso cai rau koj khiav Linux hauv VRChat

Txhawm rau tsim cov ntaub ntawv tsis tu ncua nrog kev txhawb nqa rau kev nyeem ntawv thiab sau ntawv, ib qho kev ua kom yuam kev yog siv lub koob yees duab khoom khi rau ib cheeb tsam duab plaub uas tsim los ntawm cov duab ntxoov ntxoo thiab coj cov khoom tso tawm ntawm qhov kev ntxhib los mos rau cov duab ntxoov ntxoo. Txoj kev no, txhua pixel sau thaum lub sijhawm pixel shader tua tuaj yeem nyeem tau thaum lub thav duab tom ntej ua tiav.

Thaum ua ntawv thov pixel shaders, ib qho piv txwv ntawm cov duab ntxoov ntxoo cais tau pib ua ke rau txhua qhov kev ntxhib los mos pixel. Cov yam ntxwv no cuam tshuam rau kev siv thiab yuav tsum muaj kev sib koom ua ke ntawm lub xeev ntawm tag nrho cov emulated system thiab kev sib piv ntawm txoj hauj lwm ntawm cov txheej txheem pixel nrog lub xeev ntawm CPU encoded nyob rau hauv nws los yog cov ntsiab lus ntawm RAM ntawm lub emulated system (txhua pixel tau encode 128 khoom ntawm cov ntaub ntawv). Shader code yuav tsum tau suav nrog ntau tus lej ntawm cov tshev, txhawm rau ua kom yooj yim rau kev siv uas cov perl preprocessor perlpp tau siv.



Tau qhov twg los: opennet.ru

Ntxiv ib saib