Уменьшение задержки вывода что это
Что такое Input Lag и как он влияет на впечатления от игры
Объясняем и показываем, как устроен Input Lag и почему это важно.
Абрикос Абрикосовый для Skillbox Media
Input Lag — задержка ввода. Время, которое проходит с момента получения команды до отображения того или иного действия на экране. После нажатия кнопки на контроллере электронике требуется время на просчёт сигнала и вывода картинки на дисплей — из-за этого и происходит задержка ввода.
Как устроен Input Lag?
Задержка ввода состоит из обработки сигнала контроллером, компьютером и дисплеем.
Объяснение от NVIDIA
Сценарист и копирайтер. Утверждает, что видел все фильмы и прошёл все игры, но редакция отказывается ему верить.
Для кого важен Input Lag?
Максимально важен для киберспортивных дисциплин — шутеров, файтингов, MOBA. Запаздывание реакции персонажа на команды влияет на соревнования не меньше, чем скорость реакции игрока. Input Lag — один из важнейших параметров в киберспорте наравне с частотой кадров в секунду. Про FPS мы писали ранее в другой статье.
Киберспортсмен Джордан n0thing Гилберт объясняет важность низкого Input Lag
Задержка ввода влияет на регистрацию выстрелов, низкий лаг позволяет делать фликшоты — это техника, при которой игрок в шутере очень резко целится во врага и метко стреляет.
В соревновательных дисциплинах существует понятие Peeker’s Advantage — преимущество подглядывающего. Заглядывающий за угол игрок имеет преимущество перед противником с другой стороны, что влияет на тактику в шутерах. Peeker’s Advantage зависит от задержки ввода.
Как снизить Input Lag?
Input Lag не прописывают в официальных спецификациях, параметр меняется в зависимости от «железа». На любом ПК есть несколько способов снизить лаг:
Чтобы снизить Input Lag на ТВ и консоли, следует отключить все программные средства улучшения видеосигнала — например, искусственное повышение плавности в динамичных сценах. По умолчанию все подобные параметры включены.
На время считывания данных из буфера кадров влияет скорость обновления дисплея. У монитора с высокой скоростью обновления задержка будет меньше.
Стоит использовать соответствующее ЖК-панели разрешение. Например, лаг повышается, если 4К-монитор сжимает изображение до Full HD.
Во многих современных телевизорах есть особый игровой режим. При подключении консоли используйте вход HDMI Game.
Для большей скорости отклика на любой платформе имеет смысл отключить HDR — о том, как устроен высокий динамический диапазон, мы писали в другом материале.
Производители «железа» разрабатывают технологии, специально заточенные под киберспорт. Например, NVIDIA Reflex измеряет и оптимизирует задержки системы в соревновательных играх.
Играем через телевизор. Что такое INPUT LAG и как от него избавиться
Содержание
Содержание
Успех виртуальных баталий напрямую зависит от скорости реакции игрока. Но не менее важно, чтобы и информация выводилась с минимальной задержкой. Плохое интернет-соединение и долгая обработка сигнала на мониторе, телевизоре — все это мешает классной игре. Последнее явление получило название INPUT LAG.
Высокая задержка ввода — неприятная проблема. После замены телевизора или в гостях у друзей в глаза бросается запаздывание, с которым персонаж на экране реагирует на команды с геймпада. К небольшим тормозам можно привыкнуть, но слишком большая задержка значительно портит впечатления от игрового процесса.
Что такое input lag
Любому устройству вывода, будь то монитор или телевизор, требуется время на обработатку поступающегоий видеосигнала. Разница в том, что электроника современных игровых мониторов адаптирована для трансляции с минимальной задержкой на входе. Это достигается путем транслирования исходного сигнала, получаемого с видеокарты.
Архитектура телевизоров выполнена намного сложнее. Перед тем, как попасть на матрицу, сигнал подвергается значительной коррекции центральным процессором ТВ. В некоторых сценариях обработка занимает до 150 мс. Такая разница отчетливо заметна пользователю любого уровня. Не обязательно быть профессиональным геймером, чтобы уловить лаг в 1/7 секунды.
Таким образом, INPUT LAG — это время с момента получения сигнала устройством вывода до его отображения на экране.
Наиболее важное влияние время задержки оказывает на динамичные игры. Фанатам шутеров и файтингов критически важен низкий инпут лаг. От него напрямую зависит успех виртуальных баталий. В on-line дуэли выигрывает тот, кто первый увидит врага. И разница даже 50 мс окажется решающей.
Для любителей размеренных жанров — стратегий, RPG — низкое время задержки менее критично, но лишним тоже не будет.
Какую панель можно считать медленной? Однозначного ответа на этот вопрос не существует. Там, где профессиональный геймер заметит долгую задержку, обычный пользователь будет играть с комфортом. Условной границей принято считать отметку 50 мс. Модели с большим значением лучше избегать.
При выборе монитора этот параметр часто путают со временем отклика матрицы, которое показывает, сколько времени требуется пикселю, чтобы изменить своей цвет. Для современных ЖК-панелей значение чаще всего не превышает 12 мс.
Инпут лаг редко прописывают в официальных спецификациях по ряду причин. Во-первых, точно измерить параметр достаточно сложно. В интернете много независимых ресурсов, занимающихся этим вопросом. Значения, полученные в разных источниках для одной модели, часто различаются. Во-вторых, инпут лаг зависит от режима и настроек телевизора. Указание только основных вариантов займет значительную часть в спецификациях модели.
Подробная база с телевизорами и мониторами представлена на https://displaylag.com/display-database/. Ресурс позволяет быстро найти интересующую модель с помощью фильтров и сравнить ее параметры с другими вариантами. Единственный недостаток — приведено наименьшее значение задержки без указания используемых настроек. Ресурс https://www.rtings.com/tv/tools/table/ позволит сравнить инпут лаг в разных режимах.
Как измерить input lag
Техника измерения сводится к сравнению тестируемого устройства с эталонным, время обработки сигнала на котором условно равно нулю. Наиболее подходящим вариантом для этой задачи является монитор на ЭЛТ, подключенный без использования переходников к разъему DVI.
В случае отсутствия, подойдет любой монитор или экран ноутбука. Но в таком случае результат окажется ниже реального. Фактически, вы не получите достоверное значение инпут лага, а сравните устройства по этому параметру.
Порядок измерений:
В случае сравнения с монитором на ЭЛТ, результатом тестирования станет точное значение инпут лага. Иначе: Инпут лаг = Разница в показаниях секундомера + Инпут лаг устройства с меньшим показанием секундомера.
Как снизить input lag
Если в системе замечена высокая задержка, и управление ощущается «желейным», не надо сразу начинать поиски нового телевизора или монитора. Первым делом стоит попытаться снизить инпут лаг «подручными» способами. Их можно разделить на две категории, применять которые необходимо комплексно.
В первом случае комплекс мер выглядит следующим образом:
В телевизоре основная задача — отключить все программные средства улучшения видеосигнала. Такие как искусственное повышение плавности в динамичных сценах, улучшение цвета и т. д. Набор параметров у каждого производителя свой. Стоит помнить, что из коробки такие «улучшалки» чаще всего включены. Универсальное средство — использование игрового режима, который есть в любой современной модели ТВ.
Используйте разрешение, соответствующее ЖК-панели. Растягивание Full-HD сигнала до 4К или сжатие 4К в Full-HD заметно повышают инпут лаг.
При подключении консоли через ресивер на последнем используйте вход HDMI, помеченный надписью Game.
Предпринятые меры если не устранят Input Lag полностью, то многократно снизят его до приемлемых значений, которые позволят играть в самые динамичные проекты.
Минимизация задержки ввода в играх DirectX универсальной платформы Windows (UWP)
Задержка ввода может серьезно повлиять на впечатление от игры, поэтому чем меньше задержка — тем лучше выглядит продукт. Кроме того, оптимизация событий ввода продлевает время работы батареи. Узнайте, как правильно настроить обработку событий ввода при помощи CoreDispatcher, чтобы игра реагировала на ввод наилучшим образом.
Задержка ввода
Задержка ввода — это время реакции системы на действия пользователя. Реакция зачастую выражается в изменениях изображения на экране или в разного рода звуковых эффектах.
При каждом событии ввода, было ли оно событием указателя касания, указателя мыши или клавиатуры, создается сообщение для обработчика события. Современные дигитайзеры касаний и периферийные игровые устройства сообщают о событиях ввода с минимальной частотой 100 Гц на каждый указатель. Это означает, что приложение может получать сто и более событий в секунду для каждого указателя (или нажатия клавиши). Частота обновлений еще выше, если используются одновременно несколько указателей или устройство ввода повышенной точности (например, игровая мышь). В таких условиях может выстраиваться целая очередь сообщений о событиях.
Важно понимать, на какую задержку ввода должна быть рассчитана игра, чтобы события обрабатывались оптимально для сценария. Универсального решения для всех игр в этом отношении не существует.
Эффективность энергопотребления
В контексте задержки ввода под эффективностью энергопотребления понимается то, насколько интенсивно игра использует GPU. Эффективнее та игра, которая использует меньше ресурсов GPU, продлевая тем самым время работы батареи. То же относится и к центральному процессору.
Если игра обеспечивает отрисовку экрана менее чем за 60 кадров в секунду (в настоящее время это максимальная скорость отрисовки для большинства дисплеев) без ущерба для восприятия, целесообразнее снизить частоту отрисовки для экономии энергии. В некоторых играх изображение обновляется только в ответ на ввод данных пользователем, чтобы не отрисовывать одно и то же содержимое снова и снова с частотой 60 кадров в секунду.
Выбор приоритетов
Разрабатывая приложение DirectX, следует ответить на ряд вопросов. Нужно ли отрисовывать изображение с частотой 60 кадров в секунду, чтобы обеспечить плавную анимацию, или достаточно реагировать на ввод данных пользователем? Важно ли предельно снизить задержку ввода, или небольшое запаздывание некритично? Рассчитывают ли пользователи, что приложение будет целесообразно расходовать заряд батареи?
Ответы на эти вопросы помогут отнести ваше приложение к одному из следующих сценариев.
Реализация
Большинство игр DirectX используют так называемые «циклы». Базовый алгоритм строится на выполнении этих шагов до тех пор, пока пользователь не закончит игру или не завершит работу с приложением.
Когда содержимое игры DirectX отрисовано и готово к отображению на экране, цикл игры ждет, пока графический процессор не будет готов к приему нового кадра, прежде чем снова переходить к обработке ввода.
Рассмотрим работу циклов для каждого из сценариев, перечисленных выше, на примере игры-пазла. Рассматриваемые в каждом случае критерии принятия решений, преимущества и компромиссные варианты подскажут вам, как оптимизировать приложение, чтобы снизить задержку ввода и повысить эффективность энергопотребления.
Сценарий 1. Отрисовка по запросу
В первой итерации игры изображение на экране обновляется только тогда, когда пользователь перемещает кусочки пазла. Пользователь может перетаскивать кусочки, а может выбирать их, а затем касаться того места, куда их следует положить. Во втором случае кусочки перемещаются в нужное место мгновенно, без какой-либо анимации или эффектов.
В коде заложен однопотоковый цикл внутри метода IFrameworkView::Run, использующего CoreProcessEventsOption::ProcessOneAndAllPending. При этом все доступные в настоящее время события отправляются в очередь. Если событий нет, цикл ждет, пока они не появятся.
Сценарий 2. Отрисовка по запросу с периодической анимацией
Во второй итерации игра выглядит несколько иначе: после того как пользователь выбирает кусочек пазла, а затем касается места, перемещение кусочка сопровождается анимацией от начальной точки до конечной.
В коде также заложен однопотоковый цикл, использующий ProcessOneAndAllPending для отправки событий ввода в очередь. Разница в том, что в процессе анимации цикл меняется и использует CoreProcessEventsOption::ProcessAllIfPresent, чтобы не ждать новых событий ввода. Если событий нет, ProcessEvents немедленно возвращается, за счет чего приложение может отображать следующий кадр анимации. По завершении анимации цикл вновь переключается на ProcessOneAndAllPending, чтобы ограничить обновление экрана.
Для перехода между ProcessOneAndAllPending и ProcessAllIfPresent приложение должно отслеживать собственное состояние, чтобы знать, воспроизводится ли анимация. В игре-пазле для этого добавляется новый метод, который можно вызывать во время цикла игры в классе GameState. Ветвь анимации внутри цикла обновляет состояние анимации, вызывая новый метод Update GameState.
Сценарий 3. Отрисовка с частотой 60 кадров в секунду
В третьей итерации игра отображает таймер, на котором пользователь видит, как долго он собирает пазл. Поскольку таймер отображает время с точностью до миллисекунды, отрисовка должна выполняться с частотой 60 кадров в секунду, чтобы изображение на экране не устаревало.
Как и в сценариях 1 и 2, приложение строится на однопотоковом цикле. Однако поскольку отрисовка происходит постоянно, нет необходимости отслеживать состояние игры (в отличие от первых двух сценариев). Поэтому для обработки событий можно по умолчанию использовать ProcessAllIfPresent. Если событий нет, ProcessEvents немедленно возвращается и переходит к отрисовке следующего кадра.
Это наиболее простой способ, так как не нужно дополнительно отслеживать состояние игры, чтобы переходить к отрисовке. При этом обеспечивается наиболее быстрая отрисовка и приемлемое время реагирования на ввод в рамках интервалов таймера.
Но у данного способа есть и обратная сторона. Отрисовка с частотой 60 кадров в секунду использует больше электроэнергии, чем отрисовка по запросу. Лучше всего использовать ProcessAllIfPresent, пока игра меняет содержимое, отображаемое в каждом следующем кадре. Задержка ввода при этом увеличивается на 16,7 мс, поскольку теперь приложение блокирует цикл на время интервала синхронизации дисплея вместо ProcessEvents. При этом некоторые события ввода могут игнорироваться, поскольку очередь обрабатывается со скоростью, эквивалентной частоте кадров (60 Гц).
Сценарий 4. Отрисовка с частотой 60 кадров в секунду с минимальной задержкой ввода
В некоторых играх есть возможность игнорировать задержку ввода, существующую в сценарии 3, или компенсировать ее. Однако если задержка ввода критична для получения ожидаемого впечатления от игры и адекватной обратной связи, при отрисовке с частотой 60 кадров в секунду игры должны обрабатывать ввод в отдельном потоке.
В четвертой итерации игра строится на сценарии 3, разделяя обработку ввода и отрисовку графики из цикла на отдельные потоки. Благодаря разделению потоков обработка ввода не задерживается выводом графики, хотя код при этом усложняется. В сценарии 4 поток ввода вызывает ProcessEvents с CoreProcessEventsOption::ProcessUntilQuit, который ждет новые события и распределяет все доступные. Это длится до тех пор, пока окно не будет закрыто или пока игра не вызовет CoreWindow::Close.
Шаблон Приложение DirectX 11 и XAML (универсальное приложение Windows) в Microsoft Visual Studio 2015 разделяет цикл игры на несколько потоков по аналогичному принципу. С помощью объекта Windows::UI::Core::CoreIndependentInputSource он запускает поток обработки ввода, а также создает поток отрисовки независимо от потока пользовательского интерфейса XAML. Подробности об этих шаблонах см. в статье Создание проекта игры универсальной платформы Windows и DirectX на основе шаблона.
Дополнительные способы сокращения задержки ввода
Цепочки буферов с поддержкой ожидания
Игры DirectX реагируют на действия пользователя, обновляя изображение на экране. На дисплеях с частотой 60 Гц изображение обновляется каждые 16,7 мс (1 секунда/60 кадров). На рисунке 1 представлены примерный жизненный цикл и реакция на событие ввода относительно сигнала обновления 16,7 мс (VBlank) для приложений с отрисовкой 60 кадров в секунду.
в Windows 8.1 DXGI появился флаг DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT для цепочки буферов, что позволяет приложениям легко сократить эту задержку, не требуя от них реализации эвристики для сохранения текущей очереди. Цепочки буферов с таким флагом называются цепочками буферов с поддержкой ожидания. На рисунке 2 представлены примерный жизненный цикл и реакция на событие ввода для приложений, использующих цепочки буферов с поддержкой ожидания.
Из этих схем следует, что игры потенциально могут снижать задержку ввода на два полных кадра, если они способны отрисовывать и выводить каждый кадр за те 16,7 мс, за которые обновляется изображение на дисплее. Пример игры-пазла использует цепочки буферов с поддержкой ожидания и контролирует заполнение очереди Present с помощью вызова m_deviceResources->SetMaximumFrameLatency(1);
Что такое задержка ввода и время отклика: в чем разница между ними?
Если вы находитесь в поиске нового игрового монитора, будь то 60 Гц, 144 Гц или даже 240 Гц, кроме всего прочего Вы также должны обратить внимание на две очень важные характеристики монитора – задержку ввода и время отклика. В то время как большинство потенциальных покупателей игровых мониторов знают, что такое частота обновления (или частота кадров), многие не понимают в чем разница между временем отклика и задержкой ввода.
Кроме того, время отклика указано на упаковке каждого игрового монитора в разделе спецификаций, а задержка ввода редко появляется. Это происходит потому, что производители могут легко рассчитать и протестировать время отклика монитора на заводе, но задержка ввода представляет собой гораздо более сложный показатель. Многие факторы, влияющие на задержку ввода, не имеют никакого отношения к монитору или производственному процессу изготовления дисплея, поэтому производители попросту не могут владеть информацией о задержке ввода в каждом отдельно конкретно взятом случае.
Несмотря на это, если Вы интересуетесь играми и игровыми мониторами, то Вы определенно должны изучить эти два взаимосвязанных между собой, но столь различных термина. Если Вы выберете дешевый монитор с медленным откликом или большой задержкой, то Вы можете столкнуться с такими проблемами как, как размытие движения и эффект ореола. Кроме того, управление действиями в игре будет казаться неотзывчивым.
Почему многие путают эти понятия?
Время отклика является частью общей задержки ввода. Это, скорее всего, объясняет, почему так много людей неправильно понимают, что эти две спецификации описывают разные, но тесно между собой связанные аспекты игрового монитора. Другая причина – это то, что обе характеристики относятся к скорости и часто упоминаются, когда речь заходит об игровых мониторах и их оптимальной производительности. Часто упоминаемые в одном и том же предложении, время отклика и задержка ввода иногда и вовсе смешиваются друг с другом.
Обе характеристики рассказывают нам о скорости игрового монитора, о скорости с которой изображения меняются на дисплее, и реагируют на Ваши действия. При этом время отклика полностью зависит от самого монитора, в то время как задержка ввода включает весь процесс от нажатия кнопки до появления соответствующей картинки на экране.
Время отклика
Время отклика – это промежуток времени, в течение которого монитор или панель изменяют свойства каждого пикселя. Время отклика говорит нам о том, сколько времени понадобится монитору, чтобы изменить цвет пикселя, например, с красного на зеленый. Чем быстрее обновляются пиксели, тем быстрее и плавнее обновится изображение на экране
Представьте, что Вы играете в игру от первого лица и решаете повернуть налево, вниз по переулку. Ваш монитор получает данные с вашего ПК или консоли и должен обновить изображение и отобразить новую картинку. Монитор с 5 мс делает это в пять раз медленнее, чем экран 1 мс. Конечно, мы говорим о миллисекундах, поэтому разница может быть не столь заметна невооруженным глазом. Но медленное время отклика будет способствовать общей задержке ввода.
Различные типы панелей игровых мониторов имеют разное время отклика. Самый быстрый отклик имеют панели TN, поэтому они лучше всего подходят для конкурентных игр. По сути, все мониторы с панелью TN работают 1 мс, поэтому это единственный тип панелей, который способен поддерживать частоту обновления до 240 Гц. Панели VA и IPS обычно имеют время отклика от 2 мс до 5 мс, но обеспечивают отличные цвета и углы обзора. Если вы хотите узнать больше о разных технологиях панелей, то эта статья для Вас.
Панели TN выполняют обработку изображения с наименьшим количеством пикселей из трех основных типов панелей. Это объясняет их высокую скорость. Панели VA и IPS были разработаны для отличной цветопередачи, поэтому им требуется больше обработки пикселей и время отклика увеличивается.
Кроме того, важно отметить, что чем больше экран, тем медленнее будет время отклика. Аналогично, чем выше разрешение, тем медленнее отклик. При большом размере панели сигналы должны проходить большее расстояние, а более высокое разрешение означает большее количество пикселей для обновления. С развитием технологий, разницы между мониторами с диагональю от 24 до 32 дюймов уменьшилась практически до нуля, а дисплеи 4K работают так же быстро, как и мониторы с разрешением 1080p.
От нажатия до отображения картинки на экране
Общее время, необходимое для показа действия на экране – это задержка ввода. Пользователь нажимает клавишу или кнопку на клавиатуре или контроллере, а затем ожидает соответствующего действия на игровом мониторе или телевизоре. Время, необходимое, чтобы показать картинку на экране, которая соответствует проделанному действию и есть задержка ввода.
Важно отметить, что любая обработка изображений, выполняемая на вашем мониторе, увеличивает задержку. Даже если базовое время отклика составляет 1 мс, но если к этому добавить HDR, динамическую яркость / контрастность, повышение резкости по краям, локальное затемнение и тому подобное, то задержка увеличивается. Поэтому для игр мы рекомендуем использовать режим ПК или режим игры. Они отключают большую часть обработки изображений, чтобы уменьшить время отклика на мониторе.
Как измеряется задержка ввода?
Задержка ввода, как и время отклика измеряется в миллисекундах. Но порядок цифр будет намного больше. Действительно хорошие мониторы, такие как BenQ EL2870U, монитор 4K EW3270U и игровой монитор 144 Гц EX2780Q имеют задержку 9–10 мс, основанные на обзорах сторонних производителей, но среднее значение колеблется где-то между 15 мс и 22 мс для типичных игровых мониторов и игровых систем.
С такими показателями задержки Вы не испытаете никаких проблем с картинкой. Только если задержка превышает 40 мс, вы ощутите проблему с синхронизацией. Играть на мониторах с общей задержкой в 50 мс в принципе невозможно.
Выводы
При покупке игрового монитора, изучите его, прочитайте отзывы и ознакомьтесь со спецификациями. Вы, скорее всего, узнаете о времени отклика достаточно легко, а обзоры и форумы прольют свет на величину задержки ввода.
Время отклика – это характеристика монитора и помогает понять, насколько быстро работает сама панель. Общее время задержки относится к гораздо более полезному числу, потому что оно включает время отклика и иллюстрирует реальный игровой опыт.