ʻO kahi emulator RISC-V ma ke ʻano o kahi shader pixel e hiki ai iā ʻoe ke holo Linux ma VRChat

Ua paʻi ʻia nā hopena o kahi hoʻokolohua ma ka hoʻonohonoho ʻana i ka hoʻomaka ʻana o Linux i loko o ka lumi 3D virtual o ka pāʻani multiplayer online VRChat, e hiki ai ke hoʻouka i nā hiʻohiʻona 3D me kā lākou mau shaders ponoʻī, ua paʻi ʻia. No ka hoʻokō ʻana i ka manaʻo i hāpai ʻia, ua hana ʻia kahi emulator o ka RISC-V architecture, i hana ʻia ma ka ʻaoʻao GPU ma ke ʻano o kahi pixel (fragment) shader (VRChat ʻaʻole kākoʻo i nā shaders computational a me UAV). Hoʻopuka ʻia ka code emulator ma lalo o ka laikini MIT.

Hoʻokumu ʻia ka emulator ma kahi hoʻokō ma ka ʻōlelo C, ka mea i hana ʻia, ma ka huli ʻana, hoʻohana i nā hoʻomohala o ka minimalistic emulator riscv-rust, i hoʻomohala ʻia ma ka ʻōlelo Rust. Ua unuhi ʻia ka code C i hoʻomākaukau ʻia i loko o kahi shader pixel ma HLSL, kūpono no ka hoʻouka ʻana i VRChat. Hāʻawi ka emulator i ke kākoʻo piha no ka rv32imasu hoʻonohonoho hoʻonohonoho hoʻonohonoho, ka SV32 hoʻokele hoʻomanaʻo hoʻomanaʻo, a me kahi liʻiliʻi o nā peripheral (UART a me ka manawa). Ua lawa nā mākaukau i hoʻomākaukau ʻia no ka hoʻouka ʻana i ka Linux kernel 5.13.5 a me ke kahua laina kauoha BusyBox kumu, kahi e hiki ai iā ʻoe ke kamaʻilio pololei mai ka honua virtual VRChat.

ʻO kahi emulator RISC-V ma ke ʻano o kahi shader pixel e hiki ai iā ʻoe ke holo Linux ma VRChat
ʻO kahi emulator RISC-V ma ke ʻano o kahi shader pixel e hiki ai iā ʻoe ke holo Linux ma VRChat

Hoʻokomo ʻia ka emulator i loko o ka shader ma ke ʻano o kona ʻano hoʻoikaika kino (Unity Custom Render Texture), i hoʻohui ʻia e nā palapala Udon i hāʻawi ʻia no VRChat, i hoʻohana ʻia e hoʻomalu i ka emulator i ka wā o kāna hoʻokō. Mālama ʻia nā mea o ka RAM a me ke kaʻina hana o ka ʻōnaehana i hoʻohālikelike ʻia ma ke ʻano o kahi ʻano, 2048x2048 pixels ka nui. Hoʻohana ʻia ka mea hana emulated ma ke alapine o 250 kHz. Ma kahi o Linux, hiki i ka emulator ke holo i ka Micropython.

ʻO kahi emulator RISC-V ma ke ʻano o kahi shader pixel e hiki ai iā ʻoe ke holo Linux ma VRChat

No ka hana ʻana i ka waihona ʻikepili hoʻomau me ke kākoʻo no ka heluhelu ʻana a me ke kākau ʻana, ʻo ka hoʻohana ʻana i kahi mea Camera i hoʻopaʻa ʻia i kahi ʻāpana ʻehā i hana ʻia e ka shader a kuhikuhi i ka hoʻopuka o ke ʻano i hana ʻia i ka hoʻokomo shader. Ma kēia ala, hiki ke heluhelu ʻia nā pika i kākau ʻia i ka wā o ka hoʻokō ʻana i ka shader pixel ke hana ʻia ke kiʻi aʻe.

I ka hoʻohana ʻana i nā shaders pixel, hoʻomaka ʻia kahi ʻano shader ʻokoʻa e like me kēlā me kēia pika kiko. Hoʻopili nui kēia hiʻohiʻona i ka hoʻokō a koi i ka hoʻonohonoho ʻokoʻa o ka mokuʻāina o ka ʻōnaehana holoʻokoʻa i hoʻohālikelike ʻia a me ka hoʻohālikelike ʻana i ke kūlana o ka pixel i hana ʻia me ka mokuʻāina CPU i hoʻopili ʻia i loko a i ʻole nā ​​​​mea o ka RAM o ka ʻōnaehana i hoʻohālikelike ʻia (hiki i kēlā me kēia pika ke hoʻopili i ka 128 nā ʻikepili). Pono ka code shader e hoʻokomo i kahi helu nui o nā loiloi, e maʻalahi i ka hoʻokō ʻana i hoʻohana ʻia ka perl preprocessor perlpp.



Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka