{"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\/es\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","title":{"rendered":"Un emulador RISC-V en forma de shader de p\u00edxeles, que permite ejecutar Linux en VRChat","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Se han publicado los resultados de un experimento sobre c\u00f3mo iniciar Linux dentro de un espacio 3D virtual en el juego multijugador online VRChat, que permite la carga de modelos 3D con sus propios shaders. Para implementar la idea concebida, se cre\u00f3 un emulador de arquitectura RISC-V, ejecutado en el lado de la GPU como un shader de p\u00edxeles. (VRChat no admite shaders de c\u00f3mputo y UAV). El c\u00f3digo del emulador se ha publicado bajo la licencia MIT.    <\/p>\n<p>La base del emulador est\u00e1 construida sobre una implementaci\u00f3n en C, en la que, a su vez, se utilizaron los desarrollos de un emulador minimalista riscv-rust, desarrollado en Rust. El c\u00f3digo en C preparado se traduce en un shader de p\u00edxeles en HLSL, adecuado para cargar en VRChat. El emulador proporciona soporte completo para la arquitectura del conjunto de instrucciones rv32imasu, el bloque de control de memoria SV32 y un conjunto m\u00ednimo de dispositivos perif\u00e9ricos (UART y temporizador). Las capacidades preparadas son suficientes para cargar el n\u00facleo de Linux 5.13.5 y el entorno b\u00e1sico de l\u00ednea de comandos BusyBox, que se puede interactuar directamente desde el mundo virtual de VRChat.     <center><img decoding=\"async\" alt=\"Un emulador RISC-V en forma de shader de p\u00edxeles, que permite ejecutar Linux en VRChat\" src=\"\/wp-content\/uploads\/2021\/08\/da291c8d8172791b2e58d6cdb1c5b2e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <center><img decoding=\"async\" alt=\"Un emulador RISC-V en forma de shader de p\u00edxeles, que permite ejecutar Linux en VRChat\" src=\"\/wp-content\/uploads\/2021\/08\/7661b3895d32075c5e6cdf7f043d3532.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>El emulador se implementa en un shader en forma de una textura din\u00e1mica personalizada (Unity Custom Render Texture), complementada con scripts Udon proporcionados para VRChat, utilizados para controlar el emulador durante su ejecuci\u00f3n. El contenido de la memoria RAM y el estado del procesador del sistema emulado se guarda en forma de una textura de 2048 x 2048 p\u00edxeles. El procesador emulado opera a una frecuencia de 250 kHz. Adem\u00e1s de Linux, el emulador tambi\u00e9n puede ejecutar Micropython.    <center><img decoding=\"async\" alt=\"Un emulador RISC-V en forma de shader de p\u00edxeles, que permite ejecutar Linux en VRChat\" src=\"\/wp-content\/uploads\/2021\/08\/5b2ea8a3fcf98bff04a6455682381a67.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Para organizar un almacenamiento permanente de datos con soporte para lectura y escritura, se aplica un truco relacionado con el uso de un objeto Camera, vinculado a una \u00e1rea rectangular generada por el shader, y la direcci\u00f3n de salida de la textura renderizada hacia la entrada del shader. De esta manera, cualquier p\u00edxel escrito durante la ejecuci\u00f3n del shader de p\u00edxeles puede ser le\u00eddo al procesar el siguiente cuadro.     <\/p>\n<p>Al aplicar shaders de p\u00edxeles, se inicia una instancia separada del shader para cada p\u00edxel de la textura. Esta particularidad complica enormemente la implementaci\u00f3n y requiere una coordinaci\u00f3n distinta del estado de todo el sistema emulado y la correlaci\u00f3n de la posici\u00f3n del p\u00edxel procesado con el estado codificado en el mismo, que puede ser el estado de la CPU o el contenido de la RAM del sistema emulado (cada p\u00edxel puede codificar 128 bits de informaci\u00f3n). El c\u00f3digo del shader requiere incluir una gran cantidad de comprobaciones, para lo cual se utiliz\u00f3 el preprocesador perlpp.           <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=\"Reproducir 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 \/>Fuente: <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.2 - 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\/es\/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.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Emulador RISC-V en forma de shader de p\u00edxel, que permiti\u00f3 ejecutar Linux en VRChat | ProHoster","description":"Se han publicado los resultados de un experimento sobre c\u00f3mo ejecutar Linux dentro de un espacio 3D virtual en el juego multijugador online VRChat, que permite cargar modelos 3D con sus propios shaders.","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/101103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=101103"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/101103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/101104"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=101103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=101103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=101103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}