Translated by F1ReB4LL, R4kk00n.
I like PlayStation, its games an everything connected with it,
looks like I have some good memories left from childhood.
I didn't liked emulation precise and, in general, wanted to
do something by myself.
---------------------------------------
Target.
---------------------------------------
The target is to make a plugin, which emulates the PSX GPU
with maximum precision, and using of all the methods of
grapics improvement.
---------------------------------------
Realization.
---------------------------------------
Setup dialogue.
GUI is written on gtk, this, of course, requires installation
of gtk-runtime, I've seen lots of comments of this, I can
only say, that if you can download an updated version of
DirectX every month, so you can download GTK as well and use
the GUI, if only you want it. If not - i won't insist on it.
Why GTK? It's an easy question.
Because the plugin is
cross-platform and I'm not going to write a GUI on a native API
for _every_ OS, I'd better use this time for emulation improvement.
Emulation.
You should already understood this by reading the Target section,
but I'll better write it directly: I don't care, how much
resources will be needed for emulation and that the plugin is
already slow enough.
People often ask, if the plugin will be faster.
I swear, that it will be slower.
For now only the geometry is rendered correctly, PSX GPU implements some exotic
blending algorithm and my research shows that we'll need noticeably more
operations per pixel as we approach the correct color rendering.
Precise rendering timings are not implemented either.
The calculations are available, but there is no appropriate interface in the emulator,
plus, if implemented, it would make rendering even slower.
Implemented, though disabled, a texture cache emulation.
There is no visible improvement, just an increase in CPU load.
Picture enhancement methods.
Internal resolution.
The most powerful method is an increase of the internal resolution.
This method allows you to increase the resolution of the image independently
in width and height by an arbitrary integer factor. In the manual I wrote that
the best in my opinion is the resolution of 2x2.
This does not mean that I cannot add larger factors, although it is somewhat inconvenient.
I believe that further increase in resolution degrades the image, as "soapy" textures
with perfect geometry leave a bad impression. Generally there is no restriction,
I can make it 8x8, which is equal to setting "Ultra / Ultra" (I guess)
in the hardware plugin OGL2 by Pete Bernert, but I doubt you can find a
computer capable of at least 3 fps in this resolution.
24-bit renderer.
Console has a 15-bit renderer, that's why Gouraud-shaded polygons have so
unpleasant colors. When you turn this mode, renderer goes into 24-bit mode
and the picture in this case is not only looks as good as on hardware plugins,
but also doesn't have their drawbacks, you should turn "Gouraud shaded primitives"
option for this. If you turn the "All primitives" mode, I'll tear your hands away
,
because in this case you'll see the artefacts similar to hardware plugins, like
various different colored borders around the picture.
Texture bilinear filtering.
The translators can't translate my text.
Filters.
Then goes filters, btw, very good ones: Super Eagle, Sal, Hq, Scale.
For those who like them, I don't.
But there are 'fans' of them, so I've decided to add them.
I should say, that they're also very hardware-dependant, especially while
working in pair with the increased internal resolution.
Shaders.
Realized a partial support for shaders written for gpuPeteOGL2,
Only glsl shaders are supported.
Issues.
Possible aspect ratio issues.
TV is something
, it's totally useless to test an output on some particular
TV, because every TV has a slightly (or totally) different picture (in terms
of aspect and picture position), due to different factory settings and custom
user settings, I've tried to make the picture "like on some average TV",
but I'm not sure in anything, some output measurements should also be redone.
Some interlacing issues,
because the counters are hidden from gpu, it's not possible to determine
some moments precisely, which may affect/affects the picture.
***********************************************************************************
Мне нравится PlayStation, игры на ней и вообще всё что с ней связано,
видимо с детства остались хорошие воспоминания.
Меня не устраивала точность эмуляции, да и вообще хотелось
сделать что-то самому.
---------------------------------------
Цель.
---------------------------------------
Целью является создание плагина максимально точно эмулирующего psx gpu,
а так же параллельное использование всех методов улучшения качества изображения.
---------------------------------------
Реализация.
---------------------------------------
Диалог настройки.
Гуи написано на gtk, что естественно требует установки gtk-runtime,
я видел всякие отзывы по этому поводу, возразить могу что для
вас не составляет труда ставить какой-нибудь дайрект икс
или бесконечно копировать что-то типа d3d9_хлам.dll,
так что если есть интерес - ставьте и пользуйтесь гуи,
нету - заставлять никого у меня никакого желания нету.
Почему gtk, это простой вопрос, потому что плагин кроссплатформенный
и я не собираюсь писать под все системы гуи на родном апи,
лучше я потрачу время на совершенствование эмуляции.
Эмуляция.
Думаю из цели видно, но напишу прямо, мне абсолютно безразлично
сколько ресурсов понадобится для эмуляции и то что плагин уже достаточно
медленен на данный момент.
Часто спрашивают будет ли плагин быстрее, гарантирую что он будет медленнее.
На данный момент реализована только геометрическая точность отрисовки,
psx gpu имеет какой-то странный алгоритм смешивания и исследования показали
что операций на пиксель, по мере реализации цветовой точности, заметно прибавится.
Так же не реализован тайминг отрисовки, подсчёты в принципе есть,
но эмулятор всё равно не предоставляет подобного интерфейса,
это так же прибавит тормозов в случае реализации.
Реализована, но выключена эмуляция текстурного кэша,
так как никакой пользы это не приносит, только увеличивает нагрузку на цпу.
Методы улучшения изображения.
Внутреннее разрешение.
Самым сильным методом улучшения является увеличение внутреннего разрешения.
Метод позволяет увеличивать разрешение отрисовываемой картинки
по ширине и высоте на произвольный целый множитель.
В инструкции я писал что оптимальным по-моему мнению является разрешение 2x2.
Это совсем не значит что я не могу сделать больше, хотя это и доставляет неудобства,
просто по мне так дальнейшее увеличение пожалуй ухудшает картинку,
так как "мыльные" текстуры и идеальная геометрия дают плохие впечатления.
Вообще тут никакого ограничения нету, можно сделать 8x8,
что равно установке Ultra/Ultra (вроде бы) в аппаратном плагине Ogl2 от Pete Bernert,
но вот найдёте ли вы компьютер, выдаюший вам хотя бы 3 фпс на таком разрешении?
24-х битный рендерер.
На консоли рендерер 15-ти битный, в следствие чего на полигонах закрашенных по Гуро
видны резкие переходы цвета. При включении режима рендерер
переключается в 24-х битный режим и качество картинки в этом случае
мало того что не уступает картинке на аппаратном плагине,
но и абсолютно лишено его недостатков, для этого следует включать
режим "Gouraud shaded primitives", тем кто будет включать режим
"All primitives" буду бить по рукам
, так как в этом случае проявляются артефакты
присущие аппаратным плагинам в виде различных бордюров вокруг изображения
отличающихся от оного цветом, хотя стоит отметить иногда он даёт несколько лучшую
картинку, например в FF9 ( карта и тень персонажа ).
Текстурная билинейная фильтрация.
Консоль округляет текстурные кординаты, вследствие чего чётко видны переходы между цветами текстуры. Если же использовать дробную часть в виде весового коэффициента для смешивания соседних цветов текстуры, получаются плавные переходы из одного цвета в другой. Повышение качества достаточно сильное, особенно для полигонов, чьи размеры много превышают разрешение текстуры или при использовании повышенного внуреннего разрешения.
Фильтры.
Далее идут фильтры, очень надо сказать неплохие фильтры Super Eagle, Sal, Hq, Scale.
На любителя, я чаще всего играю без них, выбирать надо самому.
Но так как явно есть поклонники этих фильтров я решил добавить.
Надо отметить что они так же очень ресурсоёмкие,
тем более в паре с увеличенным внутренним разрешением.
Шейдеры.
Реализовал поддержку шейдеров написанных для gpuPeteOGL2.
Поддерживаются только glsl шейдеры.
Проблемы.
Возможные погрешности пропорций картинок.
Телевизор это нечто
, тестить вывод на каком-то определённом
телевизоре бессмысленно ибо картинки на них всегда отличаются,
это и заводские настройки и юзерские ручки,
я попытался подогнать картинку под некий стреднестатический телевизор,
но уверенности нету ни в чём, некоторые цифры
связанные с выводом так же подлежат пересчёту.
Есть некоторые нюансы с эмуляцией интерлейса,
так как счётчики скрыты от gpu, невозможно определить некоторые моменты точно,
что может сказываться/сказывается на каринке.
------------------------------------------------------------------------------
cpu: Intel Core Quad 9300 2.5Ghz.
ram: 4gb dual channel, OCZ 1333Hz.
gpu: Nvidia GeForce 9800Gtx, 768Mb.