{"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\/de\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","title":{"rendered":"RISC-V-Emulator in Form eines Pixel-Shaders, der es erm\u00f6glicht, Linux in VRChat auszuf\u00fchren","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Die Ergebnisse des Experiments zur Organisation des Starts von Linux innerhalb eines virtuellen 3D-Raums eines Mehrspieler-Onlinespiels VRChat wurden ver\u00f6ffentlicht, das das Hochladen von 3D-Modellen mit eigenen Shadern erm\u00f6glicht. Zur Umsetzung der vorgesehenen Idee wurde ein RISC-V-Architektur-Emulator erstellt, der auf der GPU als Pixel- (Fragment-)Shader ausgef\u00fchrt wird (VRChat unterst\u00fctzt keine Compute-Shader und UAV). Der Code des Emulators wird unter der MIT-Lizenz ver\u00f6ffentlicht.    <\/p>\n<p>Die Grundlage des Emulators bildet eine Implementierung in C, bei deren Erstellung wiederum die Ressourcen des minimalistischen Emulators riscv-rust verwendet wurden, der in Rust entwickelt wird. Der vorbereitete C-Code wird in einen Pixel-Shader in HLSL \u00fcbersetzt, der f\u00fcr den Upload in VRChat geeignet ist. Der Emulator bietet vollst\u00e4ndige Unterst\u00fctzung f\u00fcr die Befehlssatzarchitektur rv32imasu, die Speicherverwaltungseinheit SV32 und einen minimalen Satz von Peripherieger\u00e4ten (UART und Timer). Die vorbereiteten Funktionen sind ausreichend, um den Linux-Kernel 5.13.5 und die grundlegende Befehlszeilenumgebung BusyBox zu laden, mit der man direkt aus der virtuellen Welt von VRChat interagieren kann.     <center><img decoding=\"async\" alt=\"RISC-V-Emulator in Form eines Pixel-Shaders, der es erm\u00f6glicht, Linux in VRChat auszuf\u00fchren\" src=\"\/wp-content\/uploads\/2021\/08\/da291c8d8172791b2e58d6cdb1c5b2e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <center><img decoding=\"async\" alt=\"RISC-V-Emulator in Form eines Pixel-Shaders, der es erm\u00f6glicht, Linux in VRChat auszuf\u00fchren\" src=\"\/wp-content\/uploads\/2021\/08\/7661b3895d32075c5e6cdf7f043d3532.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Der Emulator wird in einem Shader in Form einer eigenen dynamischen Textur (Unity Custom Render Texture) realisiert, erg\u00e4nzt durch die f\u00fcr VRChat bereitgestellten Udon-Skripte, die zur Steuerung des Emulators w\u00e4hrend seiner Ausf\u00fchrung verwendet werden. Der Inhalt des Arbeitsspeichers und der Zustand des emulierten Prozessors werden in Form einer Textur mit einer Gr\u00f6\u00dfe von 2048 x 2048 Pixeln gespeichert. Der emulierte Prozessor arbeitet mit einer Frequenz von 250 kHz. Neben Linux kann auch Micropython im Emulator ausgef\u00fchrt werden.    <center><img decoding=\"async\" alt=\"RISC-V-Emulator in Form eines Pixel-Shaders, der es erm\u00f6glicht, Linux in VRChat auszuf\u00fchren\" src=\"\/wp-content\/uploads\/2021\/08\/5b2ea8a3fcf98bff04a6455682381a67.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Um eine dauerhafte Speicherung von Daten mit Lese- und Schreibzugriff zu erm\u00f6glichen, wird ein Trick verwendet, der mit dem Einsatz eines Kamerasobjekts verbunden ist, das an einem rechteckigen Bereich, der vom Shader erzeugt wird, und der Ausrichtung der Ausgabetextur auf den Eingang des Shaders gebunden ist. So kann jeder Pixel, der w\u00e4hrend der Ausf\u00fchrung des Pixel-Shaders geschrieben wird, beim Verarbeiten des n\u00e4chsten Frames gelesen werden.     <\/p>\n<p>Beim Einsatz von Pixel-Shadern wird f\u00fcr jedes Pixel der Textur parallel eine separate Instanz des Shaders gestartet. Diese Eigenschaft erschwert die Implementierung erheblich und erfordert eine separate Koordination des gesamten emulierten Systems sowie eine Zuordnung der Position des bearbeiteten Pixels zu den in ihm codierten Zust\u00e4nden der CPU oder dem Inhalt des Arbeitsspeichers des emulierten Systems (jedes Pixel kann 128 Bit Informationen kodieren). Der Shader-Code erfordert dabei eine Vielzahl an Pr\u00fcfungen, zur Vereinfachung der Implementierung wurde der Perl-Pr\u00e4prozessor perlpp eingesetzt.           <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=\"Video abspielen\" 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 \/>Quelle: <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.1.1 - 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\/de\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47 RISC-V-Emulator in Form eines Pixel-Shaders, der es erm\u00f6glichte, Linux in VRChat zu starten | ProHoster","description":"Die Ergebnisse eines Experiments zur Organisation des Betriebs von Linux innerhalb des virtuellen 3D-Raums des Multiplayer-Online-Spiels VRChat wurden ver\u00f6ffentlicht, das das Laden von 3D-Modellen mit eigenen Shadern erm\u00f6glicht.","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/101103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=101103"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/101103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/101104"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=101103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=101103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=101103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}