ПрограммированиеФорумОбщее

Сглаживание пиков входящих данных для дельта тайм

#0
0:36, 27 окт 2013

Хочу что бы когда поставлю брейкпоинт и дельтатайм вылетит в несколько секунд у меня не поотваливались всякие подсистемы.
Первым на ум приходит среднее арифметическое. Но оно будет работать нормально только если у меня постоянно держится стабильный фпс, и иногда бывают пики.
Надо что-то более продвинутое, что бы отбрасывало высокие значения с каким-то порогом. Т.е. если дельта т всегда 16 мсек, и тут приходит 5 сек, то сглаживаем его до 16 мсек, а если приходит 20-30 мсек - то оставляем их. Как определить этот самый вменяемый порог? Как много предыдущих значений хранить? Какой фильтр использовать?

#1
0:54, 27 окт 2013

http://bitsquid.blogspot.ru/2010/10/time-step-smoothing.html

#2
2:05, 27 окт 2013

StiX
> Хочу что бы когда поставлю брейкпоинт и дельтатайм вылетит в несколько секунд у
> меня не поотваливались всякие подсистемы.

real_delta = min( current_delta, max_delta )


> Первым на ум приходит среднее арифметическое. Но оно будет работать нормально
> только если у меня постоянно держится стабильный фпс, и иногда бывают пики.

оно никогда не будет работать "нормально" по причине бессмысленности :)

> Надо что-то более продвинутое, что бы отбрасывало высокие значения с каким-то
> порогом. Т.е. если дельта т всегда 16 мсек, и тут приходит 5 сек, то сглаживаем
> его до 16 мсек, а если приходит 20-30 мсек - то оставляем их. Как определить
> этот самый вменяемый порог?

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

> Как много предыдущих значений хранить? Какой фильтр
> использовать?
Не надо хранить никаких предыдущих значений. Фильтр использовать min().

P.S. Если у тебя не одиночные пики, а скачет фпс "пилой", как показано в странной ссылке постом выше, то надо искать причину и исправлять, а не бороться с насморком отрубанием головы со следствием странными сглаживаниями дельты.

#3
10:35, 27 окт 2013

Медианный фильтр?

#4
21:34, 27 окт 2013

Медианный фильтр!

#5
22:13, 27 окт 2013

Tonal
> Медианный фильтр!

Отложить наступление звиздеца на половину окна фильтра, это так круто :)

#6
22:27, 27 окт 2013

outcast
> Отложить наступление звиздеца на половину окна фильтра, это так круто :)
> real_delta = min( current_delta, max_delta )
ага, он самый

ПрограммированиеФорумОбщее

Тема в архиве.