Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Оптимизация ZDoom
   Список разделов - Doom и его порты - Оптимизация ZDoomОтветить
АвторСообщение
FalseMaster
= UAC Gunner =
Next rank: - Corporal - after 12 points
68

Doom Rate: 6.18

Posts quality: +6
Ссылка на пост №1 Отправлено: 30.05.16 00:10:13
Люди добрые и не очень, зело нужен кто-то, хорошо ориентирующийся в ZDoom'овых сорцах. Загорелся тут одной идейкой. ZDoom порт достаточно ресурсоёмкий по части проца, и было бы очень неплохо давать последнему отдохнуть хотя бы на паузе (в текущей реализации движок х**рит впустую даже при свёрнутом окне; даже в режиме карты в районе 8%). Но я случайно заметил, что если кликнуть правой кнопкой мыши по иконке приложения на панели задач, тем самым вызвав системное меню окна, нагрузка падает до 2%, что уже ближе к делу. Вот бы внести небольшое изменение – чтобы при нажатии на паузу порт полностью прекращал работу (кроме пкркрисовки окна и обработки клавы/мыши), но я, честно говоря, теряюсь в таком изообилии кода. Обработчик WM_SYSCOMMAND с uCmdType = SC_MOUSEMENU отсутствует, и непонятно, каким образом прога детектит активацию оконного меню. Собственно, надеюсь на подсказку, куда копать. Алсо интересует, можно ли поумерить аппетиты порта через настройки? Сам игрался, но без видимого эффекта (cl_capfps не в счёт, ибо возникает дёрганье). Единственное, что дало микроскопический (2%) профит – это выставление vid_maxfps в 60 (меньше уже некомфортно). Похоже, этот параметр влияет только на частоту перерисовки экрана, да и работает он весьма странно. Ещё 2% позволил отыграть крайне грязный хак (не буду вдаваться в подробности). Итого 4% – смех да и только. В моих-то влажных фантазиях было намерение ограничить пиковую (на сильно навороченной мапе) загруженность ЦП 30-тью процентами, а суровая реальность показала мне писю 33% (25-41%) на старте 1-го уровня Doom 2. В общем взываю к "коллективному" разуму.

Рейтинг сообщения: +4, отметил(и): [D2D]_Revenant, Monsterooovich, Пурген92, Doomstalker
ZZYZX
- Colonel -
Next rank: = Colonel = after 290 pointsМодератор форума
4150

Doom Rate: 1.77

Posts quality: +811
Ссылка на пост №2 Отправлено: 30.05.16 02:11:40
Никак она её не детектит. Винда просто блокирует получение окном любых месседжей при открытии меню. При сворачивании, вроде, тоже. Во всяком случае, от системы.
Насколько я знаю, при паузе здум почти ничего не делает кроме рендеринга. Да, рендеринг вызывает заметную нагрузку на проц. Ему так и надо — он софтовый.

зы. Лично у меня 10% при игре, 2% при автокарте и на паузе. Старт d2m1. 1920х1080, cl_capfps 1, софтвар, i5.
Пишу cl_capfps 0, vid_vsync 0. Получаю 200фпс и здум хавает всё ядро (25%). Но зачем?
У тебя проц какой?

Рейтинг сообщения: +1, отметил(и): Пурген92
2 2 1
FalseMaster
= UAC Gunner =
Next rank: - Corporal - after 12 points
68

Doom Rate: 6.18

Posts quality: +6
Ссылка на пост №3 Отправлено: 30.05.16 03:37:42

Винда просто блокирует получение окном любых месседжей при открытии меню.

Получается, что мне надо определить, при каком сообщении происходит рендеринг и вставить в обработчике проверку на запаузивание?


При сворачивании, вроде, тоже.

Практика показывает что нет. При свёрнутом окне рендер продолжает молотить, но менее интенсивно – 23%.


при паузе здум почти ничего не делает кроме рендеринга.

Вот! А ведь это совершенно ненужно, какртинка-то не меняется, т.е. достаточно просто перерисовывать окно (при необходимости). Самым правильным вариантом было бы отрубить рендеринг во время паузы с сохранением обновления текущей картинки. Вопрос, как это сделать? В этой куче кода чёрт ногу сломит.


Лично у меня 10% при игре, 2% при автокарте и на паузе. Старт d2m1. 1920х1080, cl_capfps 1, софтвар, i5.

1. Как?! Ты вносил изменения в сорцы? У меня даже при cl_capfps = true загрузка 27%, но я снимаю непосредственно с камня, венда кажет 14% на паузе и 0% на карте (без паузы), а при cl_capfps = false: 20-25% на паузе и 9-23% на карте (без паузы), и это при меньшем чем у тебя разрешении.
2. Что есть "софтвар"?


Пишу cl_capfps 0 … Но зачем?

cl_capfps 1 аналогично vid_maxfps 35. Очень всё неплавно при значениях менее 60, невыносимо просто для меня.


У тебя проц какой?

C2D, задушенный до 512 MHz.

Рейтинг сообщения: +1, отметил(и): Пурген92
Unregistered
- Sergeant Major -
Next rank: = Sergeant Major = after 1 points
599

Doom Rate: 0.96

Posts quality: +40
Ссылка на пост №4 Отправлено: 30.05.16 09:21:06
FalseMaster
софтвар - software рендеринг?

Рейтинг сообщения: -2, отметил(и): StasBFG[iddqd], Monsterooovich
1 2 10
klerk
- Sergeant -
Next rank: = Sergeant = after 16 points
324

Doom Rate: 1.03

Posts quality: +74
Ссылка на пост №5 Отправлено: 30.05.16 10:38:07
FalseMaster, и ты потом собираешься в каждой новой версии здума искать, куда воткнуть этот костыль? Во-первых, как это проц "задушенный" до 512 МГц, это явно ненормально - софт-рендер очень требовательный к процу, т.к. он для отрисовки требует именно ресурсов проца, а не видеокарты. Потому он и "софт", что полностью программный.

Первый и самый простой мой совет - поставь GZDoom, там есть OpenGL-рендер.

Рейтинг сообщения: +1, отметил(и): NighMare
1 1
Monsterooovich
Chief Petty Officer
Next rank: - Warrant Officer - after 91 points
949

Doom Rate: 1.54

Posts quality: -6
Ссылка на пост №6 Отправлено: 30.05.16 18:19:42
klerk :
Первый и самый простой мой совет - поставь GZDoom, там есть OpenGL-рендер.


Вот. А софт используют либо злые Буратино, либо изгнанные Графом. Теперь это не только рыцари ордена AMD и Intel-мафия, но и владельцы старых видюх. %)

Рейтинг сообщения: +1, отметил(и): [D2D]_Revenant, ZZYZX, Kirov-13, Doomstalker, DOOMGABR
FalseMaster
= UAC Gunner =
Next rank: - Corporal - after 12 points
68

Doom Rate: 6.18

Posts quality: +6
Ссылка на пост №7 Отправлено: 31.05.16 00:03:47
Unregistered :
софтвар - software рендеринг?

Да это понятно. Я не знаю, какой параметр отвечает за тип рендера.

klerk :
и ты потом собираешься в каждой новой версии здума искать, куда воткнуть этот костыль?

Достаточно один раз найти. Не думаю, что Ренди каждую версию с нуля переписывает.

klerk :
Во-первых, как это проц "задушенный" до 512 МГц

Не помню уже (в манах лень копаться), вроде как через MSRы это делается. Пользуюсь сторонней утилитой (RMClock).

klerk :
это явно ненормально

В Intel так не считают. По своей практике могу сказать, что частоты 512 MHz хватает за глаза для большинства повседневных задач.

klerk :
софт-рендер очень требовательный к процу

И поэтому на паузе он не должен вызываться.

klerk :
Первый и самый простой мой совет - поставь GZDoom, там есть OpenGL-рендер.

И каковы показатели по CPU usage? Есть ли резон связываться с этим портом?
ZZYZX
- Colonel -
Next rank: = Colonel = after 290 pointsМодератор форума
4150

Doom Rate: 1.77

Posts quality: +811
Ссылка на пост №8 Отправлено: 31.05.16 00:13:26
FalseMaster :
И поэтому на паузе он не должен вызываться.

А какая разница? Если у тебя говнопроц, не пытайся одновременно что-то делать со свёрнутой игрой.

FalseMaster :
Да это понятно. Я не знаю, какой параметр отвечает за тип рендера.

vid_renderer 1/0

FalseMaster :
И каковы показатели по CPU usage? Есть ли резон связываться с этим портом?

Пойди проверь. Но с твоими требованиями к процу я думаю ты пролетишь ещё больше чем с софтом.
2 2 1
FalseMaster
= UAC Gunner =
Next rank: - Corporal - after 12 points
68

Doom Rate: 6.18

Posts quality: +6
Ссылка на пост №9 Отправлено: 31.05.16 00:53:13

А какая разница?

Разница такая, что проц не охлаждается никогда.


vid_renderer

Нет такого параметра в ZDoom.


Пойди проверь.

Пошёл, проверил – соточка (оба ядра по полной). Долой с винта это вредоносное ПО.

--------------------------------

В обработчике WM_PAINT, кстати, вызывается только перерисовка окна (функция "PaintToWindow"). Похоже, что рендер отрабатывает по WaitForSingleObject, но как это увязать с появлением системного меню, я что-то не догоняю.

Рейтинг сообщения: +1, отметил(и): alekv
Doomstalker
UAC Sergeant Major
Next rank: Chief Petty Officer after 43 points
807

Doom Rate: 1.71

Posts quality: +552
Ссылка на пост №10 Отправлено: 31.05.16 11:17:49
vid_renderer - этот параметр есть в GZDoom, он и отвечает за тип рендера.

Хм... Полезная тема. :o
1 1
ZZYZX
- Colonel -
Next rank: = Colonel = after 290 pointsМодератор форума
4150

Doom Rate: 1.77

Posts quality: +811
Ссылка на пост №11 Отправлено: 31.05.16 11:23:42
FalseMaster :
Нет такого параметра в ZDoom.

Естественно нет. В здуме только софтвар и есть. Читай выше от думсталкера.
2 2 1
Doomstalker
UAC Sergeant Major
Next rank: Chief Petty Officer after 43 points
807

Doom Rate: 1.71

Posts quality: +552
Ссылка на пост №12 Отправлено: 31.05.16 19:24:14
Отлично, можно и в gzdoom подобные операции проделывать. Почти одинаковые порты как никак.
35 fps поставил. Ладно, если бы разработчик порта ставил 60 fps, но 200... Многовато как-то.
1 1
FalseMaster
= UAC Gunner =
Next rank: - Corporal - after 12 points
68

Doom Rate: 6.18

Posts quality: +6
Ссылка на пост №13 Отправлено: 02.06.16 03:24:27
Понимаю, что всем пофиг, но раз уж я тему начал, оторвав народ от важных дел, следует отчитаться. Задушить рендер не получилось… точнее, получилось, но результат оказался ровно такой же, как от снижения FPS, поэтому оствил как было, а вот затея с разгрузкой проца на паузе в какой-то мере удалась: в игре – 4-5%, в карте – 6-7%, но по непонятной причине через некоторое время повышается вплоть до двукратного значения, потом иногда опять нормализуется, а иногда нет. Предполагаю, что это как-то связано со стабилизацией FPS, да только хрен знает, где и как сие происходит. Пожалуй остановлюсь на достигнутом, ибо никто не горит желанием помочь, а я уже задолбался ковыряться в исходниках.
klerk
- Sergeant -
Next rank: = Sergeant = after 16 points
324

Doom Rate: 1.03

Posts quality: +74
Ссылка на пост №14 Отправлено: 02.06.16 03:34:22
FalseMaster, не то чтобы абсолютно пофиг, просто я не могу предсказать, как на твоём железе он себя будет вести. У меня лично GZDoom лучше себя ведёт, чем ZDoom. Тебе просто пробовать надо, если ты уж решил сидеть на такой конфигурации, то никто за тебя не попробует.
1 1
ZZYZX
- Colonel -
Next rank: = Colonel = after 290 pointsМодератор форума
4150

Doom Rate: 1.77

Posts quality: +811
Ссылка на пост №15 Отправлено: 02.06.16 04:03:01
Doomstalker :
35 fps поставил. Ладно, если бы разработчик порта ставил 60 fps, но 200... Многовато как-то.

vid_vsync 1. Мне наоборот его приходится целенаправленно выключать, чтобы фпс был выше 60.
2 2 1
FalseMaster
= UAC Gunner =
Next rank: - Corporal - after 12 points
68

Doom Rate: 6.18

Posts quality: +6
Ссылка на пост №16 Отправлено: 03.06.16 01:37:24
После многочисленных экспериментов я таки почти добился своего – в режиме карты на паузе 3-4%. Можно и ещё убавить, но тогда возникает ощутимая задержка при переключении.

UPD: В кабинете раздумий пришла умная мысля; теперь на паузе (и в игре и в карте) 2-3%. Можно считать, что авантюра удалась.
Страница 1 из 1Перейти наверх
   Список разделов - Doom и его порты - Оптимизация ZDoom