Представляем NVIDIA Reflex: набор технологий для измерения и оптимизации задержки системы в соревновательных играх

Сегодня 73% пользователей GeForce играют в соревновательные или киберспортивные игры. В 2019 году чемпионат самой популярной киберспортивной игры League of Legends посмотрели более 100 миллионов зрителей — больше, чем Суперкубок НФЛ. Поскольку киберспорт соперничает с традиционными видами спорта, как по количеству зрителей, так и игрового времени, геймерам сейчас как никогда важно получить максимум возможностей своих ПК и видеокарт. Именно поэтому несколько лет назад NVIDIA инвестировала в лабораторию киберспорта, где аналитики NVIDIA Research изучают производительность игроков и оборудования в соревновательных играх. Сегодня мы хотим поделиться первыми основными результатами наших исследований.

Наряду с новыми видеокартами GeForce RTX 30 мы представляем NVIDIA Reflex, набор передовых технологий для видеокарт, дисплеев G-SYNC и программного обеспечения, который позволяет измерять и снижать задержку системы в соревновательных играх (или задержку между вводом и отображением на экране). Уменьшение задержки системы чрезвычайно важно для киберспортсменов, так как обеспечивает более быстрое реагирование ПК и дисплеев на нажатие мыши и ввод с клавиатуры. Это позволяет геймерам побеждать быстрее и точнее попадать в цель.

 

NVIDIA Reflex содержит две основные технологии:

SDK NVIDIA Reflex: новый набор API для разработчиков игр, позволяющий определить и снизить задержку рендеринга. Благодаря непосредственной интеграции с игрой режим Reflex Low Latency оптимизирует работу игрового движка для своевременного завершения рендеринга, устраняя очередь рендеринга на GPU и снижая нагрузку на процессор. Это позволяет снизить задержку системы значительно эффективнее существующих технологий драйвера, таких как режим низкой задержки NVIDIA.

Режим Reflex Low Latency скоро появится в топовых соревновательных играх, в том числе Apex Legends, Call of Duty: Black Ops Cold War, Call of Duty: Modern Warfare - Warzone, Destiny 2, Fortnite и Valorant, и позволит снизить задержку системы в требовательных играх на GeForce GTX 900 и более новых видеокартах NVIDIA.

NVIDIA Reflex Latency Analyzer: передовой инструмент для измерения задержки системы интегрирован в новые дисплеи G-SYNC с частотой 360 Гц для киберспорта от Acer, ASUS, MSI и Dell и поддерживается ведущими периферийными устройствами ASUS, Logitech, SteelSeries и Razer для киберспорта.

Reflex Latency Analyzer распознает клики мышью и затем измеряет время до изменения соответствующих пикселей (например вспышки при выстреле) на экране. До настоящего времени такой способ измерения был невозможным, так как требовал покупки специализированных высокоскоростных камер и оборудования на сумму более $7000.

Если в прошлом геймерам приходилось наугад определять задержку системы, руководствуясь показателями производительности, например частотой кадров в секунду (FPS), то теперь система Reflex Latency Analyzer предоставляет гораздо более точные и полные данные о производительности мыши, ПК и дисплея. С Reflex Latency Analyzer киберспортсмены могут играть, будучи уверенными в надлежащей работе системы.

NVIDIA Reflex Latency Analyzer: передовой инструмент для измерения задержки системы интегрирован в новые дисплеи G-SYNC с частотой 360 Гц для киберспорта от Acer, ASUS, MSI и Dell и поддерживается ведущими периферийными устройствами ASUS, Logitech и Razer для киберспорта.

Reflex Latency Analyzer распознает клики мышью и затем измеряет время до изменения соответствующих пикселей (например вспышки при выстреле) на экране. До настоящего времени такой способ измерения был невозможным, так как требовал покупки специализированных высокоскоростных камер и оборудования на сумму более $7000.

 

Если в прошлом геймерам приходилось наугад определять задержку системы, руководствуясь показателями производительности, например частотой кадров в секунду (FPS), то теперь система Reflex Latency Analyzer предоставляет гораздо более точные и полные данные о производительности мыши, ПК и дисплея. С Reflex Latency Analyzer киберспортсмены могут играть, будучи уверенными в надлежащей работе системы.

 

В этой статье нам предстоит подробно рассмотреть задержку системы и технологию NVIDIA Reflex, так что начнем!

Что такое задержка системы?

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

Геймеры в основном сталкиваются с двумя видами задержки: задержка системы и задержка сети.

Задержка сети — это круговая задержка между клиентом и сервером, более известная как «пинг».

 

Это время может по-разному влиять на геймплей в зависимости от того, как сетевой код игры справляется с сетевой задержкой. Приведем несколько примеров:

  • Задержка подтверждения попадания: например, вы попадаете в цель, но получаете подтверждение гораздо позже. Это может привести к напрасной трате боеприпасов или задержке при переходе к следующей цели.
  • Задержка взаимодействия с другими объектами, например открытия дверей или сундука с лутом.
  • Отставание позиции соперников приводит к так называемому «преимуществу выглядывающего» (peeker’s advantage). Мы еще вернемся к этому
 

Обратите внимание, что задержка сети не равнозначна нестабильной работе сети, например потере или неупорядоченной передачи пакетов. Нестабильность сети может вызывать такие проблемы, как отбрасывание игрока назад (rubberbanding) и десинхронизация. Rubberbanding — это эффект, при котором игрока отбрасывает на позицию, где он был несколько секунд назад. Как будто игрока притягивает резиновой нитью, и он оказывается на предыдущей позиции, которую видит сервер. Десинхронизация — это потеря пакетов, которая приводит к зависанию сети. Это выглядит так, как будто противники остановились на секунду, а затем телепортировались на правильную позицию. Эти две распространенные проблемы не относятся к задержкам сети, но обычно возникают при долгой передаче пакетов и таким образом связаны с более высокой задержкой.

Задержка системы — это время с момента нажатия на кнопку мыши или клавиатуры до изменения пикселей на экране, таким как вспышка от выстрела у дула пистолета или движение персонажа. Это также называют общей задержкой системы. Такая задержка не связана с игровым сервером, а только с устройствами управления, ПК и дисплеем.

 

Эта задержка также по-разному влияет на геймплей. Вот несколько примеров:

  • Замедленное реагирование: например, вы двигаете мышкой, но цель на экране отстает.
  • Отставание выстрелов: вы делаете выстрел, но отображение попаданий, следы от пуль и отдача оружия появляются позже нажатия мыши.
  • Отставание позиционирования противника: так называемое «преимущество выглядывающего». (да, оно также зависит от задержки системы!)
 

В целом, есть три основных аспекта задержки системы: задержка периферийного устройства (например мышки), ПК и дисплея. К сожалению, о задержке системы сложно говорить, так как термин «задержка ввода» или «лаг» используется для описания задержки различных частей системы.

Например, термин «задержка ввода» можно встретить на коробке из-под мыши, где речь идет о скорости обработки кликов. Также его можно встретить на упаковке монитора, где он означает необходимое количество времени для обработки кадра. Понятие также используется в играх и программных инструментах и обозначает время, которое требуется для обработки действий игрока в игре. Если все это задержка ввода, то что же это на самом деле?

Общая задержка системы

Давайте копнем чуть глубже и найдем более точное определение для некоторых терминов, чем «задержка ввода».

  • Задержка периферийного устройства: время, которое требуется устройству ввода для обработки ваших действий и передачи данных на ПК
  • Задержка игры: время, которое требуется процессору для обработки ввода или изменений мира и отправки нового кадра на GPU для рендеринга
  • Задержка рендеринга: время между получением кадра в очереди и завершением рендеринга на GPU
  • Задержка ПК: время обработки кадра на ПК. Это включает в себя задержку игры и рендеринга
  • Задержка дисплея: время до отображения нового изображения после завершения рендеринга кадра на GPU
  • Задержка системы: включает все время: от начала задержки периферийного устройства до конца задержки дисплея

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

В чем разница между FPS и задержкой системы?

В целом, существует корреляция между высоким FPS и низкой задержкой, но она далека от соотношения 1:1. Чтобы лучше разобраться, вернемся немного назад и рассмотрим, как мы можем измерить взаимодействие с ПК. Во-первых, это количество картинок, которое дисплей может отобразить за секунду. Это число и есть показатель производительности или FPS (количество кадров в секунду). Во-вторых, это время, которое требуется для отображения наших действий на экране (этот промежуток и называется задержкой системы).

Если ПК может обеспечить 1000 FPS, но для отображения ввода на экране требуется секунда, такой геймплей вряд ли можно назвать хорошим. И, наоборот, если наши действия мгновенно отображаются, но при этом частота 5 кадров в секунду, то это явно недостаточный уровень игровых возможностей.

Итак, что же из этого больше влияет на геймплей? Больше года назад мы начали искать ответ на этот вопрос и получили достаточно интересные результаты. На SIGGRAPH Asia мы опубликовали полное исследование, но, в общем и целом, мы обнаружили, что в тренажере стрельбы задержка системы гораздо больше влияет на точность выстрелов тестируемых, чем частота кадров их мониторов. Но почему так происходит?

Почему задержка системы влияет на геймплей?

Сначала рассмотрим примеры из реальных игр:

 

Во-первых, рассмотрим регистрацию попаданий. Термином «Регистрация попаданий» игроки описывают то, как в игре фиксируются успешные выстрелы в противника. Мы часто обвиняем регистрацию попаданий, когда ТОЧНО ЗНАЕМ, что попали в цель. Все мы испытывали это. Но действительно ли проблема в регистрации попаданий?

article-fpo

В выстреле выше игрок нажал кнопку мыши, когда перекрестие прицела было над целью, но все равно промахнулся. Из-за задержки системы и движения противника игровой движок посчитал, что перекрестие находилось над целью. На самом деле изображение на экране отстает от состояния игрового движка. Это происходит просто потому, что ПК требуется некоторое время для обработки информации, рендеринга кадра и его отображения на экране. В играх, где счет идет на доли секунды, 30-40 мс задержки могут означать пропуск победного фрага.

Во-вторых, поговорим о «преимуществе выглядывающего». На высоких уровнях соревновательных игр вы обычно удерживаете угол при наличии значительного преимущества (когда вы находитесь дальше от угла, чем противник), чтобы компенсировать так называемое «преимущество выглядывающего» в онлайн-играх.

Преимущество выглядывающего — это дополнительная доля секунды, которую получает атакующий, когда выглядывает из-за угла на игрока, удерживающего угол. Так как требуется время для передачи по сети информации о позиции атакующего игрока, атакующий игрок получает преимущество. Чтобы нивелировать это, игроки прибегают к jiggle peek — быстро выглядывают и возвращаются обратно в укрытие, так как это позволяет им увидеть противника раньше, чем их заметят, и выиграть долю секунды. Это явление часто рассматривается как особенность сетевого кода игры или задержка сети. Однако задержка системы может сыграть значительную роль для преимущества выглядывающего.

article-fpo

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

Аналогично регистрации попаданий, при увеличении задержки системы отстает отображение мира, что позволяет противнику увидеть вас быстрее. Если ваша задержка системы намного ниже, чем у противника, теоретически можно полностью нивелировать преимущество выглядывающего. Здесь свою роль играют эффекты сетевого кода игры, но в целом более низкая задержка системы позволяет компенсировать преимущество выглядывающего при обороне и получить преимущество при атаке.

Наконец, обсудим точность прицеливания. В частности, рассмотрим флик-шоты (flick shot). Отработка флик-шотов, возможно, самая важная тренировка в соревновательных играх, таких как CS:GO или Valorant. За долю секунды нужно навести прицел, отдернуть в сторону и выстрелить с максимальной точностью, что требует точных до доли секунды действий. Казалось ли вам когда-нибудь, что при всех усилиях флик-шоты все равно не удаются?

Точность прицеливания в слоу-мо

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

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

В соревновательных играх высокий FPS и частота обновления экрана (Гц) снижают задержку системы, создавая больше возможностей для отображения ваших действий на экране. Даже незначительное уменьшение задержки системы влияет на успешность флик-шотов. В последней публикации в блоге Esports Research аналитики NVIDIA Research изучили, как разные уровни задержки системы влияют на производительность игрока.

Специалисты NVIDIA Research обнаружили, что даже незначительная разница в задержке системы (12 против 20 мс) может значительно повлиять на точность прицеливания. На самом деле на ПК с задержкой 12 и 20 мс средняя разница для прицеливания (время между наведением на цель и выстрелом) составила 182 мс, что примерно в 22 раза превышает разницу в задержке системы. Возьмем аналогичную по сложности цель и сервер Valorant или CS:GO с тикрейтом 128, и тогда на ПК с задержкой 12 мс выстрелы в среднем будут попадать в цель на 23 тика раньше. Однако большинство геймеров играют на системах с задержкой 50–100 мс!

Но действительно ли это повышает результаты в игре? Успех в соревновательных играх складывается не только из механических навыков. Игровое чутье и выработанная стратегия могут в значительной степени повысить шансы на победу. Однако при рассмотрении данных по PUBG и Fortnite мы видим аналогичную корреляцию между более высоким FPS (низкой задержкой) и показателем K/D (kill to death).

Корреляция ни в коем случае не означает причинно-следственную связь. Но, применив полученные выше результаты исследований к этой корреляции, мы получим достаточно доказательств того, что чем выше FPS и ниже задержка, тем больше точных выстрелов и выше показатель K/D.

Снижение задержки системы с технологией NVIDIA Reflex

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

SDK NVIDIA Reflex

SDK Reflex позволяет разработчикам внедрять режим низкой задержки, который оптимизирует работу игрового движка для своевременного завершения рендеринга, устраняя очередь рендеринга и снижая обратное давление на CPU при ограничении ресурсов GPU.

На изображении выше можно увидеть перегруженность очереди кадров на рендеринг. Процессор обрабатывает кадры быстрее, чем GPU успевает их отрисовать, из-за чего возникает очередь и повышается задержка системы. SDK Reflex немного схож с режимом сверхнизкой задержки в драйвере, но непосредственная интеграция в игру позволяет контролировать нагрузку, которую получает процессор из очереди рендеринга и других этапов воронки. С режимом сверхнизкой задержки драйвер гораздо меньше может контролировать этот процесс. В то время как этот режим часто уменьшает очередь на рендеринг, он не может снизить нагрузку на игру и процессор. Таким образом, SDK Reflex обеспечивает в целом гораздо больше преимуществ, чем режим сверхнизкой задержки в драйвере.

При интеграции SDK Reflex разработчики могут откладывать выборку ввода и моделирование игры, динамически регулируя время отправки задач рендеринга на GPU и их своевременной обработки.

Соревновательные игры динамично переключают нагрузку между GPU и CPU. Если в игре происходит взрыв с большим количеством частиц, и основная нагрузка приходится на GPU, SDK Reflex будет поддерживать низкую задержку, не допуская создания очереди задач для обработки на GPU. Если рендеринг простой, и игра в основном нагружает CPU, то SDK обеспечит низкую задержку, поддерживая высокую тактовую частоту графического процессора. Независимо от этапа рендеринга, SDK Reflex интеллектуально снижает задержку для конкретной конфигурации. Благодаря SDK Reflex геймеры могут играть с оптимальной задержкой рендеринга, не снижая настройки до минимума.

Соревновательные игры динамично переключают нагрузку между GPU и CPU. Если в игре происходит взрыв с большим количеством частиц, и основная нагрузка приходится на GPU, SDK Reflex будет поддерживать низкую задержку, не допуская создания очереди задач для обработки на GPU. Если рендеринг простой, и игра в основном нагружает CPU, то SDK обеспечит низкую задержку, поддерживая высокую тактовую частоту графического процессора. Независимо от этапа рендеринга, SDK Reflex интеллектуально снижает задержку для конкретной конфигурации. Благодаря SDK Reflex геймеры могут играть с оптимальной задержкой рендеринга, не снижая настройки до минимума.

article-fpo

Соревновательные игры динамично переключают нагрузку между GPU и CPU. Если в игре происходит взрыв с большим количеством частиц, и основная нагрузка приходится на GPU, SDK Reflex будет поддерживать низкую задержку, не допуская создания очереди задач для обработки на GPU. Если рендеринг простой, и игра в основном нагружает CPU, то SDK обеспечит низкую задержку, поддерживая высокую тактовую частоту графического процессора. Независимо от этапа рендеринга, SDK Reflex интеллектуально снижает задержку для конкретной конфигурации. Благодаря SDK Reflex геймеры могут играть с оптимальной задержкой рендеринга, не снижая настройки до минимума.

На момент анонса SDK NVIDIA Reflex поддержка технологии планируется в Apex Legends, Fortnite и Valorant с помощью драйвера Game Ready, который выйдет XX сентября 2020 года. Также объявлено о скором появлении NVIDIA Reflex в таких играх, как: Call of Duty: Black Ops Cold War, Cuisine Royale, Destiny 2, Enlisted и Mordhau.

SDK NVIDIA Reflex поддерживают GeForce GTX 900 2014 года выпуска и все более новые видеокарты. Однако Low Latency Boost на видеокартах GeForce RTX 30 обеспечивает чуть более высокую тактовую частоту, что еще больше снижает задержку.

Если вы хотите разобраться во всех нюансах работы SDK, то конвейер рендеринга, нагрузка на CPU и GPU, а также механизм снижения задержки подробно описаны в дополнительном разделе.

Расширенные параметры задержки системы на панели управления

Режим сверхнизкой задержки

Если игра не поддерживает SDK Reflex, вы все равно можете частично снизить задержку системы, включив режим NVIDIA Ultra Low Latency на панели управления NVIDIA. Просто откройте панель управления, зайдите в раздел Manage 3D Settings, далее Low Latency Mode и выберите Ultra. Как мы уже говорили, это позволит снизить задержку рендеринга, но без полного управления конвейером.

Если игра поддерживает режим NVIDIA Reflex Low Latency, мы рекомендуем использовать его с режимом Ultra Low Latency в драйвере. Тем не менее, если включены оба режима, Reflex Low Latency автоматически будет иметь более высокий приоритет.

Reflex SDK reduces system latency beyond the Ultra Low Latency mode in 3D Settings

Prefer Maximum Performance

В графическом драйвере NVIDIA уже давно есть опция Power Management Mode. Функция позволяет игрокам выбрать режим работы GPU в задачах, нагружающих процессор. При высокой загрузке GPU всегда работает с максимальной производительностью. Однако если на GPU мало задач, вы можете сэкономить энергопотребление путем снижения тактовой частоты, сохраняя при этом уровень FPS.

Аналогично функции Low Latency Boost в SDK Reflex, режим Prefer Maximum Performance переопределяет экономию энергопотребления в графическом процессоре и обеспечивает стабильную высокую тактовую частоту. Такое повышение тактовой частоты позволяет уменьшить задержку в задачах, нагружающих CPU, за счет более высокого энергопотребления. Этот режим предназначен для геймеров, которые хотят использовать каждую миллисекунду задержки, независимо от уровня энергопотребления.

На видеокартах GeForce RTX 30 можно установить более высокую тактовую частоту, чем прежде, что позволяет GPU достичь минимальной задержки рендеринга при высокой нагрузке на CPU. Пользователи более старых видеокарт могут по-прежнему использовать Prefer Maximum Performance и поддерживать базовую тактовую частоту.

Автоматическая настройка в GeForce Experience

В обновлении GeForce Experience,которое выйдет ХХ сентября, будет доступна новая бета-функция панели производительности на внутриигровом оверлее, которая позволяет игрокам настроить в один клик более низкую задержку рендеринга для своей видеокарты.

Продвинутый инструмент для автоматической настройки сканирует максимальный скачок частоты видеокарты в каждой точке на кривой. После сканирования и применения оптимальных настроек к видеокарте инструмент еще раз проводит тестирование и затем поддерживает эту настройку постоянно.

Подробную информацию и рекомендации по использованию этой функции читайте на nvidia.com/ru-ru.

Измерение задержки системы с технологией NVIDIA Reflex

Одна из основных причин, по которой не так много говорили о задержке системы, заключается в том, что ее очень сложно точно измерить. Чтобы определить задержку системы, устройство должно точно знать, когда начать и завершить измерение.

Обычно задержку системы измеряли при помощи дорогостоящих и громоздких высокоскоростных камер, инженерного оборудования, модифицированной мыши и светодиода для отслеживания момента нажатия кнопки. При помощи камеры со скоростью 1000 FPS можно измерить минимум 1 мс задержки. Однако минимальная стоимость такого оборудования начинается от $7000. Даже если у вас есть подобная установка, каждое измерение занимает около 3 минут, что достаточно много для 99,9% геймеров.

Анализатор задержки NVIDIA Reflex

Совместимые с G-SYNC дисплеи с частотой 360 Гц, которые поступят в продажу осенью, будут оснащены новой функцией NVIDIA Reflex Latency Analyzer. Это передовое дополнение позволяет геймерам измерить отзывчивость своей системы, определить и настроить производительность ПК до начала игры.

 

Чтобы получить доступ к этой функции, просто подключите мышь к предназначенному для Reflex Latency Analyzer USB-порту на дисплее G-SYNC с частотой 360 Гц. USB-порт для Reflex на дисплее — это простой режим для ПК, который следит за движениями мыши, не повышая задержку.

Reflex Latency Analyzer распознает клики мышкой, измеряет время до изменения пикселей на экране (например при выстреле) и показывает данные об общей задержке системы.

Новый оверлей в GeForce Experience отображает показатели производительности в реальном времени. Чтобы посмотреть показатели задержки, перейдите в «Оверлей производительности» (Performance Overlay) и включите параметр «Показатели задержки» (Latency Metrics), который появится в сентябре.

NVIDIA Reflex Latency Analyzer отдельно измеряет задержку мыши, ПК и дисплея, а также системы в целом.

Для измерения задержки ПК и дисплея с Reflex Latency Analyzer можно использовать любую мышь (кроме подключаемых по Bluetooth).Однако используя совместимую мышь Logitech, Razer или ASUS, вы также сможете измерить задержку мыши и получить полное представление о задержке системы.

Мы также опубликуем открытую базу данных по средним показателям задержки мыши, с которой можно свериться, если GeForce Experience распознает вашу мышь. В будущем геймеры смогут добавлять свои показатели в базу. Подробнее мы напишем об этом позже.

На момент написания статьи о поддержке NVIDIA Reflex Latency Analyzer сообщили три производителя периферии: ASUS, Logitech и Razer Информацию о совместимости с NVIDIA Reflex Latency Analyzer можно найти на их сайтах и страницах в социальных сетях. А также обратите внимание на дисплеи G-SYNC с частотой 360 Гц и встроенной технологией NVIDIA Reflex Latency Analyzer от ASUS, ACER, Dell и MSI, которые поступят в продажу осенью.

Программные метрики NVIDIA Reflex

Если вы хотите измерить задержку, вы можете сделать это до покупки нового дисплея с частотой 360 Гц. Любая игра, в которой интегрирован SDK NVIDIA Reflex, также может отображать показатели задержки игры и рендеринга в своей статистике. Это не позволяет определить общую задержку системы, но поможет найти путь к оптимизации задержки.

В GeForce Experience теперь также появился оверлей производительности, который позволяет отслеживать текущую задержку рендеринга в любой игре. Текущая задержка рендеринга отслеживает вызов с помощью очереди рендеринга и рендеринга на GPU. Так как это последний вызов кадра, то показатель будет немного ниже, чем при измерении с SDK NVIDIA Reflex, но все равно позволяет получить представление о задержке рендеринга. Мы добавим поддержку задержки рендеринга в следующем обновлении GeForce Experience в конце месяца.

Когда функция будет реализована, вам нужно будет только обновить драйвер Game Ready и приложение GeForce Experience до последней версии, зайти в меню Performance, выбрать Latency Metrics и включить Performance overlay.

Тренировка стрельбы с низкой задержкой

В дополнение к инструментам для измерения задержки мы объединились с The Meta, разработчиками KovaaK 2.0, чтобы в следующем обновлении клиента добавить новый режим NVIDIA Experiments, который поможет геймерам улучшить производительность и свои навыки.

Вы можете зайти в режим NVIDIA Experiments из песочницы или тренажера. И там выбрать интересующий вас эксперимент. В KovaaK 2.0 мы также интегрировали SDK NVIDIA Reflex и ряд других технологий, которые позволят игрокам ощутить разницу между высокой и низкой задержкой системы.

Участвуя в экспериментах, вы не только улучшаете навыки стрельбы, но и вносите свой вклад в важное исследование. Совместная работа с The Meta над KovaaK 2.0 позволяет нам тестировать и разрушать мифы в мире соревновательных игр. Например, в одном из первых экспериментов мы попытались определить закономерность в выборе цвета прицела, основываясь на спорах геймеров вокруг цвета контура прицела в Valorant.

KovaaK 2.0 от The Meta уже доступен в Steam, а поддержка режима NVIDIA Experiments появится позже.

Режим эксперта: задержка системы на продвинутом уровне

Теперь разберем это более детально. В этом разделе мы рассмотрим, как на самом деле клики мышью действуют на пиксели на экране, понятие игры и конвейера рендеринга, влияние нагрузки CPU и GPU на задержку, наложение в конвейере рендеринга, а также некоторые инструменты, которые помогут визуализировать происходящее в системе.

Как ваши действия отображаются на экране

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

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

  • Аппаратное оборудование мыши: первый электрической контакт, когда мышь готова к передаче данных по проводу. В самой мыши есть несколько процедур (например устранение ложных нажатий), которые повышают задержку при нажатии кнопки мыши. Обратите внимание, это важные процедуры, которые предотвращают случайное нажатие. Эти дополнительные клики часто называют двойными, когда отправляются два клика вместо одного из-за слишком активного определения нажатий. Таким образом, задержка — это не единственный важный параметр производительности мыши.
  • Аппаратное обеспечение USB мыши: после завершения распознавания нажатий мышь должна дождаться следующего опроса, чтобы отправить пакеты. Это время отражено в аппаратном обеспечении USB.
  • ПО USB мыши: это время, которое ОС и драйвер мыши используют для обработки пакета для передачи по USB.
  • Выборка: клики поступают в ОС в зависимости от частоты опроса мыши, и в этот момент возможно ожидание следующей выборки для отображения в игре. Это время ожидания называется задержкой выборки. Она может увеличиваться или уменьшаться в зависимости от частоты кадров CPU.
  • Моделирование: в играх постоянно обновляется состояние мира. Это обновление часто называют моделированием. Моделирование включает в себя обновление анимации, состояния игры и изменения в связи с действиями игрока. Именно при моделировании ваши клики мышкой изменяют состояние игры.
  • Отправка на рендеринг: как только моделирование формирует следующий кадр, оно начинает передавать задачи рендеринга в среду исполнения графического API. Среда исполнения в свою очередь передает команды рендеринга на графический драйвер.
  • Графический драйвер: графический драйвер отвечает за взаимодействие с GPU и отправку групп команд. В зависимости от графического API драйвер может выполнять группировку для разработчика или же разработчик может отвечать за группировку задач рендеринга.
  • Очередь рендеринга: после отправки задач на GPU они оказываются в очереди на рендеринг. Очередь на рендеринг призвана обеспечить непрерывное поступление задач из буфера для выполнения на GPU. Это помогает максимизировать FPS (производительность), но может привести к задержке.
  • Рендеринг: время для всех этапов рендеринга, связанных с одним кадром.
  • Компоновка: в зависимости от режима отображения (полноэкранный, без полей, оконный), диспетчер окон рабочего стола (Desktop Windows Manager) в ОС должен отправить дополнительные задачи на рендеринг, чтобы отобразить вид рабочего стола для конкретного кадра. Это также может повысить задержку. Именно поэтому всегда рекомендуется играть в полноэкранном режиме, чтобы минимизировать задержку компоновки.
  • Сканирование: после завершения компоновки финальный буфер кадра готов к отображению на экране. Затем GPU сигнализирует, что буфер кадра готов к отображению, и меняет буфер кадра, из которого будет считываться информация для сканирования. Если включена вертикальная синхронизация (VSYNC), то может возникнуть ожидание из-за синхронизации с дисплеем. После этого GPU один за другим отправляет кадры на дисплей в зависимости от его частоты обновления (Гц). Учитывая, что сканирование является функцией частоты обновления, мы включим его в задержку дисплея.
  • Обработка отображения: время, которое требуется дисплею для обработки входящего кадра (строк пикселей) и инициирования отклика пикселей.
  • Отклик пикселей: время, за которое пиксели меняют цвет. Так как пиксели — это действительно жидкие кристаллы, для изменения цвета требуется время. Время отклика пикселей может отличаться в зависимости от сложности изменений, а также от технологии экрана.

Конвейер задержки из-за ограничений GPU

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

Начнем с зависящей от GPU задержки при отключенной VSYNC.

В этом примере мы упростили конвейер до 5 основных этапов: периферийное устройство, CPU, очередь рендеринга, GPU и дисплей.

Давайте рассмотрим на примере кадра 4, что происходит на каждом этапе:

  • Периферийное устройство: ввод с мыши или клавиатуры возможен в любое время, это зависит от пользователя. В этом примере на мышь нажали до того, как CPU был готов принять ввод, поэтому событие ввода пока ожидает. Это аналогично ожиданию поезда на вокзале.
  • CPU: начало работы CPU (моделирование) обычно начинается после завершения текущего цикла. При нагрузке на GPU процессор быстрее выполняет свои задачи, а значит, может опережать GPU. Однако большинство графических API (DX11, DX12, Vulkan и т. д.) ограничивают число кадров, которые заранее передает CPU. В примере выше CPU может передать заранее два кадра. Цикл CPU завершается, когда драйвер отправляет задачи на GPU. На самом деле цикл CPU пересекается с очередью рендеринга, но мы вернемся к этому позже.
  • Очередь рендеринга: ее можно представить как любую другую очередь. Тот, кто первым встает в очередь, первым покидает ее. Если GPU обрабатывает кадр, когда CPU отправляет новую задачу, то задача оказывается в очереди на рендеринг. Это позволяет организовать постоянную подачу задач на GPU и обеспечить равномерный тайминг кадров, однако может создать значительное задержку.
  • GPU: фактическое время рендеринга кадра на GPU. При нагрузке на GPU задачи накапливаются, так как графический процессор становится узким местом.
  • Дисплей: в этом случае VSYNC отключена. Когда GPU заканчивает рендеринг, он сразу же сканирует новый буфер, независимо от того, на каком этапе находится дисплей. Это приводит к разрывам изображения, но геймеры часто выбирают этот вариант из-за минимальной задержки. Читайте подробнее о VSYNC и G-SYNC в следующих статьях.

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

Мы также можем увидеть задержку системы: от момента нажатия мыши до окончания отображения на дисплее. Задержка обычно выше, если ограничена GPU, так как формируется очередь рендеринга, и игра опережает текущий цикл и создает новые кадры, которые будет отправлять с отставанием.

Конвейер задержки SDK NVIDIA Reflex

Теперь рассмотрим, как SDK NVIDIA Reflex влияет на конвейер задержки, зависящей от GPU:

Как вы видите, очередь рендеринга почти исчезла. SDK Reflex не отключил ее совсем, а в ней просто нет кадров. Но как это работает?

Фактически игра может управлять скоростью работы CPU, чтобы он не опережал GPU. Также можно своевременно отправлять задачи, чтобы GPU работал без простоев. При более позднем начале работы CPU события ввода успевают попасть в выборку в последнюю секунду, что также снижает задержку.

Кроме того, если технология SDK сокращает очередь на рендеринг, уменьшается и задержка игры. Это снижение достигается путем уменьшения обратного давления, которое создается в очереди на рендеринге из-за ограничений GPU.

Для тех, кто уже оптимизировал задержку, это аналогично ограничению FPS для снижения задержки. Хорошая технология ограничения FPS будет задерживать игру в определенные моменты, чтобы снизить задержку и обратное давление на CPU.

Однако NVIDIA Reflex позволяет не ограничивать FPS заданным уровнем, а повысить частоту кадров и дополнительно снизить задержку. Это можно рассматривать как «динамичное» ограничение частоты смены кадров, которое постоянно обеспечивает оптимальную задержку.

Конвейер задержки из-за ограничений CPU

При использовании режима Reflex Low Latency в играх, нагружающих GPU, конвейер работает как при переносе нагрузки на CPU, даже при максимальной загруженности и утилизации графического процессора. Рассмотрим конвейер задержки из-за ограничений CPU.

Как видно на графике, частота кадров ограничена CPU. Так как CPU не может опережать GPU, очередь рендеринга не создается. Как правило, задержка из-за ограничений CPU более низкая, чем из-за ограничений GPU.

В этом случае более быстрый GPU не сможет повысить FPS, но при этом задержка будет ниже. С выключенной VSYNC или с активной G-SYNC более быстрый GPU раньше отправляет обработанный кадр на дисплей.

Если вы когда-нибудь задумывались, почему снижение настроек делает игру более отзывчивой, то вот ответ. Снижение настроек часто переносит нагрузку на CPU (устранение очереди) и одновременно ускоряет рендеринг на GPU, дополнительно снижая задержку.

С режимом Reflex Low Latency геймерам не нужно по умолчанию отключать свои настройки. Так как мы можем уменьшить очередь рендеринга, дополнительные задачи только увеличат время рендеринга на GPU.

Кроме того, даже при ограничениях CPU в режиме Reflex Low Latency есть параметр Boost, который отключает экономию энергопотребления в пользу небольшого уменьшения задержки. При высокой нагрузке на CPU и низкой утилизации GPU поддерживается разгон графического процессора, чтобы ускорить обработку и отправлять кадры на дисплей максимально быстро. Как правило, параметр Boost обеспечивает очень скромное преимущество, но позволяет извлечь из конвейера задержки ценные доли секунды.

Анализ задержки ПК и наложения задержек

Готовы погрузиться еще глубже? Рассмотрим еще один кадр, но в этот раз на примере конвейера с полным наложением.

Как видите, в основном наложение задержек происходит в самой середине задержки ПК между моделированием и завершением рендеринга на GPU. Но почему так происходит?

Кадры обрабатываются с помощью отдельных команд, так называемых вызовов отрисовки (drawcall). Все эти вызовы группируются в пакеты задач. Затем графический драйвер отправляет эти пакеты на GPU для рендеринга. Это позволяет начать каждый этап раньше, чем завершится предыдущий, разделив кадр на маленькие фрагменты.

По мере выполнения задачи отправляются во фреймбуфер. Это продолжается до полного формирования кадра. После завершения рендеринга вторичный буфер заменяется другим доступным буфером в цепочке и отправляется для сканирования.

Это важно понимать при анализе задержки рендеринга и игры. Часто задержка игры накладывается на задержку рендеринга, а значит, при сложении этих показателей не получится суммы задержки.

Заключение

Задержка системы — это количественное измерение отзывчивости игры и ключевой фактор для точных выстрелов в шутерах от первого лица. NVIDIA Reflex позволяет разработчикам и игрокам оптимизировать задержку системы, а также предлагает простой инструмент для ее измерения.

Итак, NVIDIA Reflex обеспечивает полный набор технологий:

  • Технология снижения задержки:
    • SDK NVIDIA Reflex: набор инструментов для разработчиков позволяет использовать режим NVIDIA Reflex Low Latency для снижения задержки при высокой нагрузке на GPU
    • Настройки оптимизации задержки на панели управления в драйвере: улучшенные режимы Prefer maximum performance и Ultra Low Latency
    • Настройка производительности в GeForce Experience: автоматическая настройка разгона видеокарты в один клик
  • Инструменты для измерения задержки:
    • Метрики SDK NVIDIA Reflex: маркеры задержки игры и рендеринга позволяют разработчикам отображать показатели задержки в игре
    • NVIDIA Reflex Latency Analyser: новая функция в дисплеях G-SYNC с частотой 360 Гц, которая впервые позволяет измерить общую задержку системы
    • Мониторинг производительности GeForce Experience: боковая панель и внутриигровой оверлей, которые в реальном времени отражают показатели производительности, в том числе задержки

Мы рады представить NVIDIA Reflex и помочь вам добиться более отзывчивого геймплея. Одной из главных задач NVIDIA является снижение задержки, и мы продолжим работать над NVIDIA Reflex и расширять экосистему партнеров.

Мы будем рады узнать ваше мнение! На тематическом форуме Reflex можно обсудить задержку системы или задать вопрос о NVIDIA Reflex.

Поддержка режима NVIDIA Reflex Low Latency в драйвере Game Ready будет доступна с 17th сентября, а в играх будет реализована в течение этого года.Игровые мониторы G-SYNC с частотой 360 Гц от ACER, ASUS, Dell и MSI поступят в продажу этой осенью..

Comments