Линуксыг VRCat дээр ажиллуулах боломжийг олгодог пиксел шэйдер хэлбэртэй RISC-V эмулятор.

3D загваруудыг өөрийн шэйдерээр ачаалах боломжийг олгодог VRChat олон тоглогчийн онлайн тоглоомын виртуал 3D орон зайд Линуксыг ажиллуулах туршилтын үр дүн нийтлэгдсэн байна. Бодсон санааг хэрэгжүүлэхийн тулд GPU тал дээр пикселийн (фрагмент) шэйдер хэлбэрээр гүйцэтгэсэн RISC-V архитектурын эмулятор бүтээгдсэн (VRChat нь тооцооллын шэйдер болон UAV-ийг дэмждэггүй). Эмуляторын кодыг MIT лицензийн дагуу нийтэлсэн.

Эмулятор нь Си хэл дээрх хэрэгжүүлэлт дээр суурилдаг бөгөөд үүнийг бүтээхдээ Rust хэл дээр боловсруулсан riscv-rust минималист эмуляторын хөгжүүлэлтийг ашигласан болно. Бэлтгэсэн C кодыг HLSL-д пиксел шэйдер рүү хөрвүүлсэн бөгөөд VRChat-д ачаалахад тохиромжтой. Эмулятор нь rv32imasu зааврын багц архитектур, SV32 санах ойн удирдлагын нэгж, хамгийн бага дагалдах хэрэгслүүд (UART ба таймер) -ийг бүрэн дэмждэг. Бэлтгэсэн чадварууд нь Linux цөм 5.13.5 болон VRChat виртуал ертөнцөөс шууд харилцах боломжтой BusyBox командын мөрийн үндсэн орчныг ачаалахад хангалттай.

Линуксыг VRCat дээр ажиллуулах боломжийг олгодог пиксел шэйдер хэлбэртэй RISC-V эмулятор.
Линуксыг VRCat дээр ажиллуулах боломжийг олгодог пиксел шэйдер хэлбэртэй RISC-V эмулятор.

Эмулятор нь шэйдерт өөрийн динамик бүтэцтэй (Unity Custom Render Texture) хэлбэрээр хэрэгжсэн бөгөөд VRChat-д зориулсан Udon скриптүүдээр нэмэлт бөгөөд эмуляторыг гүйцэтгэх явцад удирдахад ашигладаг. RAM-ийн агуулга, дууриасан системийн процессорын төлөв нь 2048x2048 пиксел хэмжээтэй бүтэцтэй хэлбэрээр хадгалагддаг. Дууриамал процессор нь 250 кГц давтамжтайгаар ажилладаг. Линуксээс гадна эмулятор нь Micropython-г ажиллуулах боломжтой.

Линуксыг VRCat дээр ажиллуулах боломжийг олгодог пиксел шэйдер хэлбэртэй RISC-V эмулятор.

Унших, бичихэд дэмжлэгтэй байнгын мэдээллийн санг бий болгохын тулд шэйдерийн үүсгэсэн тэгш өнцөгт хэсэгт холбогдсон Камерын объектыг ашиглаж, үзүүлсэн бүтэцтэй гаралтыг шэйдерийн оролт руу чиглүүлэх нь заль мэх юм. Ингэснээр пиксел шэйдерийн гүйцэтгэлийн явцад бичигдсэн аливаа пикселийг дараагийн фрейм боловсруулах үед унших боломжтой.

Пиксел шэйдер ашиглах үед бүтэцтэй пиксел бүрт тусдаа шэйдерийн жишээг зэрэгцээ ажиллуулдаг. Энэ функц нь хэрэгжилтийг ихээхэн хүндрүүлдэг бөгөөд бүх дуурайлган системийн төлөвийг тусад нь зохицуулах, боловсруулсан пикселийн байрлалыг түүнд кодлогдсон CPU төлөв эсвэл дуурайлган системийн RAM-ийн агуулгатай харьцуулахыг шаарддаг (пиксел бүр 128 кодчилох боломжтой). мэдээлэл). Шэйдерийн код нь Perl preprocessor perlpp ашигласан хэрэгжилтийг хялбарчлахын тулд маш олон тооны шалгалтуудыг оруулахыг шаарддаг.



Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх