Введение
Визуальный артефакт в видеодисплее
Разрыв экрана — это визуальный артефакт в видеодисплее, при котором устройство отображения показывает информацию из нескольких кадров в одном кадре отрисовки. Этот артефакт возникает, когда видеопоток на устройство не синхронизирован с частотой обновления дисплея. Это может быть вызвано несовпадением частот обновления, в этом случае линия разрыва перемещается по мере изменения разности фаз (со скоростью, пропорциональной разнице частот кадров). Разрыв также может возникать просто из-за отсутствия синхронизации между двумя одинаковыми частотами кадров, при этом линия разрыва остается в фиксированном положении, соответствующем разности фаз. Во время движения видео разрыв экрана создает эффект "разорванности" изображения, когда края объектов (например, стены или дерева) не совпадают. Разрыв может возникать при использовании большинства распространенных технологий отображения и видеокарт и наиболее заметен в горизонтально движущихся изображениях, таких как медленные панорамирования камеры в фильмах или классические видеоигры с боковой прокруткой. Разрыв экрана менее заметен, когда более двух кадров завершают отрисовку в течение одного интервала обновления, поскольку это приводит к появлению на экране нескольких более узких разрывов вместо одного широкого.
Профилактика
Способы предотвращения разрыва изображения зависят от используемого устройства отображения и технологии видеокарты, программного обеспечения и типа видеоматериала. Наиболее распространенным решением является использование двойной или тройной буферизации. Большинство систем используют множественную буферизацию и какие-либо средства синхронизации циклов обновления дисплея и видеопамяти.
Вертикальная синхронизация
Вертикальная синхронизация – это опция, присутствующая в большинстве систем, которая не позволяет видеокарте вносить какие-либо видимые изменения в видеопамять до завершения монитором текущего цикла обновления. Во время интервала вертикального возврата драйвер дает видеокарте команду либо быстро скопировать графическое изображение из буфера, невидимого на экране, в активную область отображения (двойная буферизация), либо считать обе области памяти отображаемыми и просто переключаться между ними (переворот страниц). Видеоадаптеры Nvidia и AMD предлагают опцию "Adaptive Vsync", которая включает вертикальную синхронизацию только тогда, когда частота кадров в программе превышает частоту обновления дисплея, в противном случае отключая её. Это устраняет рывки, возникающие при падении частоты кадров ниже частоты обновления дисплея. В качестве альтернативы, технологии, такие как FreeSync и G-Sync, меняют подход и адаптируют частоту обновления дисплея к поступающему с компьютера контенту. Для работы таких технологий требуется специальная поддержка как со стороны видеоадаптера, так и дисплея.
Осложнения
При использовании вертикальной синхронизации частота кадров движка рендеринга ограничивается частотой кадров видеосигнала. Эта функция обычно повышает качество изображения, но в некоторых случаях может приводить к снижению производительности.
Джаддер
Вертикальная синхронизация также может вызывать артефакты при воспроизведении видео и фильмов, поскольку они обычно записываются с частотой кадров значительно ниже, чем типичная частота кадров монитора (24–30 кадров/с). При воспроизведении такого видео на мониторе с обычной частотой обновления 60 Гц видеоплеер довольно часто не успевает к моменту обновления кадра, и промежуточные кадры отображаются немного быстрее, чем нужно, что приводит к эффекту, похожему на рывки изображения. (См. Телекинематография: Различия в частоте кадров.)
Задержка ввода
Видеоигры, использующие широкий спектр движков рендеринга, как правило, выигрывают в плане визуального качества благодаря вертикальной синхронизации, поскольку движок рендеринга обычно должен создавать каждый кадр в реальном времени, основываясь на значениях переменных движка в момент запроса кадра. Однако, поскольку вертикальная синхронизация вносит задержку ввода, она ухудшает интерактивность игр, и особенно негативно сказывается на играх, требующих точного времени или быстрой реакции.
Бенчмаркинг
Наконец, при тестировании производительности видеокарты или движка рендеринга обычно предполагается, что аппаратное и программное обеспечение отрисовывают изображение максимально быстро, не учитывая возможности монитора и возможное появление разрывов изображения. В противном случае монитор и видеокарта ограничивают работу программы тестирования, что приводит к неверным результатам.
Другие методы
Некоторые графические системы позволяют программному обеспечению выполнять доступ к памяти таким образом, чтобы они синхронизировались с циклом обновления дисплея, что известно как растровое прерывание или "гонка луча". В этом случае программное обеспечение записывает данные в области дисплея, которые только что были обновлены, оставаясь непосредственно позади активной точки обновления монитора. Это позволяет использовать подпрограммы копирования или движки рендеринга с менее предсказуемой производительностью, при условии, что движок рендеринга может "догнать" активную точку обновления монитора, когда он отстает. Альтернативно, программное обеспечение может оставаться чуть впереди активной точки обновления. В зависимости от того, насколько далеко впереди нужно оставаться, этот метод может потребовать кода, который копирует или отрисовывает дисплей с фиксированной, постоянной скоростью. Слишком большая задержка приводит к тому, что монитор периодически обгоняет программное обеспечение, вызывая артефакты рендеринга, разрывы и т.п. Демо-программы на классических системах, таких как Commodore 64 и ZX Spectrum, часто использовали эти техники из-за предсказуемости их видеосистем, чтобы добиться эффектов, которые иначе были бы невозможны.