Перейти к содержанию

Fo2: Как подружить CnC ddraw и sfall (враппер и шейдеры)


Рекомендуемые сообщения

1 час назад, randomdude сказал:

Видеокартой AMD, тем более с поддержкой FSR, не располагаю.

FSR 1.x завязан на DX11/Vulkan и работает на любой совместимой видеокарте, поэтому я про него и спрашиваю. Он чемто похож на lanczos(только их несколько разных и не разбираюсь) FSR 1/2/3 это совершенно разные апскейлеры и ненадо их путать, а еще сторонние реализации могут выглядеть совсем иначе. Я вас про эти шейдеры спрашивал


Помню видел гдето на гитхабе паки шейдеров готовых к употреблению, но найти не могу.

Изменено пользователем Nobi
Ссылка на комментарий

DX12 поддерживается в cnc-ddraw на любой ОС, где есть поддержка этого API, но есть два грустных нюанса:

 

1. Где-то в документации cnc-ddraw сказано, что DX12 на самом деле это DX9, на лету оборачиваемый в DX12, с не вполне понятной мне целью (чуть лучше совместимость с новыми ОС? производительность?)

 

2. В режиме DX9 / DX12 нет возможности грузить собственные шейдеры, там 4 штуки встроенных и все.

 

Так что, видимо, нет.

 

Цитата

FSR 1/2/3 это совершенно разные апскейлеры и ненадо их путать,

 

Спасибо, буду знать. Эх, предупредили бы сразу!

 

Цитата

Он чемто похож на lanczos

 

Ну вот притащенный мной сюда jinc2-fallout aka jinc2-modified это тоже "чем-то похож на lanczos", причем выложенную тут в треде версию до кровавых соплей улучшал RiskyJumps с Retroarch (я лишь нашел её в интернете), и картинку лучше чем с ней я пока еще не видал.

 

Попытки нагуглить порт FSR 1 в GLSL ни к чему не привели. Может, у вас получится?

 

Vulkan в cnc-ddraw вообще не поддерживается...

 

Цитата

 

Это на языке GLSL написано? Скидывайте в .\Shaders\имя-шейдера\имя-шейдера.glsl, включайте в cnc-ddraw и тестируйте.

 

Другой язык? Нет, не заработает.

 

Цитата

Помню видел гдето на гитхабе паки шейдеров готовых к употреблению, но найти не могу.

 

А если б вы читали мои сообщения внимательнее, то ссылку именно на них заметили бы там, где я рассуждал про шейдер ScaleFX: https://github.com/libretro/glsl-shaders

 

.glsl будут работать, .glslp -- нет, но об этом я уже упоминал.

 

Еще разных модификаций этих шейдеров пруд пруди на форумах RetroArch и в их дискорде... если найдете что-то, дающее картинку лучше, чем с Jinc2-fallout aka Jinc2-modified, то дайте знать. Все самые классные открытия обычно совершаются коллективно.

 

/EDIT/ Ваш FSR1 по ссылке это а) язык Slang б) шейдер многопроходный, то есть дважды "нет".

Изменено пользователем randomdude
Ссылка на комментарий
1 час назад, randomdude сказал:

А если б вы читали мои сообщения внимательнее

Ну так вы тоже не читаете.:grin:, ну или страницу не обновили когда мой пост был отредактирован. Про ScaleFX я уже давно наслышан(и вроде даже запускал(но это не точно) при тестировании паков на retropie), поэтому бегло прошелся.

 

1 час назад, randomdude сказал:

/EDIT/ Ваш FSR1 по ссылке это а) язык Slang б) шейдер многопроходный, то есть дважды "нет".

а вот это вот? https://gist.github.com/agyild/82219c545228d70c5604f865ce0b0ce5 только вот он заточен под mpv

Изменено пользователем Nobi
Ссылка на комментарий
Цитата

 

Работает, причем как-то по-чудному. Вот что у меня получилось при апскейле 1066x600 до 1920x1080:

 

https://i.postimg.cc/9CzPwM6z/FSR-1.png

https://i.postimg.cc/rq19Mb69/FSR-2.png

 

Буковки прилизанные, а все остальное больше похоже на резкие пиксели. Вроде бы очень хорошо передает пиксельную эстетику в нецелочисленном приближении?

 

А вот в целочисленном (960x540 ➤ 1920x1080) выглядит, как просто немного размытый Nearest Neighbor, сравнение:

 

https://i.postimg.cc/542cwL5Z/fsr-vs-nearest.png

Изменено пользователем randomdude
Ссылка на комментарий

там еще вот такое можно покрутить

// User variables - EASU
#define FSR_PQ 0 // Whether the source content has PQ gamma or not. Needs to be set to the same value for both passes. 0 or 1.
#define FSR_EASU_DERING 1 // If set to 0, disables deringing for a small increase in performance. 0 or 1.
#define FSR_EASU_SIMPLE_ANALYSIS 0 // If set to 1, uses a simpler single-pass direction and length analysis for an increase in performance. 0 or 1.
#define FSR_EASU_QUIT_EARLY 0 // If set to 1, uses bilinear filtering for non-edge pixels and skips EASU on those regions for an increase in performance. 0 or 1.

 

// User variables - RCAS
#define SHARPNESS 0.2 // Controls the amount of sharpening. The scale is {0.0 := maximum, to N>0, where N is the number of stops (halving) of the reduction of sharpness}. 0.0 to 2.0.
#define FSR_RCAS_DENOISE 1 // If set to 1, lessens the sharpening on noisy areas. Can be disabled for better performance. 0 or 1.
#define FSR_PQ 0 // Whether the source content has PQ gamma or not. Needs to be set to the same value for both passes. 0 or 1.

 

Изменено пользователем Nobi
Ссылка на комментарий
58 минут назад, randomdude сказал:

Как накрутите идеал -- обязательно отпишитесь.

Ну я как понял имеет смысл крутить только #define SHARPNESS все остальное только для повышения производительности. Как по мне впринципе ниче так, но до waifu2x еще очень далеко

Изменено пользователем Nobi
Ссылка на комментарий
1 час назад, randomdude сказал:

А вот в целочисленном (960x540 ➤ 1920x1080) выглядит, как просто немного размытый Nearest Neighbor, сравнение:

 

https://i.postimg.cc/542cwL5Z/fsr-vs-nearest.png

А знаете почему так? вы через браузер смотрите, а не через нормальный софт. Разница очень ощутима между ними.

 

image.png

Изменено пользователем Nobi
Ссылка на комментарий

Во-первых, мой браузер выводит изображения точка-в-точку.

 

Во-вторых, эти два скриншота я имел возможность рассмотреть в Photoshop под конским увеличением, пока их компоновал в одну картинку.

 

В-третьих, запустите наконец у себя саму игру, пропатченную под cnc-ddraw, поставьте режим FSR в разрешении 1/2 от разрешения монитора (аналог SCALE_2X), поиграйте немного, а потом в этом же разрешении переключитесь на Nearest Neighbor. Помедитируйте над впечатлениями.


В-четвертых, на вашей картинке именно то, о чем я и вел речь: "выглядит, как просто немного размытый Nearest Neighbor"

 

При нецелочисленном масштабировании, понятное дело, FSR выигрывает вчистую.

Ссылка на комментарий

Кароче я спать.

 

 

Самое главное что надо протестировать потом

5 часов назад, Nobi сказал:

Кстати, а как OBS Studio в такой связке chainload себя будет вести? Он ведь тоже там свою dll инжектит:scratch_one-s_head:С оконным вариантом там все понятно, а вот на фуллскрине...

 

(инжектор там вроде отдельным exe идет, можете попробовать им cnc-ddraw инжектить, но это как я понял не самый хороший вариант)

 

Ссылка на комментарий

По поводу шейдера FSR разработчик cnc-ddraw пишет:

 

Цитата

Just tested and that shader isn't working, it's not a valid format. When you use a shader with a bad format cnc-ddraw will just use the default shader (catmull-rom-bilinear)

 

Как я и говорил, это catmull-rom, внешне похожий на размытый nearest neighbor. FSR не работает, cnc-ddraw вместо него запускает дефолтный встроенный шейдер.

 

*     *     *

 

Ну что, не очень хорошие новости. NovaRain оперативно приделал к sFall 4.4.2 функцию загрузки сторонних библиотек и выложил тестовый билд.

 

Функция работает:

 

custom-dll.jpg

 

Но sFall 4.X для рисования использует во всех режимах DirectX 9, соответственно cnc-ddraw висит балластом и ничего не длает:

 

DX9-1.jpg

 

Про нужный нам режим 1 (или хотя бы 2 и 3, то есть DX7) конфиг sFall 4.X говорит:

 

"Modes 1, 2 and 3 are no longer supported"

 

Тут, видимо, совместимость cnc-ddraw с sFall 4 и заканчивается, потому что кому-то понадобилось полностью выбросить legacy-рендерер из игры.

 

Наслаждайтесь линейным фильтром и принудительным DX9...

 

Впрочем, может, NovaRain еще задумается о возврате Mode 1 чисто ради подключения cnc-ddraw. Посмотрим...

 

*    *    *

 

NovaRain ответил: шейдеры и cnc-ddraw ему неинтересны, ему было интересно попробовать проверить, загрузится ли сторонняя библиотека. Посоветовал пропатчить игру патчем от Мэша, включить HiResMode=0, и уже в f2_res_config.exe выбрать режим DX7 (то есть GRAPHICS_MODE=1 в f2_res.ini). Если не получится -- посоветовал руками патчить sFall 3.8.

 

Само собой ничего не заработало, хотя пока активен патч Мэша, все остальные параметры в f2_res.ini откликаются на изменения, как положено. Но игра продолжает упорно рисовать через DX9, какой режим в патче Мэша ни выбирай.

 

Похоже, подключение cnc-ddraw возможно лишь в sFall 5.

Изменено пользователем randomdude
Ссылка на комментарий
4 часа назад, Nobi сказал:

Вот так должен настоящий FSR выглядеть https://www.mediafire.com/file/492zhwhnsovvd11/FidelityFX.7z/file

 

Работает шейдер или нет, можно посмотреть в дебаг-логе cnc. Когда шейдер не работает, включается ему на замену встроенный catmull-rom. Можете включить его вручную, снять скриншоты и сравнить. Они совпадут. Я и так сразу сказал: работает как-то чудно. Потому что такую фильтрацию я уже раньше видел (catmull дефолтный) и насторожился. Ответ разраба, который обнаружил подставу, я выше привёл.

 

Тем временем NovaRain на гитхабе не врубается в суть проблемы и раздаёт неумные советы типа "вместо sfall 4 используйте sfall 3.8, там точно нет DX9" или "убедитесь, что fallout 2 вообще поддерживает cnc" (он в официальном списке поддерживаемых игр, и если бы голый FO2 не реагировал на cnc, то никогда бы cnc не завёлся и в sfall 5)

Изменено пользователем randomdude
Ссылка на комментарий

Без исправления DX7 можно дальше не мучать ж*пу. Можете к Сталину сходить и попросить его добавить в свою версию чаинлоад. https://gitflic.ru/project/fakelshub/sfall

 

Ну а мне с закрытыми исходниками не интересен sfall

df4de5e-ea0bf9b4-d4a8-4dd8-8a05-8a3349db

Изменено пользователем Nobi
Ссылка на комментарий

Мы с NovaRain могли не понять друг друга. Я  первым же постом просил загрузку левой .dll и перенаправленте туда вызовов, а он мог реализовать только загрузку без перенаправления.

 

Поскольку сам sfall работает по абсолютно такому же принципу, как и cnc-ddraw, я почему-то думал, что мы с NovaRain думаем об одном и том же. Тем более опция CustomDLLPath именно так реализована в dxwrapper.

 

Постоянная загрузка DX9 в sfall 4 может быть просто каким-то багом или побочкой — не факт, что рисование на экране во всех режимах идёт через DX9.

 

Я попробую вручную пропатчить sfall 4, иначе не разобраться.

 

1 час назад, Nobi сказал:

Клон гитхаба в домене .ru вместо, собственно, гитхаба — это для меня уже красный флаг, таким людям очень трудно бывает что-то объяснить. Сам прочтёт этот топик и решит, нужно ему или нет. Мне проще руками пропатчить.

 

1 час назад, Nobi сказал:

Ну а мне с закрытыми исходниками не интересен sfall

 

Если не секрет, почему?

 

Люди, которые в один прекрасный день форкают community-проект в closed source, чтобы потом мерджить чужие разработки и при этом не делиться своими, были и будут всегда. Это особенность склада личности, не имеющая отношения  к скиллам, философии и убеждениям человека (невольно вспоминаю Бориса Воронцова и всю драму вокруг ENB — от его пасты про верную азиатскую жену до принудительного показа почти что "политических" прокламаций при запуске последних версий ENB). Да, closed source в хобби-проектах это нехорошо, но нет, есть люди, которые по-другому физически не могут. 

 

Но если оно работает и не лезет в сеть, почему бы и не пользоваться, пока работает?

Изменено пользователем randomdude
Ссылка на комментарий
39 минут назад, randomdude сказал:

Если не секрет, почему?

 

39 минут назад, randomdude сказал:

Но если оно работает

Сегодня оно работает, а завтра скрипты будут компилироваться в непонятно что и непонятно как. Уже скриптовые моды Сталина отвалились от основной версии sfall по причине "Англичанка гадит" https://github.com/FalloutTeamX/sfall-Extended/commit/1112d334ebc5852fb9bc3947f34f19f10c987ee1#r66858747

Вот кому это нахрен надо?

 

 

39 минут назад, randomdude сказал:

Мне проще руками пропатчить.

Что насчет инжектора из OBS?(ладно, сам потестирую и раскажу че он там умеет)

Изменено пользователем Nobi
Ссылка на комментарий
2 часа назад, Nobi сказал:

 

Сегодня оно работает, а завтра скрипты будут компилироваться в непонятно что и непонятно как. 

Ну вот как только некий мод станет несовместимым с sfall 5 — так на sfall 4 и мигрирует.  А что работает с 5 версией, то пусть пока работает. Не вижу смысла предпочитать или недолюбливать один из форков по идеологическим причинам. 

2 часа назад, Nobi сказал:

 

Что насчет инжектора из OBS?(ладно, сам потестирую и раскажу че он там умеет)

Есть такая программа Wirecast, доступная для macOS и windows. Я для трансляций пользуюсь ею, а OBS считаю глючной дрянью. Ещё для повседневной жизни я предпочитаю macos на PC, а для запуска старых игр — соответствующее. Проблемы OBS под виндой оставлю идейным мазохистам.

Изменено пользователем randomdude
Ссылка на комментарий
55 минут назад, randomdude сказал:

Ну вот как только некий мод станет несовместимым с sfall 5 — так на sfall 4 и мигрирует.  А что работает с 5 версией, то пусть пока работает. Не вижу смысла предпочитать или недолюбливать один из форков по идеологическим причинам. 

Потом метаться будет поздно когда все будет прибито гвоздями к sfall5.

 

55 минут назад, randomdude сказал:

Есть такая программа Wirecast, доступная для macOS и windows. Я для трансляций пользуюсь ею, а OBS считаю глючной дрянью. Ещё для повседневной жизни я предпочитаю macos на PC, а для запуска старых игр — соответствующее. Проблемы OBS под виндой оставлю идейгым мазохистам, как и саму винду.

Да нам туn не стримить, а инжектить dll

 

Вот выдернул из OBS инжектор

https://www.mediafire.com/file/gqb9r4qveijh0g6/win-capture.7z/file

 

//Единица и ноль отвечают за режим safe/full(thread_id/process_id)
inject-helper32.exe dll 1 thread_id
inject-helper32.exe dll 0 process_id

//Чет непонятно что за офсеты она выдает и где они используются, видимо както связано с graphics-hook32.dll
get-graphics-offsets32.exe

 


Кароче это бессмысленно. Надо до инициализации видео dll грузить, а не после.

Изменено пользователем Nobi
Ссылка на комментарий
Цитата

Потом метаться будет поздно когда все будет прибито гвоздями к sfall5.

А можно объяснить как детсадовцу, что и к чему будет прибито гвоздями?

 

Похожие истории с форками и closed source многократно происходили в коммьюнити Skyrim, New Vegas, GTA и где только не. Если какой-то мод долгое время полагался на что-то, что потом ломалось или резко переобувалось на какие-то новые, не подходящие создателю мода принципы, то эту платформу бросали, и она загибалась. Учитывать пожелания создателей модов это головная боль разработчика платформы, а не наоборот. Никогда еще попытка разработчика навязывать мододелам неподходящие новые стандарты, просто потому что так захотелось, не увенчивалась успехом.

 

Когда тот же Воронцов сделал так, что ENB при запуске игры начал поверх экрана загрузки игры показывать пространные рассуждения на ломаном английском о лжи, правде, справедливости и прочую философию, абсолютно непонятную вне контекста драмы (и понятную максимум на 30% тем, кто знает контекст), коммьюнити буквально в течение нескольких месяцев разродилось новыми альтернативами, и все недовольные быстро съехали на них. Причем речь шла не о том, что платформа начала мешать модам, а лишь о том, что платформа начала транслировать текстовые сообщения о непонятных обидах разработчика в адрес неопределенного круга лиц.

 

Это так, просто самый смешной и известный пример.

 

Цитата

Да нам туn не стримить, а инжектить dll

 

А cnc-ddraw ничего не инжектит. Это просто еще одна библиотека, которая берет вызовы от sFall, колдует над ними, и по цепочке передает преобразованные вызовы на один из бэкендов по выбору пользователя (OpenGL, DirectX 9, DirectX 9-in-12, GDI). Если какой-то инжектор работал с Fallout 2 + sFall, он с вероятностью 99% будет работать и после добавления к конвееру cnc-ddraw. Уже, наверное, в седьмой раз одно и то же объясняю.

Изменено пользователем randomdude
Ссылка на комментарий

/UPD/

 

Вчера sFall 4 у меня патчиться не хотел, сегодня пропатчился и все работает через связку sFall4-cnc

 

sfall4-dd7.jpg

 

sfall4-dd7-2.jpg

 

Рендерер DX7 там никуда не девался, просто в DX7 режиме все равно грузятся библиотеки DX9 и ничего не делают. Это меня и обмануло.

 

Информация про "Mode 1/2/3 не поддерживаются" в ddraw.ini, видимо, всего лишь означает "DX7 в Win 7/10/11 нормально не работает, и разработчики sFall никак не могут на это повлиять" и эта формулировка тоже меня направила не в ту степь (а в sFall 5 в ddraw.ini написано просто, что Mode 1/2/3 это DX7 со всеми вытекающими, что соответствует правде). На стороне самой игры DX7 по-прежнему работает, и если его обернуть во что-то, что стабильно в Win 7/10/11 -- все тоже работает. Как, собственно, и в sFall 5.

 

Буду разбираться, потом выложу исправленные файлы и инструкцию по патчингу тут и на github.

 

 

 

 

Изменено пользователем randomdude
Ссылка на комментарий
2 часа назад, randomdude сказал:

режиме все равно грузятся библиотеки DX9

Там какието функции используются из DX9, помойму для сохранения скриншотов в png оно используется, может еще для чегото.

Ссылка на комментарий

Пропатченные файлы для sFall 4.4.2: https://www.mediafire.com/file/5xt892ljfq0g065/sFall4.4.2%2Bcnc-ddraw.zip/file

 

(Инструкция пока что актуальная и для sFall 5, см. примечания)

 

Список файлов:

 

.\Shaders -- шейдеры для бэкенда OpenGL
ddraw.dll -- пропатченный ddraw.dll от sFall 4.4.2
ddraw.ini -- подкрученный ddraw.ini от sFall 4.4.2 (для обычного Fallout 2 без модов)
f2_res.ini -- подкрученный f2_res.ini на основе того, что GOG кладет в установку Fallout 2
wardd.ini -- переименованный ddraw.ini от cnc-ddraw
wardd.dll -- переименованный и пропатченный ddraw.dll от cnc-ddraw
wardd.exe -- переименованный и пропатченный "cnc-ddraw config.exe" от cnc-ddraw

 

Список патчей и переименований:

 

sfall4-ddraw-dll-hack.jpg

 

Для sFall 5 все манипуляции по редактированию ddraw.dll точно такие же, только проблемное упоминание ddraw.dll с комментом "leave as is or the game breaks" находится в совсем другом месте. Его легко узнать по фразе "applying input patch" в ASCII кодировке, которая неизменно находится прямо перед ним.

 

Базовая конфигурация cnc-ddraw в графической утилите "wardd.exe":

 

cnc-ddraw-config-for-sfall4.jpg

 

Объяснения правок в ddraw.ini:

 

HiResMode=1   ; Чтобы заработал встроенный sFall'овский HRP
Mode=1   ; Включает классический полноэкранный DX7-рендерер, и это работает!
GraphicsWidth=960   ; Половина от ширины моего экрана в точках
GraphicsHeight=540   ; Половина от высоты моего экрана в точках
ProcessorIdle=-1    ; Этим пусть теперь занимается cnc-ddraw

 

Объяснения правок f2_res.ini:

 

UAC_AWARE=0   ; чтоб соломки заранее постелить
GRAPHICS_MODE=0   ; модификации рендерера от Mash нам нужны меньше всего
SCALE_2X=0   ; это теперь можно организовать через cnc-ddraw красивее и понятнее
SCR_WIDTH=   ; оставляем пустым
SCR_HEIGHT=   ; оставляем пустым
COLOUR_BITS=32    ; с cnc-ddraw прокатит любая глубина цвета
REFRESH_RATE=0    ; этим теперь занимается cnc-ddraw
WIN_DATA=0    ; этим теперь занимается cnc-ddraw

 

Объяснения правок в wardd.ini (конфигурация cnc-ddraw):

 

[ddraw]
width=0     ; нолик для автоматического масштабирования на полный экран, ширина viewport'а игры настраивается в ddraw.ini
height=0    ; нолик для автоматического масштабирования на полный экран, высота viewport'а игры настраивается в ddraw.ini
windowed=true ; наш полноэкранный режим на самом деле будет окном для молниеносного переключения между задачами
maintas=true ; чтобы соотношение сторон соблюдалось такое, какое задано для viewport'a игры (будут черные полосы по краям, если не совпадает с экранным)
boxing=false ; принудительное целочисленное масштабирование нам не нужно, при желании мы его организуем через ddraw.ini и шейдер Nearest Neighbor
maxfps=-1 ; максимальный FPS пусть не превышает частоты обновления экрана; для 120 Гц мониторов можно прописать 30 или 60, для 144 Гц -- 36 или 72, на ваш вкус
vsync=true  ; вертикальная синхронизация это хорошо и приятно
adjmouse=true  ; иначе мышка может и не заработать
shader=Shaders\nearest-neighbor.glsl  ; масштабирование Nearest Neighbor, дающее эффект SCALE_2X, если в ddraw.ini указаны строго половинные ширина и высота viewport'a относительно реального разрешения экрана
renderer=opengl   ; в режиме OpenGL можно грузить любые однопроходные GLSL шейдеры
border=false   ; у нашего полноэкранного окна не должно быть рамок
resizable=false  ; никто не смеет менять размер нашего полноэкранного окна
toggle_borderless=true  ; нужно для безрамочного режима
toggle_upscaled=false   ; истинный полноэкранный режим с растяжением нам не нужен
noactivateapp=true   ; помогает на системах где плохо себя ведет Alt-Tab
maxgameticks=-2   ; максимальный tic rate пусть не превышает частоты обновления экрана; для 120 Гц мониторов можно прописать 30 или 60, для 144 Гц -- 36 или 72, на ваш вкус
minfps=0   ; лимит на минимальный FPS как минимум для Fallout2+sFall не нужен
nonexclusive=true    ; часть фиксов совместимости
singlecpu=true   ; привязка игры к одному ядру CPU; не всем нужна, но настраивается теперь тут

 

Установка:

 

1. Устанавливаем чистую копию FO2 от GOG (или гадаем, как прикрутить к существующей сборке)

2. Не запускаем f2_res_patcher.exe и вообще держимся подальше от улучшений Мэша

3. Кладем поверх sFall 4.4.2

4. Перезаписываем поверх исправленные файлы

5. Идем в ddraw.ini и настраиваем разрешение viewport'a (допустим для SCALE_2X на 1080p мониторе я написал 960x540)

6. Шейдер Nearest Neighbor у нас уже прописан в wardd.ini, так что запускаем игру и наслаждаемся SCALE_2X

 

В диспетчере задач у игры будет лейбл [DD7] -- это значит, что Fallout 2 работает в полноэкранном режиме DirectX 7, а трансляцию в OpenGL / DirectX / GDI и постпроцессинг прозрачно для него выполняет cnc-ddraw.

 

sfall4-dd7.jpg

 

Если SCALE_2X вам не по душе, пишем в ddraw.ini любое подходящее нецелочисленное разрешение viewport'a (1066x600, 1280x720, 1368x768 и т.д.), а потом запускаем wardd.exe и выбираем на вкладке Advanced Settings шейдер либо jinc2-modified (это который я тут рекламировал), либо catmull-rom. Какой из них лучше, может зависеть от разрешения viewport'a, реального разрешения монитора и ваших персональных предпочтений. Можно еще попробовать Lanczos, но он будет местами давать слишком резкую картинку с фантомными вертикальными или горизонтальными швами между контрастными областями. Есть там и несчастный xBRZ.

 

Рендерер можно переключить на DirectX 9, тогда вам останутся доступны всего 4 встроенных шейдера. В остальном работает не хуже OpenGL.

 

Если игра запускается в виртуалке без графического ускорения или на каком-то олдовом ведре (cnc-ddraw работает даже на Windows 2000, если настроить по документации) с видеокарточкой без поддержки DirectX 9 / OpenGL 3.3, то можно выбрать рендерер GDI. Это 100% софтварный рендерер, похожий на DX7, только еще и умудряющийся работать там, где DX7 позорно валится (хоть на Windows 11). Алгоритм масштабирования в GDI -- только Nearest Neighbor, поэтому в ddraw.ini выставляем либо свое реальное экранное разрешение (все станет очень мелким), либо строго половину (получится SCALE_2X), либо четверть (SCALE_2X для 4K-мониторов).

 

Изменено пользователем randomdude
Ссылка на комментарий

Сейчас если новараин сделает подгрузку dll, попроси разраба cnc-ddraw чтобы при переименовании его ddraw.dll например в qwerty.dll его конфиг подгружался из qwerty.ini, я думаю такую привязку к имени dll вполне можно сделать. Я новераину обьяснил что надо сделать, если ему будет не лень, то сделает.

Изменено пользователем Nobi
Ссылка на комментарий
Цитата

попроси разраба cnc-ddraw чтобы при переименовании его ddraw.dll например в qwerty.dll его конфиг подгружался из qwerty.ini, я думаю такую привязку к имени dll вполне можно сделать.

Его уже попросили об этом:

 

1. Ваш покорный слуга

2. Заглянувший на огонек разработчик dxwrapper, у которого такая фишка реализована изначально (откуда я идею и взял)

 

Он ответил: "ради одной игры из тысячи заморачиваться -- ну это такое, я подумаю, а еще утилита конфигурации не сможет находить переименованный файл"

 

На что создатель dxwrapper отметил, что утилиту конфигурации тоже можно переименовывать так, чтобы ее имя совпадало с именем конфига, и так бы она об этом узнавала. Типа если названа wardd.exe, то конфиг будет  называться wardd.ini

 

Разраб cnc изначально предложил просто запускать игру через батник, как я уже писал, с предварительной настройкой environment variable, где уже сейчас можно указать путь к произвольному имени конфига.

 

Сходите тоже попросите, может согласится. Вообще, он очень приветливый, уравновешенный и терпеливый человек.

 

На крайняк можно в sfall имя конфига изменить на sfall.ini, но это одним махом испортит кучу гайдов и руководств, где этот файл фигурирует именно под таким именем.

 

Плюс симметрия в именах помогает понять, что есть что и в каком порядке грузится: ddraw.dll & ddraw.ini это "идет налево -- песнь заводит", а wardd.dll и wardd.ini "направо -- сказку говорит".

Изменено пользователем randomdude
Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...