Эмулятор RISC-V в форме пиксельного шейдера, позволивший запустить Linux в VRChat
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Опубликованы результаты эксперимента по организации запуска Linux внутри виртуального 3D-пространства многопользовательской online-игры VRChat, допускающей загрузку 3D-моделей со своими шейдерами. Для реализации задуманной идеи был создан эмулятор архитектуры RISC-V, выполняемый на стороне GPU в виде пиксельного (фрагментного) шейдера (VRChat не поддерживает вычислительные шейдеры и UAV). Код эмулятора опубликован под лицензией MIT.
В основе эмулятора заложена реализация на языке Си, при создании которой, в свою очередь, использованы наработки минималистичного эмулятора riscv-rust, развиваемого на языке Rust. Подготовленный Си-код транслируется в пиксельный шейдер на языке HLSL, пригодный для загрузки в VRChat. В эмуляторе предоставляется полная поддержка архитектуры набора команд rv32imasu, блок управления памятью SV32 и минимальный набор периферийных устройств (UART и таймер). Подготовленных возможностей достаточно для загрузки ядра Linux 5.13.5 и базового окружения командной строки BusyBox, с которым можно взаимодействовать напрямую из виртуального мира VRChat.
Эмулятор реализован в шейдере в форме собственной динамической текстуры (Unity Custom Render Texture), дополненной предоставляемыми для VRChat скриптами Udon, задействованными для управления эмулятором во время его выполнения. Содержимое оперативной памяти и состояние процессора эмулируемой системы сохраняется в форме текстуры, размером 2048x2048 пикселей. Эмулируемый процессор работает с частотой 250 kHz.
Помимо Linux в эмуялторе также может быть запущен Micropython.
Для организации постоянного хранения данных с поддержкой чтения и записи применяется трюк, связанный с использованием объекта Camera, привязанного к прямоугольной области, генерируемой шейдером, и направлением вывода отрисовываемой текстуры на вход шейдера. Таким образом любой пиксель, записанный в процессе выполнения пиксельного шейдера, может быть прочитан при обработке следующего кадра.
При применении пиксельных шейдеров для каждого пикселя текстуры параллельно запускается отдельный экземпляр шейдера.
Данная особенность существенно усложняет реализацию и требует отдельной координации состояния всей эмулируемой системы и сопоставления позиции обрабатываемого пикселя с закодированными в нём состоянием CPU или содержимым ОЗУ эмулируемой системы (каждый пиксель может кодировать 128 бит информации). Код шейдера при этом требует включения огромного числа проверок, для упрощения реализации которых был задействован perl-препроцессор perlpp.Извините, данный ресурс не поддреживается. :(
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.pimaker.at/texts/...)
- OpenNews: Реализована загрузка ядра Linux на плате ESP32
- OpenNews: Android портирован для плат на архитектуре RISC-V
- OpenNews: Представлен RV64X, открытый GPU на базе технологий RISC-V
- OpenNews: MIPS Technologies прекращает развитие архитектуры MIPS в пользу RISC-V
- OpenNews: В OpenBSD добавлена начальная поддержка архитектуры RISC-V
Похожие новости:
- [Разработка игр, Unity, CGI (графика), Разработка под AR и VR] Материалы в Unity: Акрил
- [Разработка игр, Unity, CGI (графика), Разработка под AR и VR] Поговорим о шейдерах, их проектировании и Unity
- [Информационная безопасность, Программирование, Производство и разработка электроники, Гаджеты, Игры и игровые приставки] Часть 3: ESPboy2 — гаджет для ретро игр и экспериментов с IoT, новости проекта 2021
- Выпуск эмулятора QEMU 6.0
- [Программирование, Разработка под Android, Kotlin] Как можно использовать шейдеры в Android View и как Android View может использовать шейдеры (перевод)
- [Open source, Системное программирование, Разработка под Linux, Компьютерное железо, Процессоры] Опубликована ранняя версия неофициального эмулятора архитектуры Эльбрус 2000
- Выпуск BK 3.11.2101.8545, эмулятора компьютеров БК-0010 и БК-0011
- [Программирование, Компьютерное железо] Аппаратный эмулятор клавиатуры и мыши с интерфейсом USB
- [Разработка игр, Unity, Разработка под AR и VR] Мой топ полезных инструментов для Unity разработчика
- [Тестирование IT-систем, Разработка мобильных приложений, IT-инфраструктура, Разработка под Android, DevOps] VirtualBox — Запуск Android эмулятора в виртуальной среде для тестирования Android проекта
Теги для поиска: #_riscv, #_emulator, #_shader
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 03:07
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Опубликованы результаты эксперимента по организации запуска Linux внутри виртуального 3D-пространства многопользовательской online-игры VRChat, допускающей загрузку 3D-моделей со своими шейдерами. Для реализации задуманной идеи был создан эмулятор архитектуры RISC-V, выполняемый на стороне GPU в виде пиксельного (фрагментного) шейдера (VRChat не поддерживает вычислительные шейдеры и UAV). Код эмулятора опубликован под лицензией MIT. В основе эмулятора заложена реализация на языке Си, при создании которой, в свою очередь, использованы наработки минималистичного эмулятора riscv-rust, развиваемого на языке Rust. Подготовленный Си-код транслируется в пиксельный шейдер на языке HLSL, пригодный для загрузки в VRChat. В эмуляторе предоставляется полная поддержка архитектуры набора команд rv32imasu, блок управления памятью SV32 и минимальный набор периферийных устройств (UART и таймер). Подготовленных возможностей достаточно для загрузки ядра Linux 5.13.5 и базового окружения командной строки BusyBox, с которым можно взаимодействовать напрямую из виртуального мира VRChat. Эмулятор реализован в шейдере в форме собственной динамической текстуры (Unity Custom Render Texture), дополненной предоставляемыми для VRChat скриптами Udon, задействованными для управления эмулятором во время его выполнения. Содержимое оперативной памяти и состояние процессора эмулируемой системы сохраняется в форме текстуры, размером 2048x2048 пикселей. Эмулируемый процессор работает с частотой 250 kHz. Помимо Linux в эмуялторе также может быть запущен Micropython. Для организации постоянного хранения данных с поддержкой чтения и записи применяется трюк, связанный с использованием объекта Camera, привязанного к прямоугольной области, генерируемой шейдером, и направлением вывода отрисовываемой текстуры на вход шейдера. Таким образом любой пиксель, записанный в процессе выполнения пиксельного шейдера, может быть прочитан при обработке следующего кадра. При применении пиксельных шейдеров для каждого пикселя текстуры параллельно запускается отдельный экземпляр шейдера. Данная особенность существенно усложняет реализацию и требует отдельной координации состояния всей эмулируемой системы и сопоставления позиции обрабатываемого пикселя с закодированными в нём состоянием CPU или содержимым ОЗУ эмулируемой системы (каждый пиксель может кодировать 128 бит информации). Код шейдера при этом требует включения огромного числа проверок, для упрощения реализации которых был задействован perl-препроцессор perlpp.Извините, данный ресурс не поддреживается. :( =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 03:07
Часовой пояс: UTC + 5