{"id":101103,"date":"2021-08-27T10:23:05","date_gmt":"2021-08-27T08:23:07","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat"},"modified":"2021-08-27T10:23:05","modified_gmt":"2021-08-27T08:23:07","slug":"emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","title":{"rendered":"En RISC-V-emulator i form af en pixelshader, der gjorde det muligt at k\u00f8re Linux i VRChat","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Resultaterne af eksperimentet om organiseringen af opstart af Linux inde i et virtuelt 3D-rum af det multiplayer online-spil VRChat, som tillader upload af 3D-modeller med egne shaders, er offentliggjort. For at realisere den planlagte id\u00e9 blev der skabt en emulator af RISC-V-arkitekturen, der k\u00f8rer p\u00e5 GPU-siden som en pixel (fragment) shader (VRChat underst\u00f8tter ikke beregnings-shaders og UAV). Koden til emulatoren er offentliggjort under MIT-licensen.    <\/p>\n<p>Grundlaget for emulatoren er en implementering p\u00e5 C-sprog, hvori der er anvendt elementer fra den minimalistiske emulator riscv-rust, der udvikles i Rust. Den forberedte C-kode translateres til en pixel shader p\u00e5 HLSL, der er egnet til upload til VRChat. Emulatoren tilbyder fuld st\u00f8tte til instruktionss\u00e6ttet rv32imasu, hukommelseskontrolenheden SV32 og et minimum af perifere enheder (UART og timer). De forberedte funktioner er tilstr\u00e6kkelige til at uploade Linux-kernen 5.13.5 og det grundl\u00e6ggende BusyBox-kommandolinjemilj\u00f8, som kan interageres med direkte fra VRChat's virtuelle verden.     <center><img decoding=\"async\" alt=\"En RISC-V-emulator i form af en pixelshader, der gjorde det muligt at k\u00f8re Linux i VRChat\" src=\"\/wp-content\/uploads\/2021\/08\/da291c8d8172791b2e58d6cdb1c5b2e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <center><img decoding=\"async\" alt=\"En RISC-V-emulator i form af en pixelshader, der gjorde det muligt at k\u00f8re Linux i VRChat\" src=\"\/wp-content\/uploads\/2021\/08\/7661b3895d32075c5e6cdf7f043d3532.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Emulatoren er implementeret i en shader i form af en egen dynamisk tekstur (Unity Custom Render Texture), suppleret med de tilvridede VRChat Udon-scripts, der bruges til at styre emulatoren under k\u00f8rsel. Indholdet af RAM og tilstanden for den emulerede systems processor gemmes som en tekstur med en st\u00f8rrelse p\u00e5 2048\u00d72048 pixels. Den emulerede processor arbejder ved en frekvens p\u00e5 250 kHz. Udover Linux kan emulatoren ogs\u00e5 k\u00f8re Micropython.    <center><img decoding=\"async\" alt=\"En RISC-V-emulator i form af en pixelshader, der gjorde det muligt at k\u00f8re Linux i VRChat\" src=\"\/wp-content\/uploads\/2021\/08\/5b2ea8a3fcf98bff04a6455682381a67.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>For at organisere permanent dataopbevaring med st\u00f8tte til l\u00e6sning og skrivning anvendes et trick, der relaterer til brugen af et Camera-objekt knyttet til et rektangul\u00e6rt omr\u00e5de genereret af shaderen, og retningen af output fra den renderede tekstur til shaderens input. P\u00e5 denne m\u00e5de kan enhver pixel, der skrives under k\u00f8rsel af pixel shaderen, l\u00e6ses under behandlingen af det n\u00e6ste frame.     <\/p>\n<p>N\u00e5r der anvendes pixel-shadere, startes en separat instans af shaderen parallelt for hver pixel i teksturen. Denne funktionalitet g\u00f8r implementeringen betydeligt mere kompleks og kr\u00e6ver s\u00e6rskilt koordinering af hele den emulerede systems tilstand samt sammenligning af positionen af den behandlede pixel med den CPU-tilstand, der er kodet i den, eller indholdet af RAM i det emulerede system (hver pixel kan kode 128 bit information). Shader-koden kr\u00e6ver samtidig, at der inkluderes et enormt antal kontroller, hvortil en perl-pr\u00e6processor ved navn perlpp blev anvendt for at forenkle implementeringen.           <center>  <div class=\"youtube-placeholder\" data-id=\"G2u7NOpzcBQ\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/G2u7NOpzcBQ\/hqdefault.jpg\" alt=\"Afspil video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=55694\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Linux \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 online-\u0438\u0433\u0440\u044b VRChat, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0439 \u0438\u0434\u0435\u0438 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b RISC-V, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 GPU \u0432 \u0432\u0438\u0434\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e) \u0448\u0435\u0439\u0434\u0435\u0440\u0430 (VRChat \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0448\u0435\u0439\u0434\u0435\u0440\u044b \u0438 UAV). \u041a\u043e\u0434 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 MIT. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":101104,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-101103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Linux \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 online-\u0438\u0433\u0440\u044b VRChat, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 RISC-V \u0432 \u0444\u043e\u0440\u043c\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432\u0448\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Linux \u0432 VRChat | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Linux \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 online-\u0438\u0433\u0440\u044b VRChat, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-08-27T08:23:07+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-08-27T08:23:07+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47RISC-V-emulator i form af en pixel-shader, der gjorde det muligt at k\u00f8re Linux i VRChat | ProHoster","description":"Resultaterne af et eksperiment er blevet offentliggjort, som omhandler opstart af Linux i det virtuelle 3D-rum i det multiplayer online-spil VRChat, der tillader uploading af 3D-modeller med egne shadere.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 RISC-V \u0432 \u0444\u043e\u0440\u043c\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432\u0448\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Linux \u0432 VRChat | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Linux \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 online-\u0438\u0433\u0440\u044b VRChat, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2021-08-27T08:23:07+00:00","article:modified_time":"2021-08-27T08:23:07+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"101103","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-08-27 08:26:07","updated":"2022-09-27 18:54:52","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/101103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=101103"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/101103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/101104"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=101103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=101103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=101103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}