Вертикальная синхронизация vsync. Производительности много не бывает. Видеокарты от ATI

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

Вертикальная синхронизация может быть откорректирована в настройках драйвера видеокарты от любого производителя (Intel, AMD, NVidia). Если в первых версиях данная возможность была опциональной, то есть для ее активации требовалось использование вспомогательных программ или внесение изменений в реестр операционной системы, то впоследствии она была вынесена отдельным пунктом.

Доступная корректировка

В системах от «Майкрософт» доступ к данной настройке очень прост и, как правило, стандартен. Необходимо нажать правую кнопку мышки на любом свободном участке рабочего стола и выбрать «Разрешение экрана» (Win 7-8). Если в отобразившемся окошке нажать ссылку «Дополнительные параметры», то в группе верхних вкладок обязательно будет присутствовать панель управления видеоадаптером. Выбрав ее, пользователь увидит меню настроек драйвера, в одном из пунктов которого присутствует «вертикальная синхронизация». Точное расположение и название указать нельзя, так как это зависит от разработчика, но ошибиться, тем не менее, невозможно. Так, это может быть «Vsync», «Синх. по вертикали», «Синхронизация» и пр. Хотя обычно параметр может принимать одно из двух значений, иногда встречаются решения с тремя. Например, вертикальная синхронизация ATI допускает не только варианты «Разрешить/Запретить», но и режим «Авто».

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

Производительности много не бывает

Любители виртуальных баталий знают, что правильно выставленная вертикальная синхронизация в играх во многих случаях может значительно поднять частоту кадров, выводимых видеоадаптером на экран монитора. Фактически это означает, что иногда таким способом удается отсрочить необходимость покупки новой видеокарты (хотя, конечно, чудес ждать не стоит). Именно поэтому мы рекомендуем выставить такой режим, при котором вертикальная синхронизация запрещена. Такое решение объясняется просто: ценители идеальной картинки вряд ли будут бороться за каждый лишний «fps» и читать о синхронизации, так как в их компьютерах установлены мощные видеоадаптеры, ну а владельцам «слабых» видеокарт более интересен сам игровой процесс, а не «тормозящие» красоты графики. Страшные полосы на изображениях, которыми любят пугать различные информационные ресурсы, в действительности практически незаметны.

Тайна, которой нет

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

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

Некоторые нюансы

Если же вычислительная мощь видеопроцессора настолько велика, что количество кадров превышает возможности монитора, то начинаются срывы синхронизации (на экран могут выводиться картинки, сформированные из двух ближайших кадров). Это проявляется в единичных горизонтальных полосах на движущемся изображении: картинка словно склеена из двух частей. При этом об идеально «гладком» кадре можно забыть. Для решения этого вопроса можно приобрести монитор, частота кадровой развертки которого будет превышать 100 Гц (современные системы), или включить синхронизацию в драйвере. При этом видеоадаптер начнет контролировать кадры экрана: подача на вывод каждого последующего будет происходить лишь по окончании отрисовки предыдущего. Недостаток очевиден: видеокарта будет простаивать, ожидая завершения работы монитора. Собственно, название параметра в данном случае говорит само за себя: «синхронизация» от «синхронно», когда две частоты равны.

Наверняка многие любители компьютерных игр сталкивались с рекомендацией отключать в играх так называемую «вертикальную синхронизацию» или 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. Изначально технология вертикальной синхронизации по умолчанию используется внутри приложения.

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

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

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

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

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

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

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