Развенчиваем мифы о производительности видеокарт | Включать или не включать V-Sync – вот в чём вопрос

При оценке видеокарт первым параметром, который хочется сравнить, является быстродействие. Насколько самые современные и самые быстрые решения обгоняют предыдущие продукты? Всемирная сеть пестрит данными тестирований, проведёнными тысячами онлайн-ресурсов, которые пытаются ответить на этот вопрос.

Итак, давайте начнём с изучения быстродействия и факторов, которые стоит учесть, если вы действительно желаете узнать, насколько быстра конкретная видеокарта.

Миф: частота кадров – это индикатор уровня графической производительности

Начнём с фактора, который нашим читателям, скорее всего, уже известен, но многие по-прежнему имеют неправильное представление о нём. Здравый смысл подсказывает, что пригодной для игры считается частота кадров 30 FPS и выше. Некоторые люди считают, что и меньшие значения сойдут для нормального геймплея, другие настаивают, что даже 30 FPS – это слишком мало.

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

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

Так что давайте на время отложим вопрос "Какой уровень производительности будет достаточным?" в сторону. Мы вернёмся к нему после того, как обсудим другие важные темы.

Представляем вертикальную синхронизацию (V-sync)

Мифы: Необязательно иметь частоту кадров выше 30 FPS, поскольку человеческий глаз не видит разницу. Значения выше 60 FPS на мониторе с частотой обновления 60 Гц необязательны, поскольку картинка уже отображается 60 раз в секунду. V-sync всегда нужно включать. V-sync всегда нужно выключать.

Как на самом деле отображаются визуализированные кадры? Почти все ЖК-мониторы работают таким образом, что изображение на экране обновляется фиксированное количество раз в секунду, как правило, 60. Хотя есть модели способные обновлять картинку на частоте 120 и 144 Гц. Данный механизм называется частота обновления и измеряется в герцах.

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

На изображении ниже показан ещё один артефакт, часто появляющийся на экране, но трудно фиксируемый. Поскольку данный артефакт связан с работой дисплея, на скриншотах его не видно, а вот невооружённым глазом он хорошо заметен. Чтобы его поймать, нужна высокоскоростная видеокамера. Утилита FCAT, которую мы использовали для захвата кадра в Battlefield 4 , показывает разрыв, но не эффект гоустинга.

Разрыв экрана очевиден на обоих изображениях из BioShock Infinite. Однако на панели Sharp с частотой обновления 60 Гц он проявляется гораздо явнее, чем на мониторе Asus с частотой обновления 120 Гц, поскольку частота обновления экрана VG236HE вдвое выше. Данный артефакт является самым явным свидетельством того, что в игре не включена вертикальная синхронизация, или V-sync.

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

Вернёмся к разрывам. Вышеупомянутая вертикальная синхронизация – это довольно старое решение проблемы. Оно заключается в синхронизации частоты, на которой видеокарта подаёт кадры, с частотой обновления монитора. Поскольку несколько кадров одновременно больше не появляется, разрывов тоже не наблюдается. Но если на максимальных графических настройках вашей любимой игры частота кадров упадёт ниже 60 FPS (или ниже значения частоты обновления вашей панели), то эффективная частота кадров будет скакать между кратными значениями частоты обновления, как показано ниже. Это ещё один артефакт под названием притормаживание.

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

Так включать или не включать V-sync?

Предположим, вы принадлежите к большинству и используете обычный дисплей с частотой обновления 60 Гц:

  • Если вы играете в шутеры от первого лица и/или у вас наблюдаются проблемы с воспринимаемой задержкой ввода, и/или ваша система не может постоянно поддерживать минимум 60 FPS в игре, и/или вы тестируете видеокарту, то вертикальную синхронизацию нужно выключать.
  • Если ни один из вышеперечисленных факторов вас не касается, и вы наблюдаете заметные разрывы экрана, то вертикальную синхронизацию нужно включить.
  • Если вы не уверены, лучше оставить V-sync выключенной.
Если вы используете игровой дисплей с частотой обновления 120/144 Гц (если у вас есть один из таких дисплеев, вполне вероятно, что вы купили его как раз из-за высокой частоты обновления):
  • Включать вертикальную синхронизацию следует только в старых играх, в которых геймплей проходит на частоте кадров выше 120 FPS, и вы постоянно сталкиваетесь с разрывами экрана.

Обратите внимание, что в некоторых случаях эффект снижения частоты кадров из-за V-sync не проявляется. Такие приложения поддерживают тройную буферизацию, хотя данное решение не очень распространено. Также в некоторых играх (например, The Elder Scrolls V: Skyrim), V-sync активирована по умолчанию. Принудительное отключение посредством модификации некоторых файлов приводит к проблемам с игровым движком. В таких случаях лучше оставить вертикальную синхронизацию включённой.

G-Sync, FreeSync и будущее

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

Однако с ростом различий в задержке ввода их влияние на геймплей растёт. Представьте себе профессионального геймера, чью реакцию можно сравнить с реакцией лучших пилотов, то есть 150 мс. Задержка ввода на 50 мс означает, что человек будет реагировать на 30% медленнее (это четыре кадра на дисплее с частой обновления 60 Гц) своего оппонента. На профессиональном уровне это весьма заметная разница.

Для простых смертных (включая наших редакторов, показавших результат 200 мс в визуальном тесте) и для тех, кому больше нравится играть в Civilization V, а не в Counter Strike 1.6, всё немного иначе. Вполне вероятно, вы вообще можете игнорировать задержку ввода.

Вот некоторые факторы, которые могут ухудшить показатель задержки ввода при прочих равных условиях:

  • Игра на HDTV (особенно если отключён режим игры) или игра на ЖК-дисплее со средствами обработки видео, которые нельзя отключить. Упорядоченный список показателей задержек ввода различных дисплеев можно найти в базе данных DisplayLag .
  • Игра на ЖК-дисплеях, использующих панели IPS с более высоким временем отклика (обычно 5-7 мс G2G), вместо панелей TN+Film (1-2 мс GTG) или ЭЛТ-дисплеев (самые быстрые из доступных).
  • Игра на дисплеях с низкой частотой обновления. Новые игровые дисплеи поддерживают 120 или 144 Гц.
  • Игра при низкой частоте кадров (30 FPS – это один кадр каждые 33 мс; 144 FPS – один кадр каждые 7 мс).
  • Использование USB-мышки с низкой частотой опроса. Время цикла на частоте 125 Гц составляет около 6 мс, что в среднем даёт задержку ввода около 3 мс. В то же время, частота опроса игровой мыши может доходить до 1000 Гц, при этом задержка ввода в среднем составит 0,5 мс.
  • Использование клавиатуры низкого качества (как правило, задержка ввода клавиатуры составляет 16 мс, но в дешёвых моделях может быть и выше).
  • Активация V-sync, особенно в сочетании с тройной буферизацией (существует миф, что Direct3D не включает тройную буферизацию. На самом деле, Direct3D учитывает опцию нескольких фоновых буферов, но немногие игры её используют). Если вы технически подкованы, можете ознакомиться с рецензией Microsoft (англ.) по этому поводу.
  • Игра с высоким временем предварительной визуализации. По умолчанию очередь в Direct3D составляет три кадра или 48 мс при частоте 60 Гц. Это значение может увеличиваться до 20 кадров для большей "плавности" и понижаться до одного кадра для повышения отзывчивости за счёт повышения колебаний времени кадра и, в некоторых случаях, общей потери в показателях FPS. Нулевого параметра не существует. Ноль просто сбрасывает настройки на исходное значение, равное трём кадрам. Если вы технически подкованы, можете ознакомиться с рецензией Microsoft (англ.) по этому поводу.
  • Высокая задержка интернет-соединения. Хотя это не совсем относится к определению задержки ввода, оно всё же заметно на неё влияет.

Факторы, которые не влияют на задержку ввода:

  • Использование клавиатуры с разъёмом PS/2 или USB (смотрите дополнительную страницу в нашем обзоре "Five Mechanical-Switch Keyboards: Only The Best For Your Hands" (англ.)).
  • Использование проводного или беспроводного сетевого соединения (проверьте пинг вашего маршрутизатора, если не верите; пинг не должен превышать 1 мс).
  • Использование SLI или CrossFire. Более длинные очереди визуализации, необходимые для реализации этих технологий, компенсируются более высокой пропускной способностью.

Вывод: задержка ввода важна только для "быстрых" игр и действительно играет значимую роль на профессиональном уровне.

На задержку ввода влияют не только технология дисплея и видеокарта. Железо, настройки железа, дисплей, настройки дисплея и настройки приложения – всё это вносит свою лепту в данный показатель.

Развенчиваем мифы о производительности видеокарт | Мифы о видеопамяти

Видеопамять отвечает за разрешение и настройки качества, но не увеличивает скорость

Производители часто используют видеопамять в качестве маркетингового инструмента. Поскольку геймеров убедили, что больше – значит лучше, мы часто видим видеокарты начального уровня, объём оперативной памяти у которых значительно больше, чем нужно на самом деле. Но энтузиасты знают, что самое важное – это баланс, причём во всех комплектующих ПК.

В широком смысле видеопамять относится к дискретному GPU и задачам, которые он обрабатывает, независимо от системной памяти, установленной в материнскую плату. На видеокартах используются несколько технологий оперативной памяти, самые популярные из которых – это DDR3 и GDDR5 SDRAM.

Миф: видеокарты с 2 Гбайт памяти быстрее моделей с 1 Гбайт

Не удивительно, что производители оснащают недорогие графические ускорители большим объёмом памяти (и получают более высокую прибыль), поскольку многие люди верят, что больший объём памяти прибавит скорости. Давайте разберёмся в этом вопросе. Объём видеопамяти видеокарты не влияет на её быстродействие, если вы не выбираете игровые настройки, которые используют весь доступный объём памяти.

Но для чего тогда нужна дополнительная видеопамять? Чтобы ответить на этот вопрос, необходимо выяснить для чего она используется. Список упрощённый, но полезный:

  • Прорисовка текстур.
  • Поддержка буфера кадров.
  • Поддержка буфера глубины ("Z Buffer").
  • Поддержка других ресурсов, которые требуются для визуализации кадра (карты теней и др.).

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

Фрейм-буфер используется для хранения изображения в том виде, в котором оно визуализируется перед тем или во время того, как отправляется на экран. Таким образом, необходимый объём видеопамяти зависит от выходного разрешения (изображение в разрешении 1920x1080 пикселей по 32 бита на пиксель "весит" около 8,3 Мбайт, а 4K-изображение в разрешении 3840x2160 пикселей по 32 бита на пиксель – уже около 33,2 Мбайт) и количества буферов (минимум два, реже три и больше).

Особые режимы сглаживания (FSAA, MSAA, CSAA, CFAA, но не FXAA или MLAA) эффективно повышают количество пикселей, которые должны быть визуализированы, и пропорционально увеличивают общий объём требуемой видеопамяти. Сглаживание на базе рендеринга оказывает особенно больше влияние на потребление памяти, которое возрастает с ростом размера выборки (2x, 4x, 8x и т.д.). Дополнительные буферы также занимают видеопамять.

Таким образом, видеокарта с большим объёмом графической памяти позволяет:

  1. Играть на более высоких разрешениях.
  2. Играть на более высоких параметрах качества текстур.
  3. Играть при более высоких уровнях сглаживания.

Теперь разрушаем миф.

Миф: вам нужно 1, 2, 3, 4 или 6 Гбайт видеопамяти для игр на (вставьте родное разрешение вашего дисплея).

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

Прежде чем мы перейдём к самим измерениям, позвольте вас предупредить. Есть особый тип видеокарт класса high-end с двумя GPU (AMD Radeon HD 6990 и Radeon HD 7990 , а также Nvidia GeForce GTX 590 и GeForce GTX 690 ), которые оснащаются определённым количеством памяти. Но в результате использования конфигурации из двух GPU данные, по сути, дублируются, разделяя эффективный объём памяти надвое. Например, GeForce GTX 690 с 4 Гбайт ведёт себя, как две карты по 2 Гбайт в SLI. Более того, когда вы добавляет вторую карту в конфигурацию CrossFire или SLI, видеопамять массива не удваивается. Каждая карта оставляет за собой только свой объём памяти.

Наверняка многие любители компьютерных игр сталкивались с рекомендацией отключать в играх так называемую «вертикальную синхронизацию» или VSync в настройках видеокарты.

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

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

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

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

Чтобы этого избежать, в видеокартах предусматривается режим предварительного опроса монитора о его вертикальной развертке, с которой и синхронизируется число кадров в секунду - всем знакомые fps.
Иными словами, при частоте вертикальной развертки 85 Гц число кадров в секунду в любых играх не будет превышать восьмидесяти пяти.

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

В жидкокристаллических мониторах не существует физического обновления всего экрана: здесь отдельные пиксели могут светиться или не светиться.
Однако сама технология передачи данных через видеоинтерфейс предусматривает, что на монитор от видеокарты передаются кадры с определенной скоростью.
Поэтому, с долей условности, понятие «развертки» применимо и к ЖК-дисплеем.

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

К примеру, монитор работает с частотой развертки 75 Гц, а видеокарта в какой-либо игре генерирует сто кадров в секунду.
Иными словами, графический ускоритель работает примерно на треть быстрее, чем система обновления монитора.
За время обновления одного экрана карта вырабатывает 1 кадр и треть следующего - в результате на дисплее прорисовывается две трети текущего кадра, а его треть заменяется третью кадра следующего.

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

Однако было бы в корне неправильным считать, что если видеокарте запретить генерировать более 75 кадров в секунду, то с выводом изображения на дисплей с частотой вертикальной развертки 75 Гц все было бы в порядке.
Дело в том, что в случае с обычной, так называемой «двойной буферизацией», кадры на монитор поступают из первичного кадрового буфера (front buffer), а сам рендеринг осуществляется во вторичном буфере (back buffer).

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

Вертикальная синхронизация как раз и решает эти проблемы: монитор опрашивается на предмет частоты развертки и копирование кадров из вторичного буфера в первичный запрещается до того момента, пока изображение не обновится.
Эта технология прекрасно работает, когда скорость генерации кадров в секунду превышает частоту вертикальной развертки.
Но как же быть, если скорость рендеринга кадров падает ниже частоты развертки?
К примеру, в некоторых сценах у нас число fps снижается со 100 до 50.

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

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

Получается, что в случае с вертикальной синхронизацией и двойной буферизацией качественное изображение мы может получить только в том случае, когда число кадров в секунду равно одному из дискретной последовательности значений, рассчитываемых как соотношение частоты развертки к некоторому положительному целому числу.
К примеру, при частоте обновления 60 Гц число кадров в секунду должно быть равным 60 или 30 или 15 или 12 или 10 и т.д.

Если потенциальные возможности карты позволяют генерировать менее 60 и более 30 кадров в секунду, то реальная скорость рендеринга будет падать до 30 fps.

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

О вертикальной синхронизации

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

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

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

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

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

Технология же вертикальной синхронизации и призвана устранить эти дефекты .

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

Подключение вертикальной синхронизации

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

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

Как включить для NVidia?

Как и большинство манипуляций с картами NVidia выполняется через консоль управления NVidia. Там в графе управления параметрами 3D будет параметр синхроимпульса.

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

Так в старых видеокартах параметр вертикальной синхронизации находится в главе глобальных параметров в той же графе управления параметрами 3D.

Видеокарты от ATI

Для настройки воспользуйтесь центром управления для вашей видеокарты. А именно центр управления Catalyst Control Center работает под управлением.NET Framework 1.1. Если у вас его нет, то и центр управления не запустится. Но не стоит переживать. В таком случаи есть альтернатива центру просто работа с классической панелью управления.

Для доступа к настройкам перейдите в пункт 3D, расположенный в меню слева. Там будет раздел Wait for Vertical Refresh. Изначально технология вертикальной синхронизации по умолчанию используется внутри приложения.

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

Подведем итоги

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

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

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

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

Эта таинственная графа в параметрах многих игр оказалась не так проста, как казалась. И сейчас выбор применять ее или нет, остается лишь за вами и вашими целями в играх.

Зачем нужна вертикальная синхронизация в видеокартах?

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

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

Для чего же в настройках видеокарт сохранен пункт "вертикальная синхронизация", если монитор способен автоматически настраиваться в соответствии с установленным в драйвере режимом? Дело в том, что, несмотря на то, что видеокарты способны генерировать очень большое число кадров в секунду, мониторы не могут его качественно отображать, в результате чего возникают различные артефакты: полосность и "рваное" изображение. Чтобы этого избежать, в видеокартах предусматривается режим предварительного опроса монитора о его вертикальной развертке, с которой и синхронизируется число кадров в секунду - всем знакомые fps. Иными словами, при частоте вертикальной развертки 85 Гц число кадров в секунду в любых играх не будет превышать восьмидесяти пяти.

Частота вертикальной развертки монитора означает, сколько раз обновляется экран с изображением в секунду. В случае с дисплеем на основе электронно-лучевой трубки, сколько бы кадров в секунду не позволял "выжать" из игры графический ускоритель, частота развертки физически не может быть выше установленной. В жидкокристаллических мониторах не существует физического обновления всего экрана: здесь отдельные пиксели могут светиться или не светиться. Однако сама технология передачи данных через видеоинтерфейс предусматривает, что на монитор от видеокарты передаются кадры с определенной скоростью. Поэтому, с долей условности, понятие "развертки" применимо и к ЖК-дисплеем.

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

К примеру, монитор работает с частотой развертки 75 Гц, а видеокарта в какой-либо игре генерирует сто кадров в секунду. Иными словами, графический ускоритель работает примерно на треть быстрее, чем система обновления монитора. За время обновления одного экрана карта вырабатывает 1 кадр и треть следующего - в результате на дисплее прорисовывается две трети текущего кадра, а его треть заменяется третью кадра следующего. За время очередного обновления карта успевает сгенерировать две трети кадра и две трети следующего, и так далее. На монитор же в каждые два из трех тактов развертки мы наблюдаем треть изображения от другого кадра - картинка теряет плавность и "дергается". Особенно заметен этот дефект в динамичных сценах или, например, когда ваш персонаж в игре осматривается.

Однако было бы в корне неправильным считать, что если видеокарте запретить генерировать более 75 кадров в секунду, то с выводом изображения на дисплей с частотой вертикальной развертки 75 Гц все было бы в порядке. Дело в том, что в случае с обычной, так называемой "двойной буферизацией", кадры на монитор поступают из первичного кадрового буфера (front buffer), а сам рендеринг осуществляется во вторичном буфере (back buffer). По мере заполнения вторичного буфера кадры поступают в первичный, однако поскольку операция копирования между буферами занимает определенное время, если обновление развертки монитора придется на этот момент, подергивания изображения все равно избежать не удастся.

Вертикальная синхронизация как раз и решает эти проблемы: монитор опрашивается на предмет частоты развертки и копирование кадров из вторичного буфера в первичный запрещается до того момента, пока изображение не обновится. Эта технология прекрасно работает, когда скорость генерации кадров в секунду превышает частоту вертикальной развертки. Но как же быть, если скорость рендеринга кадров падает ниже частоты развертки? К примеру, в некоторых сценах у нас число fps снижается со 100 до 50.

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

Получается, что в случае с вертикальной синхронизацией и двойной буферизацией качественное изображение мы может получить только в том случае, когда число кадров в секунду равно одному из дискретной последовательности значений, рассчитываемых как соотношение частоты развертки к некоторому положительному целому числу. К примеру, при частоте обновления 60 Гц число кадров в секунду должно быть равным 60 или 30 или 15 или 12 или 10 и т.д. Если потенциальные возможности карты позволяют генерировать менее 60 и более 30 кадров в секунду, то реальная скорость рендеринга будет падать до 30 fps.

Вернемся к нашему примеру с частотой развертки 75 Гц и 100 кадрам в секунду. При включении вертикальной синхронизации артефакты изображения пропадают. Когда скорость рендеринга в особо сложных сценах снижается примерно до 60 fps и включена VSync, реальная же скорость расчета кадров падает почти вдвое. Иными словами, вертикальная синхронизация в сочетании с двойной буферизацией хороша только тогда, когда скорость рендеринга не падает ниже частоты развертки, поскольку в других случаях производительность резко падает.

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

Работает тройная буферизация следующим образом (при скорости рендеринга 50 кадров в секунду и частоте обновления монитора 75 Гц). Первый кадр находится в первичном буфере, две трети второго кадра обрабатываются во вторичном буфере. После обновления экрана первым кадром во вторичный буфер поступает последняя треть второго кадра, а треть третьего кадра начинает "рендериться" в третьем буфере. После второго обновления экрана первым кадром второй кадр копируется в первичный буфер, а первая треть третьего кадра перемещается во вторичный буфер. Оставшиеся две трети кадра номер три обрабатываются в третьем буфере, происходит первое обновление экрана вторым кадром, а кадр три полностью переносится во вторичный буфер. Затем этот процесс повторяется с начала.

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

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

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

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

Посмотрим на примере "Центра управления" для видеокарт ATI (Catalyst Control Center), как включить или отключить вертикальную синхронизацию и тройную буферизацию. Напомним, что Catalyst Control Center работает только при наличии установленной в системе среды.NET Framework 1.1, которую можно бесплатно скачать с сайта Misrosoft. Этой утилитой пользоваться необязательно - все видеокарты ATI могут работать и с традиционной "Панелью управления" (Control Panel).

Чтобы получить доступ к настройкам VSync, необходимо в "дереве" слева выбрать пункт 3D и подпункт All Settings - раздел Wait For Vertical Refresh. По умолчанию установлены следующие настройки: вертикальная синхронизация отключена, но ее может задействовать запущенное приложение. Это самая разумная настройка, и в подавляющем большинстве случаев ее изменять не стоит. Если перевести рычажок в крайнее левое положение, то VSync будет принудительно отключена, в крайнее правое - принудительно включена. Крайнее левое положение обеспечит максимально возможную производительность, а крайнее правое - наивысшее качество. Здесь же можно включить вертикальную синхронизацию, но если приложение ее не требует, то она использоваться не будет.

Включить тройную буферизацию можно, зайдя в пункт 3D и подпункт API Specific. Здесь сразу становится очевидным, почему эту возможность поддерживают далеко не все игры: тройная буферизация возможна лишь для приложений, работающих с программным интерфейсом (API) OpenGL. Соответствующая строчка предусмотрена именно в настройках для этого API - второй пункт снизу. По умолчанию тройная буферизация отключена.

Наконец, еще раз подчеркнем, что все вышеизложенное касается и ЭЛТ-, и ЖК-мониторов. Несмотря на принципиальные отличия в принципах вывода изображения, для видеокарты (то есть, ее драйвера, операционной системы и конкретного приложения) это однотипные устройства, на которые отправляются сгенерированные кадры с определенной частотой. Впрочем, владельцам жидкокристаллических дисплеев повезло больше: для этих мониторов типичная частота развертки - всего 60 Гц, а при наличии мощной видеокарты скорость рендеринга будет падать ниже 60 fps в редких случаях.

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



Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png