Может ли кадровая интерполяция, подобная используемой SmoothVideo Project, быть вариантом увеличения частоты кадров в играх без столь значительного снижения производительности?

11

Проект SmoothVideo использует кадровую интерполяцию для увеличения частоты кадров видео с 24 до 60. Результаты впечатляют . Мне было интересно, если это можно применить, и будет ли это хорошо выглядеть в видеоиграх?

Он использует гораздо меньше ресурсов, чем рендеринг всех фреймов, поэтому позволяет рендерингам нижнего уровня рендериться с качеством гораздо лучших риггов при некотором уровне компромисса. Я знаю, что он не будет таким точным и немного увеличит задержку ввода, так как он должен держаться за самый новый кадр, чтобы иметь возможность генерировать и вставлять интерполированный кадр. Это не так плохо, как полный кадр, хотя, по моим соображениям, только задержка будет временем интерполяции плюс половина оригинального времени обновления fps. Таким образом, для 30 кадров в секунду это будет 33 мс / 2 + время интерполяции.

Возможно, это отставание сделает его непригодным для быстрых игр от первого лица, но я сомневаюсь, что это будет помехой в играх с более медленными темпами.

Задержка становится ниже при более высоких начальных скоростях, поэтому я думаю, что это будет, безусловно, того стоить при переходе от 60 кадр / с до 100 + кадр / с, что улучшает восприятие, хотя и незначительно, но в то же время крайне обременительно для системы.

cybrbeast
источник
В некотором отношении это уже делается с помощью размытия в движении. Отсутствие полученных данных о движении (описано в некоторых ответах) решается с помощью уже известных движений объектов. Единственное отличие состоит в том, что вместо гладкой интерполяции, рендереры делают несколько интерполяций и создают их смесь. Интерполяция, как вы описали, вероятно, не используется, потому что окклюзия меняется и создает нежелательный результат.
транзистор09

Ответы:

6

Система по этим направлениям была использована в The Force Unleashed . Я не знаю других названий, которые использовали это все же.

ДМГригорий
источник
1
Спасибо за информацию. Нашел публикацию по этому вопросу : dl.acm.org/citation.cfm?id=1837047 Кажется успешным, так почему же он не нашел более широкого применения?
cybrbeast
Главным образом по причинам, изложенным в ответе Byte56: это не лишено недостатков, и во многих случаях эти недостатки не стоят того, учитывая, что есть и другие способы достижения более высокой частоты кадров.
1
Согласно этой статье, используя интеллектуальную интерполяцию, этот метод может реально уменьшить время ожидания! eurogamer.net/articles/… Так что, кажется, лучше по всем показателям. Но что-то должно быть упущено, так как вы думаете, что это будет использоваться везде, если это правда.
cybrbeast
@David: статья означает, что она уменьшает кажущуюся задержку по сравнению с работой на 30 кадрах в секунду для определенных типов ввода. Работать с частотой 60 кадров в секунду все еще предпочтительнее, когда это возможно (лучшая задержка и отсутствие артефактов интерполяции), поэтому многие разработчики считают, что это их цель первого выбора. Когда играм не удается набрать 60 кадров в секунду, не всегда остается достаточно времени или бюджета для создания системы интерполяции, чтобы сгладить пропуски - эта система довольно сложная и, в случае TFU, ей помогают некоторые аспекты конвейера рендеринга, которые не общедоступный для всех игр.
DMGregory
Я пытался сказать лучше по всем показателям по сравнению с 30 кадрами в секунду без улучшений, без визуализации 60 кадров в секунду
cybrbeast
9

Да, это возможно, но не без осложнений.

В то время как интерполяция кадров может работать в режиме реального времени на видео, это не обязательно относится к видеоиграм. Даже при том, что это обрабатывает видео в реальном времени, программное обеспечение способно «смотреть вперед» на следующий кадр. Это довольно важный компонент интерполяции. Здесь проблема вступает в игру с играми. В большинстве случаев следующий следующий кадр еще не визуализирован! Таким образом, программное обеспечение не знает следующую точку в интерполяции.

Безусловно, есть возможность запустить игру за кадром или двумя, чтобы дать вашей программе интерполяции те кадры, с которыми она должна работать. Тем не менее, это не работает так же хорошо для интерактивных медиа. Теперь то, что показывается на экране, задерживается от получения ввода. Это усложняет обработку ввода и обеспечивает хорошую отзывчивость к игре. Это похоже на искусственное отставание в производительности. Кроме того, он вряд ли будет иметь встроенную поддержку в любом из основных игровых движков, что означает написание собственного.

MichaelHouse
источник
Любая реакция на этот более умный метод интерполяции, упомянутый ниже, который утверждает, что предотвращает любое увеличение задержки? eurogamer.net/articles/…
cybrbeast
В этом случае применяется в первую очередь последнее предложение. Я не уверен, насколько их технология отвлекла эту особенность. Возможно, потребовалось значительно больше работы, чтобы не нарушить интерполяцию, или это могло бы «просто сработать». Я полагаю, что если бы это был последний вариант, мы могли бы увидеть его в некоторых основных двигателях (если он не запатентован). Я не уверен, что эта функция стоит того, чтобы создавать и поддерживать свой собственный движок.
MichaelHouse
Неуверенность в том, что бег за рамкой является основным препятствием для интерактивности. Любые многопользовательские игры, использующие авторитетный сервер с интерполяцией (состояния игры) между двумя последними обновлениями, часто показывают большую задержку, однако это включает в себя некоторые из самых динамичных шутеров. Нам также не обязательно нужен следующий кадр для построения промежуточных звеньев в играх, потому что в отличие от видео игры могут генерировать маски объектов и информацию о скорости экрана (аналогично эффектам размытия в движении), которые можно экстраполировать.
DMGregory
2

Да, это не только возможно, но и доступно сейчас: подключите игровой ПК / консоль к телевизору, использующему интерполяцию движения . Мнения различаются, и это менее подходит для игр с подергиванием, таких как FPS, из-за задержки интерполяции, но для увеличения частоты кадров от 60 до 120 Гц это работает отлично.

Что касается того, может ли это быть сделано в самой игре, пока нет достаточного импульса, так как большинство мониторов не могут выводить эти высокие частоты кадров. Мониторы 120 + Гц для компьютеров встречаются реже, хотя, судя по тому, как работают телевизоры, это может произойти в ближайшее время. Наличие монитора с высокой частотой обновления имеет преимущества даже в том случае, если игра не может достичь этих частот: помимо вышеупомянутой телевизионной интерполяции движения, он может предлагать более плавные кадры, если в игре разрешено выводить кадры в том виде, в котором они готовы, вместо синхронизации до аля v-sync. Как только мониторы с частотой 120 Гц станут обычным явлением, я ожидаю, что разработчики игр наверстают упущенное и начнут использовать дополнительные приемы, включая интерполяцию движения, для достижения этих высоких частот кадров.

congusbongus
источник
3
Мой опыт показывает, что эти системы имеют огромную задержку на входе, например 200 + мс (12+ кадров при 60 кадрах в секунду). Это причина того, что эти телевизоры обычно имеют «игровой режим», который отключает эту функцию.
BlueRaja - Дэнни Пфлугхофт
0

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

Монитору пользователя может потребоваться около 30 мс для отображения полученного изображения. Доступны гораздо более быстрые мониторы, но многие обычные пользователи не имеют их. Если видеокарта вычисляет 30 кадров в секунду, для расчета кадра требуется 33 мс. Я предполагаю 30 кадров в секунду, потому что нам не нужна интерполяция кадров, если игра уже работает на скорости 60 кадров в секунду. Если мы используем тройную буферизацию, это удваивается до 66 мс. Это 90 мс.

Я думаю, нам нужна тройная буферизация для интерполяции кадров, чтобы иметь смысл. Таким образом, если мы используем кадровую интерполяцию для получения 60 кадров в секунду, мы увеличиваем задержку на один 60Гц кадр, что составляет еще 17 мс + время интерполяции X, что приводит к 107 мс + X. Проблема не в том, что интерполяция такой, но тот факт, что мы уже близки к точке, где задержка заметна, прежде чем мы введем интерполяцию.

Вероятно, это было бы хорошо для игры, которая в основном представляет собой виртуальный фильм, но в FPS пользователи заметят, что с прицеливанием что-то не так.

Питер
источник