Второй летний месяц закончился, а значит, можно подводить итоги. Приступаем!
RPCS3Эмулятор PlayStation 3 развивается быстрыми, стабильными темпами. За прошедший месяц было совершено порядка 200 коммитов в основную ветку развития. Основные изменения:
Благодаря всем этим изменениям такие игры, как Demon's Souls и Persona 5, стали практически играбельными на не самом топовом железе!.Dolphin.Эмулятор GameCube / Wii традиционно выдает сотни коммитов в месяц. Но в этом месяце произошло особое событие, которое сейчас и рассмотрим.Убершейдеры (смешное название, правда?). Начнем с того, что GameCube - одна из первых консолей с программируемым графическим конвейером, так называемым TEV юнитом (Texture EnVironment). Это означает, что в процессе эмуляции необходимо дизассемблировать микрокод GPU консоли, разбирать его и воссоздавать на современном GLSL / HLSL в виде фрагментных (пиксельных) и вершинных шейдеров. Казалось бы, всё хорошо и замечательно работает, но есть одна проблема: сгенерированные шейдеры должны скомпилироваться драйвером вашей видеокарты, используя при этом ЦП. В графически тяжелых играх каждый спецэффект, как то взрыв, отражение, блик и т.д. может порождать собственный шейдер, который должен быть тут же скомпилирован. К чему же это приводит?.
.Неприятные микрофризы в процессе игры, которые ломают весь геймплей. Разработчики рассматривали несколько вариантов решения данной проблемы:
1. Скомпилировать все шейдеры для всех игр, для различных конфигураций ПК и версий драйверов и хранить их в кэше. Звучит просто, не правда ли? Однако это безумная затея: возможных комбинаций больше, чем песчинок на планете Земля...
2. Предугадать, какие шейдеры требует игра. На самом деле, решение очень сложное, практически нереализуемое. Единственный способ точно узнать, какие шейдеры могут понадобиться игре в различных ситуациях - это пройти её от начала и до конца.
3. Расшаривание шейдеров. Идея заключается в том, что каждому шейдеру можно присвоить UID (Unique ID), и компилировать его перед запуском игры. Решение теоретически должно сработать, однако код графической части эмулятора постоянно изменяется, и не факт, что в скором времени не придется избавляться от UID.
4. Асинхронная компиляция шейдеров. Было реализовано в одном из форков эмулятора разработчиком Tino. Идея заключается в том, чтобы игнорировать компиляцию нового шейдера в тот момент, когда это требуется, а продолжать использовать предыдущий. Новый шейдер компилируется в отдельном потоке, затем применяется после завершения процесса.5. Решение. Написать интерпретатор графического конвейераGameCube /Wii в шейдерах и запускать его на видеокарте. Идея просто безумная, но тем она интереснее для реализации :D Работы в данном направлении были начаты еще в далеком 2015 году разработчикомphire, и доведены до логического завершения разработчикомStenzek. И это действительно работает!.PCSX2
Эмулятор PlayStation 2 развивается достаточно медленно, всего 24 коммита за месяц. Из заметного:
.PPSSPP.Эмулятор PSP недалеко ушел от своего старшего брата, всего 52 коммита:
Xenia - Cxbx-Reloaded
Эмулятор Xbox 360 снова не может порадовать большим прогрессом. Из заметного: исправлены темные цвета в Vulkan рендерере, а также белые рамки вокруг некоторых текстур, добавлена WIP реализация NtProtectVirtualMemory.Эмулятор Xbox выдал в этом месяце 116 коммитов, неплохой результат. Из наиболее заметных изменений - огромные улучшения в HLE эмуляции звука, а также большой объем работ проведен в LLE эмуляции графического процессора..Cemu.Очередной публичный релиз версии 1.8.2. Улучшена производительность рекомпилятора, улучшена эмуляция звука, а также программного декодирования видео. Из наиболее приятных измененний - начаты работы по поддержке RPL библиотек (по аналогии с SPRX модулями в RPCS3). В настоящее время неюзабельно, но в будущем использование LLE-модулей вместо HLE может серьезно улучшить совместимость эмулятора. Ну и, по традиции, превью новой версии:.Вот таким насыщенным получился июль, начинаем мониторить август.Источник
Читайте также
Последние новости