RISC-V էմուլյատոր՝ պիքսելային շեյդերի տեսքով, որը թույլ է տալիս գործարկել Linux-ը VRChat-ում

Հրապարակվել են VRChat մուլտիպլեյեր առցանց խաղի վիրտուալ 3D տարածության ներսում Linux-ի գործարկումը կազմակերպելու փորձի արդյունքները, որը թույլ է տալիս բեռնել 3D մոդելները սեփական շեյդերներով։ Մտահղացված գաղափարն իրականացնելու համար ստեղծվել է RISC-V ճարտարապետության էմուլյատոր, որն իրականացվել է GPU-ի կողմից՝ պիքսելային (բեկորային) շեյդերի տեսքով (VRChat-ը չի աջակցում հաշվողական շեյդերներին և UAV-ին)։ Էմուլյատորի կոդը հրապարակվում է MIT լիցենզիայի ներքո:

Էմուլյատորը հիմնված է C լեզվով կատարման վրա, որի ստեղծման համար, իր հերթին, օգտագործվել են Rust լեզվով մշակված riscv-rust մինիմալիստական ​​էմուլյատորի մշակումները։ Պատրաստված C կոդը թարգմանվում է պիքսելային շեյդեր HLSL-ում, որը հարմար է VRChat-ում բեռնելու համար: Էմուլյատորը լիարժեք աջակցություն է տրամադրում rv32imasu հրահանգների հավաքածուի ճարտարապետությանը, SV32 հիշողության կառավարման միավորին և ծայրամասային սարքերի նվազագույն փաթեթին (UART և ժամանակաչափ): Պատրաստված հնարավորությունները բավական են բեռնելու Linux միջուկը 5.13.5-ը և հիմնական BusyBox հրամանի տող միջավայրը, որի հետ կարող եք շփվել անմիջապես VRChat վիրտուալ աշխարհից։

RISC-V էմուլյատոր՝ պիքսելային շեյդերի տեսքով, որը թույլ է տալիս գործարկել Linux-ը VRChat-ում
RISC-V էմուլյատոր՝ պիքսելային շեյդերի տեսքով, որը թույլ է տալիս գործարկել Linux-ը VRChat-ում

Էմուլյատորն իրականացվում է շեյդերում իր սեփական դինամիկ հյուսվածքի տեսքով (Unity Custom Render Texture), որը լրացվում է VRChat-ի համար նախատեսված Udon սկրիպտներով, որոնք օգտագործվում են էմուլյատորը դրա կատարման ընթացքում կառավարելու համար։ RAM-ի պարունակությունը և նմանակված համակարգի պրոցեսորի վիճակը պահվում են հյուսվածքի տեսքով՝ 2048x2048 պիքսել չափերով։ Էմուլացված պրոցեսորն աշխատում է 250 կՀց հաճախականությամբ: Բացի Linux-ից, էմուլյատորը կարող է նաև գործարկել Micropython-ը:

RISC-V էմուլյատոր՝ պիքսելային շեյդերի տեսքով, որը թույլ է տալիս գործարկել Linux-ը VRChat-ում

Ընթերցանության և գրելու աջակցությամբ տվյալների մշտական ​​պահպանում ստեղծելու համար հնարք է օգտագործել Camera օբյեկտը, որը կապված է ստվերի կողմից ստեղծվող ուղղանկյուն տարածքի հետ և ուղղորդել ստացված հյուսվածքի ելքը դեպի ստվերային մուտքագրումը: Այսպիսով, ցանկացած պիքսել, որը գրված է պիքսելային շեյդերի կատարման ժամանակ, կարելի է կարդալ, երբ հաջորդ շրջանակը մշակվի:

Պիկսելային ստվերներ կիրառելիս յուրաքանչյուր հյուսվածքային պիքսելի համար գործարկվում է առանձին ստվերային օրինակ: Այս հատկությունը զգալիորեն բարդացնում է իրականացումը և պահանջում է ամբողջ էմուլացված համակարգի վիճակի առանձին համակարգում և մշակված պիքսելի դիրքի համեմատություն դրանում կոդավորված պրոցեսորի վիճակի կամ նմանակված համակարգի RAM-ի բովանդակության հետ (յուրաքանչյուր պիքսել կարող է կոդավորել 128 տեղեկատվության մանրուքներ): Shader ծածկագիրը պահանջում է հսկայական թվով ստուգումների ներառում, որոնց իրականացումը պարզեցնելու համար օգտագործվել է perl preprocessor perlpp:



Source: opennet.ru

Добавить комментарий