Changes: - Added ZiNc interface; - Added bilinear texture filtering; - Added high precision vertex coords drawing mode (pcsxr); - Added texture caching; - Added support for mice/joysticks; - Added an additional page for the hotkeys; - Fixed gun positioning; - Added gun crosshairs (9 crosshairs); - Added output for messages from the emulator as well as my other plugins; - Added "Full VRAM" drawing mode; - Added wireframe drawing mode; - Disabled VSync when "Fast forward" is enabled; - Fixed window drawing algorithm on additional display on multi-display systems; - Added picture mirroring; - Added an alternate way of disabling screensaver/dpms under Windows; - Many small bugfixes;
Версия 1.40.
Изменения: - Добавил ZiNc интерфейс; - Реализовал билинейную фильтрацию текстур; - Добавил режим повышенной точности координат (pcsxr); - Задействовал текстурное кэширование; - Добавил поддержку мышек/джойстиков; - Добавил дополнительную страницу для горячих клавиш; - Починил позиционирование прицела пистолета; - Добавил прицелы пистолета (9 штук); - Добавил вывод сообщений получаемых от эмулятора и других моих плагинов; - Добавил режим отображения всей видеопамяти; - Добавил каркасный режим отрисовки; - Отключение VSync при задействовании "Fast forward"; - Починил логику отображения окна на дополнительных дисплеях; - Добавил отзеркаливание картинки; - Реализовал альтернативное отключение screensaver/dpms под Windows; - Много мелких исправлений;
Изменений очень много и в основном они незаметны на глаз. Надеюсь, что отныне плагин перестанет играть в прятки (пропадать из списка в эмуляторе).
Вследствие повышения точности и плагин стал медленнее, постараюсь к следующему обновлению поискать пути для ускорения, но в успех верится как-то с трудом.
Я добавил циферку '1' в номере версии, наверное это внесёт некоторую путаницу, но я просто привёл номер к стандарту PSEmuPro.
Надо сказать, я не успеваю за исследованиями, в релизе не реализованы полноценное альфа смешивание и стереорендерер. Альфа смешивание я планирую в следующем релизе, а вот насчёт стереорендерера... если уж многие жалуются на то что плагин уже медленнен, то к двойному потреблению ресурсов вообще никто не готов я думаю. Новые исследования замедляют работу над реализацией текущих работ, которые в свою очередь замедляют новые исследования. Наиболее интересным из новых исследований является добавление Z буфера для полного решения проблемы неправильной сортировки полигонов. Показать мне пока что нечего, могу только сказать что это возможно в принципе (с хаками), хотя и утомительно.
Так же интересны методы улучшения не имеющие отношения к gpu, например уменьшение времени подгрузок во время игры. Время загрузки между уровнями меня не волнует нисколько, но вот когда игра на несколько секунд замирает в самый неподходящий момент это очень неприятно. В качестве примеров могу привести WWF: The Arcade Game и MKT. Думаю можно будет сделать базу соответствующих пересылок для этих игр и до минимума уменьшать время пересылок из цдром в память и из памяти в видеопамять. Эксперименты показывают, что это вполне реализуемо без особых ухищрений или потери совместимости.
Добавил поддержку подмены текстур в экспериментальном режиме.
Принцип прост: - Включаем режим сбора текстур. - Играем некоторое время, чтобы сохранить все используемые игрой текстурки. - Редактируем/подменяем текстурки. - Включаем режим подмены и радуемся результату.
Получается примерно так:
Плюсов на данный момент только два: - Сам факт подмены текстур. - Используются полноцветные 888 текстурки вместо 4/8/15 битных.
Следующим шагом будет поддержка текстур повышенного разрешения, ну и заодно ускорение за счёт кэширования, так как на данный момент работает не шибко быстро, из-за большого объёма просчёта md5 текстур. Есть ещё некоторые проблемные места, надеюсь получится удачно выкрутится.
Всем привет, решил вот отчитаться об очередном методе улучшения качества картинки. Занимался я им где-то пол года назад, а рассказываю только сейчас, но лучше поздно чем никогда. Сразу скажу, что потратил немало времени, но он провалился и на данный момент заморожен и отложен в долгий ящик.
Идею метода можно описать так - построение промежуточных кадров с целью повышения реального fps до 60/50.
Сначала небольшой экскурс, чтобы было понятно, что, как и зачем. Из-за ограниченности ресурсов приставки большая часть игр имеет пониженную скорость смены кадров, 30/25 или меньше, вместо положенных 60/50. Таким образом выигрывается время, достаточное для полного просчёта и отрисовки кадра. Естественно, что для эмуляции подобное не имеет смысла и было бы логично как-то попытаться исправить сей недостаток. При удачной реализации это большой скачёк в качестве, сравнимый разве что с повышенным внутренним разрешением. Чем лучше графика, тем больше вероятность сильно заниженной смены кадров, так что вполне можно оперировать правилом - "в игре хорошая графика? - наш клиент." При очевидных достоинствах, метод так же имеет и очевидный недостаток - небольшой лаг, длинной как-раз в разницу между текущим и эталонным фпс, но игр, критичных к такому лагу очень и очень немного.
Вариантов решения я вижу как минимум три: 1. Построение промежуточных кадров методом анализа перемещения пикселей результирующих изображений от кадра к кадру (насколько я понимаю в современных телевизорах соответствующая техника реализована и называется она Trimension DNM/Motion Plus/TruMotion). 2. Построение промежуточных кадров методом анализа перемещения примитивов от кадра к кадру. 3. Моддинг игр (уменьшение коэффициента приращения времени и повышение частоты смены картинки до 60/50 кадров в секунду и т.д.).
Я выбрал второй вариант и вот что у меня получилось, смотреть имеет смысл персонажа и треть экрана вокруг него, где картинка не повреждена.
Если коротко, то оказалось практически невозможным определить куда убежали примитивы в последующем кадре, что естественно не позволяет правильно построить промежуточную сцену и приводит к многочисленным артефактам.
Остальные два варианта я не пробовал, хотя и для пробного решения первого метода маэстро gl_wizard поделился со мной соответствующим шейдером, нету сил и времени. Проще подождать, когда кто-то наконец-то уже его напишет. Насчёт моддинга всё ещё сложнее, во-первых пока не попробуешь, не очень ясно насколько это реально, во-вторых видимо сцена psx настолько сократилась, что psx хакеры повымирали как класc.
Кстати есть забавный нюанс, для построения промежуточных кадров понадобилась запись команд gpu, что в конечном итоге натолкнуло на мысль о полной записи, вместо записи видео в пиксельном виде. Плюсов предостаточно, это и возможность повтора события, и запись с целью последующего воспроизведения с изменёнными настройками, отсутствие потери качества и т.д. Мне показалось, что это достаточно забавная фишка и было приятно допиливая что-то одно, параллельно придумать нечто новое. И что же вы думаете? Не более чем через неделю после этого я набрёл на GPURecorder/GPUPlayer от некоего DarkMan, датированный, по-моему, аж 2003-м годом. Воистину всё уже написано до нас. Может и добавлю однажды такую фичу в релиз, авось пригодится кому-нибудь.
Такс, ну вот наконец-то у меня дошли руки в определённой степени добить то, что вы называете "кривыми"/"дёрганными" текстурами. Проблема всяческих "дёрганий" комплексная, избавится от них совсем и во всех абсолютно играх не получится, но вот свести к минимуму можно. Работы до конечного результата ещё прилично, то и дело натыкаешься на какие-то грабли, но мне уже есть что показать.
Слева оригинальные картинки, справа картинки с более точным текстурированием.
В продолжение темы точного текстурирования покажу видео из игры Medal Of Honor (2x2). На картинке справа очень хорошо видно практически полное отсутствие "искривлений"/"дрожаний" текстур. Здесь текстурирование точное, и потерю производительности я пока что не мерял, но думаю она будет немалой.
Ну и заодно картинки Threads of Fate с точным текстурированием.
И Colin McRae Rally 2.0.
Как всегда у меня тут мелкие бажки при использовании повышенного внутреннего, в виде лишних линий, но ничего, когда-нибудь починим.
Добрался до буфера глубины (Z-Buffer), только для того, пожалуй, чтобы показать вам картинки. Итак, думаю все знают, что на консоли его нету, все полигоны там сортируются средней точкой и выводятся от дальнего к ближнему. Если полигоны маленькие, то картинка вполне себе приемлима и не имеет артефактов, а вот если большие, да ещё и удалённость от них достаточная - сортировка начинает давать сбой, дальние полигоны перекрывают ближние. В отличие от консольной сортировки полигонов буфер глубины пиксельный, что привносит так необходимую для psx стабильность картинки и позволяет не только выводить полигоны в правильном порядке, но и сводить к минимуму дрожания по глубине.
Вариантов решения проблемы два: - делить все полигончики на более мелкие и пересортировывать. - задействовать буфер глубины.
Я покажу второй вариант, естественно, что я выбирал локации, где баги наиболее заметны. Вообще, консоль ну никак не рассчитана на использование буфера глубины, и маловероятно, что я смогу починить все сопутствующие баги. Чудо скорее всего не произойдёт.
Итак, слева картинка консоли, справа задействован буфер глубины.
Twisted Metal 2 (стекло ближе потолка)
Tomb Raider - The Last Revelation (ноги ближе ступеньки)
Надоели ужасного качества картинки сейвстейтов и я их переделал. В интерфейсе PSEmuPro для картинки зарезервировано всего 128*96*3 байт и при сохранении в сыром формате это даёт картинку размером 128х96, что и обуславливает соответствующее качество. Для повышения качества я просто сохраняю картинку в указанную область памяти в сжатом виде (jpeg) с разрешением 640х480. В плане совместимости всё нормально, мой плагин может грузить как картинки старого формата, так и нового, но вот другие плагины будут показывать мусор, что меня ни капли не волнует.
Вот картинки показывающие разницу, слева стандартный метод, справа со сжатием:
Провёл эксперимент по модификации внутренних пропорций картинки, в принципе в части игр это возможно вполне безболезненно. Исключениями являются игры, в которых используются высокоточные методы отсечения полигонов по области видимости, в этом случае становится виден сам процесс отсечения и исправить это без модифицирования кода самой игры невозможно. Проблемными являются также игры, использующие в своей основе спрайты или дма пересылки в видеопамять и 3д графику поверх.
На примере Quake 2 это выглядит так:
Syphon Filter:
На видео видно то, что остались растянутыми спрайты-надписи, это тоже можно исправить, но особого смысла не вижу. Конкретно это видео к видео плагину никакого отношения не имеет, все преобразования идут в эмуляторе, но для того чтобы восстановить пропорции тех примитивов что получились растянуты, он всё-таки понадобится.
Добавил опцию для установки внутренних пропорций 16:9 в pcsxr начиная с коммита номер 78188. Configuration->CPU->Widescreen (GTE Hack). В gpu плагине нужно выставить разрешение с пропорциями 16:9 (например 853x480) и отключить (None) корректировку пропорций картинки (Aspect ration correction). Ещё раз повторюсь, это хак и не для всех игр применение данной фичи пройдёт безболезненно.
Набросал режим отрисовки парных треугольников квадами. Фича старая и давно есть в gpuPeopsSoft (только для текстур), причём даже включена по умолчанию по-моему, теперь есть и у меня. Что интересно, этот метод улучшения картинки вдобавок немножко ускоряет скорость отрисовки, нечасто такое встретишь. Реализовано пока что только в экспериментальном виде и показывать скриншоты игр я ешё не готов. Очень жаль, что отрисовка парными треугольниками используется не так часто как хотелось бы.
Вот так выглядят перпендикулярные взгляду полигоны:
Так выглядит повёрнутые полигоны, если отрисовывать треугольниками (как на консоли):
А так если отрисовывать квадом:
Процесс растеризации: Слева отрисовка треугольниками (как на консоли), справа квадом.
Version 1.44. WARNING: some features are incomplete and disabled, will be finised and enabled in the future releases.
Changes: - Configuration dialog was ported to gtk3; - Improved interlaced mode emulation; - Fixed dithering mode for certain primitives; - Added dithering mode selection; - Fixed setting the negative offset and screen scaling values; - Added the quads rendering mode; - Added and divided video memory displaying/writing modes to 4-bit, 8-bit, 16-bit and 24-bit; - Fixed shader parameters; - Added experimental perspective-correct texture mapping; - Added "RA 2x", "Scale4x", "Hq4x" screen filters; - Added contrast adjustment; - Added various output modes for windowed mode; - Fixed window rotation reset after opening the settings dialog in ZiNc; - Fixed ZiNc support for Linux builds; - Fixed windows operation logic for Windows builds; - Readded minimize/close/maximize window buttons for Windows builds; - Rewritten savestates picture saving algorithm for the higher quality (not compatible with other plugins anymore); - Improved hotkeys support; - Added russian language; - Small bugfixes and improvements;
Версия 1.44. ВНИМАНИЕ: некоторые улучшения/возможности отключены и будут включатся в следующих релизах только при достижении должного качества.
Изменения: - Диалог настройки портирован на gtk3; - Улучшена эмуляция чересстрочного режима; - Исправлен режим дизеринга для некоторых примитивов; - Добавлен выбор режима дизеринга; - Исправлена установка отрицательных значений смещения и масштабирования экрана; - Добавлен режим отрисовки двойных треугольников квадами; - Добавлены и разделены режимы отображения/записи всей видеопамяти на 4-х, 8-ми, 15-ти и 24-х битные; - Исправлены параметры шейдера; - Добавлено перспективно-корректное текстурирование (экспериментально); - Добавлены экранные фильтры "RA 2x", "Scale4x", "Hq4x"; - Добавлена регулировка контрастности; - Добавлены варианты вывода в оконном режиме; - Исправлен сброс поворота окна после вызова диалога настройки для ZiNc; - Исправлена работа с ZiNc под Linux; - Исправлена логика работы с окнами под Windows; - Возвращены пропавшие кнопки минимизации/закрытия/разворачивания окна под Windows; - Переделан алгоритм сохранения картинки стейта с целью повышения качества (потеряна совместимость с другими плагинами); - Улучшена работа "горячих" клавиш; - Добавлена локализация на русский язык; - Мелкие исправления и улучшения;
Версия 1.46. ВНИМАНИЕ: некоторые улучшения/возможности отключены начиная с версии 1.44 и будут включатся в следующих релизах только при достижении должного качества.
Изменения: - Изменил метод отсечения картинки (убрал glClipPlane, чтобы избавится от строчки "gl_ClipVertex=gl_ModelViewMatrix*gl_Vertex;" в шейдерах или багов при её отсутствии);
Документация и подсказки в диалоге настройки могут содержать ошибки или не содержать информации по некоторым возможностям, исправлять некогда.
Изменения: - Исправлены артефакты при использовании повышенного внутреннего разрешения; - Увеличено максимально возможное внутреннее разрешение до 16x16; - Добавлена возможность установки произвольных пропорций картинки; - Исправлена загрузка шейдеров большого размера; - Исправлен дизеринг; - Реализован многопоточный рендерер;
Changes: - Fixed most of the increased internal resolution artifacts; - Increased maximal internal resolution to 16x16; - Added an option to set a custom aspect ratio; - Fixed the loading of large shaders; - Fixed dithering mode; - Multi-threaded renderer implemented;
Из менее интересных для пользователя возможностей реализованы режимы отладочной отрисовки.
Реализован многопоточный блиттер, но прироста в скорости особо не наблюдается, так что включать НЕ следует.
Выставляю обычно следующие настройки: (для ЭЛТ телевизора билинейную фильтрацию отключаю)
При использовании многопоточности следует помнить, что рендерер займёт все эти потоки на 100%. Для достижения максимальной производительности также необходимо отключить энергосберегающие технологии.
Переключение внутреннего разрешение "на лету" не реализовано. Версия для Windows выйдет тогда, когда у меня получится решить все возникшие проблемы со сборкой.
Документация и подсказки в диалоге настройки могут содержать ошибки или не содержать информации по некоторым возможностям, исправлять некогда.
При использовании многопоточности следует помнить:
Установка количества потоков выше количества физических ядер приводит к снижению FPS;
Рендерер занимает все указанные потоки на 100%;
Для внутреннего разрешения 1x1 многопоточность приводит к снижению FPS;
Чем выше внутреннее разрешение, тем больше прирост от многопоточности.
Для достижения максимальной производительности необходимо отключить энергосберегающие технологии.
Многопоточный блиттер повышает FPS только при очень высоких разрешениях, так что включать НЕ следует.
Под ОС Linux есть неприятный момент - эмулятор PCSXR устанавливает текущим каталог ./pcsxr/plugins, а эмулятор EPSXE устанавливает текущим каталог ./epsxe, пока что решается созданием символических ссылок.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения