РИСЦ-В емулатор у облику сејдера пиксела који вам омогућава да покренете Линук у ВРЦхат-у

Објављени су резултати експеримента организовања покретања Линукса унутар виртуелног 3Д простора онлине игре за више играча ВРЦхат, која омогућава учитавање 3Д модела сопственим сејдерима. За реализацију замишљене идеје креиран је емулатор РИСЦ-В архитектуре, који се изводи на страни ГПУ-а у виду пикселног (фрагментног) шејдера (ВРЦхат не подржава рачунарске шејдере и УАВ). Код емулатора је објављен под лиценцом МИТ.

Емулатор је заснован на имплементацији у језику Ц, за чије је креирање, заузврат, коришћен развој минималистичког емулатора рисцв-руст, развијеног на језику Руст. Припремљени Ц код се преводи у пиксел схадер у ХЛСЛ-у, погодан за учитавање у ВРЦхат. Емулатор пружа пуну подршку за архитектуру скупа инструкција рв32имасу, јединицу за управљање меморијом СВ32 и минимални скуп периферних уређаја (УАРТ и тајмер). Припремљене могућности су довољне за учитавање Линук кернела 5.13.5 и основног окружења командне линије БусиБок, са којим можете комуницирати директно из ВРЦхат виртуелног света.

РИСЦ-В емулатор у облику сејдера пиксела који вам омогућава да покренете Линук у ВРЦхат-у
РИСЦ-В емулатор у облику сејдера пиксела који вам омогућава да покренете Линук у ВРЦхат-у

Емулатор је имплементиран у шејдеру у облику сопствене динамичке текстуре (Унити Цустом Рендер Тектуре), допуњене Удон скриптама обезбеђеним за ВРЦхат, које се користе за контролу емулатора током његовог извршавања. Садржај РАМ меморије и стање процесора емулираног система се чувају у облику текстуре, величине 2048к2048 пиксела. Емулирани процесор ради на фреквенцији од 250 кХз. Поред Линука, емулатор може да покреће и Мицропитхон.

РИСЦ-В емулатор у облику сејдера пиксела који вам омогућава да покренете Линук у ВРЦхат-у

Да бисте креирали трајно складиште података са подршком за читање и писање, трик је да користите објекат Цамера везан за правоугаону област коју генерише сејдер и усмерите излаз рендероване текстуре на улаз за шејдер. На овај начин, сваки пиксел написан током извршавања пикел схадера може бити прочитан када се обради следећи оквир.

Приликом примене пикселских шејдера, одвојена инстанца сејдера се покреће паралелно за сваки пиксел текстуре. Ова карактеристика значајно отежава имплементацију и захтева одвојену координацију стања целог емулираног система и поређење положаја обрађеног пиксела са стањем ЦПУ који је кодиран у њему или садржајем РАМ-а емулираног система (сваки пиксел може да кодира 128 делови информација). Шејдер код захтева укључивање огромног броја провера, да би се поједноставила имплементација којих је коришћен перл предпроцесор перлпп.



Извор: опеннет.ру

Додај коментар