Я продолжаю тему программного эмулятора для PlayStation 1, PlayStation 2 и PlayStation Portable — Omega Red. Более подробно:
- Omega Red + PS1 эмулятор = Кодзима гений
- PS2/PSP эмулятор + game play streaming (YouTube, Facebook, Twitch) = новая версия Omega Red
- PS2/PSP эмулятор + Google Drive + YouTube = «безумие» продолжается
- Как я подружил PlayStation 2 и PlayStation Portable (спойлер — объединил в один эмулятор)
- Красный Омега PS2 эмулятор
Данную публикацию я написал в связи с заменой программного графического рендерера для PlayStation 1 на графический рендерер с DirectX11.
Добро пожаловать под «кат».
Статья представляет результат моего исследования в улучшении графической составляющей эмулятора PlayStation 1. Предыдущее решение было реализованно на программной растеризации полигонов и текстур, и как результат, при попытке отображения на экран с большим разрешением, чем оригинальное ТВ разрешение, на результирующем изображений возникали артефакты пикселизации полигонов и текстур. Очевидным решением является замена программного рендерера на аппаратный, способный на более точную растеризацию в широком диапазоне целевых разрешений. Существующие решения аппаратной растеризации для PCSX я нашёл не подходящими — они используют OpenGL драйвер для графического рендеринга, что создаёт проблему совместимости с базовым кодом эмулятора Omega Red на WPF, DirectX9 и DirectX11. Было лишь одно решение — написать графический рендерер с DirectX11, что я и сделал.
Результат получился весьма удачным:
Программный рендерер:
![](https://habrastorage.org/webt/fl/4r/9a/fl4r9agk5n9ieux_4s4fleowqsi.jpeg)
DirectX11 рендерер:
![](https://habrastorage.org/webt/n8/p3/zm/n8p3zmgt4l9whev8r1mf2-rt760.jpeg)
Программный рендерер:
![](https://habrastorage.org/webt/ym/oo/4h/ymoo4hkszatlezaikj97olcdq_8.jpeg)
DirectX11 рендерер:
![](https://habrastorage.org/webt/ie/sf/pb/iesfpbyrgeq-8tkkrvpfganlt1w.jpeg)
Программный рендерер:
![](https://habrastorage.org/webt/ah/ls/qo/ahlsqoavf2qah-ezpex32ftl6gu.jpeg)
DirectX11 рендерер:
![](https://habrastorage.org/webt/ud/sb/ad/udsbadhee_fhscujlx0vaiqxa3u.jpeg)
Демонстрацию сравнения разницы рендереров можно увидеть в демо:
В настоящий момент программа доступна по ссылке: Omega Red и представлена на GitHub: OmegaRed.
barnes
Не помешает постобработка, и более продвинутая фильтрация текстур аля катмулл-ром.