Разрыв экрана [1] — визуальный артефакт на видеодисплее , при котором устройство отображения отображает информацию из нескольких кадров на одном экране. [2]
Артефакт возникает, когда видеопоток на устройство не синхронизирован с частотой обновления дисплея. Это может быть вызвано несовпадением частот обновления , и линия разрыва затем перемещается по мере изменения разности фаз (со скоростью, пропорциональной разнице частот кадров). Это также может происходить просто из-за отсутствия синхронизации между двумя равными частотами кадров, и линия разрыва затем находится в фиксированном месте, которое соответствует разности фаз. Во время движения видео разрыв экрана создает разорванный вид, поскольку края объектов (например, стены или дерева) не выстраиваются в линию.
Разрывы могут возникать при использовании большинства распространенных технологий отображения и видеокарт и наиболее заметны на изображениях с горизонтальным движением, например, при медленном панорамировании камеры в фильме или классических видеоиграх с боковой прокруткой.
Разрывы экрана менее заметны, когда за один и тот же интервал обновления завершается рендеринг более двух кадров, поскольку это означает, что на экране появляется несколько более узких разрывов, а не один более широкий.
Способы предотвращения разрывов видео зависят от устройства отображения и технологии видеокарты, используемого программного обеспечения и характера видеоматериала. Наиболее распространенным решением является использование множественной буферизации .
Большинство систем используют множественную буферизацию и некоторые средства синхронизации циклов обновления дисплея и видеопамяти. [3]
Option "TearFree" "boolean": отключить или включить обновления TearFree. Этот параметр заставляет X выполнять всю визуализацию в задний буфер перед обновлением фактического дисплея. Он требует дополнительного выделения памяти того же размера, что и кадровый буфер, иногда дополнительной копии и требует отслеживания повреждений. Таким образом, включение TearFree требует больше памяти и работает медленнее (снижает пропускную способность) и вносит небольшую задержку вывода, но это не должно влиять на задержку ввода. Однако обновление экрана затем выполняется синхронно с вертикальным обновлением дисплея, так что все обновление завершается до того, как дисплей начнет свое обновление. То есть всегда виден только один кадр, что предотвращает некрасивый разрыв между двумя видимыми и разными кадрами. Это повторяет то, что должен делать менеджер композитинга, однако TearFree перенаправит обновления композитинга (и обновления полноэкранных игр) непосредственно на сканирование, таким образом, не неся дополнительных накладных расходов в композитном случае. Не все менеджеры композитинга предотвращают разрывы, и если выходные данные повернуты, разрывы все равно будут наблюдаться без включения TearFree.
— Из драйвера графического процессора Intel с открытым исходным кодом, https://manpages.debian.org/buster/xserver-xorg-video-intel/intel.4.en.html
Вертикальная синхронизация — это опция в большинстве систем, в которой видеокарте запрещено выполнять какие-либо действия, видимые для памяти дисплея, пока монитор не завершит текущий цикл обновления.
Во время интервала вертикального гашения драйвер отдает команду видеокарте либо быстро копировать область внеэкранной графики в активную область отображения ( двойная буферизация ), либо рассматривать обе области памяти как отображаемые и просто переключаться между ними вперед и назад ( перелистывание страниц ).
Видеоадаптеры Nvidia и AMD предоставляют опцию «Adaptive Vsync», которая включает вертикальную синхронизацию только тогда, когда частота кадров программного обеспечения превышает частоту обновления дисплея, отключая ее в противном случае. Это устраняет заикание, возникающее, когда частота кадров рендеринга падает ниже частоты обновления дисплея. [4]
В качестве альтернативы, такие технологии, как FreeSync [5] и G-Sync [6], меняют концепцию и адаптируют частоту обновления дисплея к контенту, поступающему с компьютера. Такие технологии требуют особой поддержки как со стороны видеоадаптера, так и со стороны дисплея.
При использовании вертикальной синхронизации частота кадров движка рендеринга ограничивается частотой кадров видеосигнала. Эта функция обычно улучшает качество видео, но в некоторых случаях требует компромиссов.
Вертикальная синхронизация также может вызывать артефакты в видео- и кинопрезентациях, поскольку они обычно записываются с частотой кадров, значительно ниже типичной частоты кадров монитора (24–30 кадров/с). Когда такой фильм воспроизводится на мониторе, настроенном на типичную частоту обновления 60 Гц, видеоплеер довольно часто пропускает крайний срок монитора, а промежуточные кадры отображаются немного быстрее, чем предполагалось, что приводит к эффекту, похожему на дрожание . (См. Telecine: Различия в частоте кадров .)
Видеоигры, которые используют широкий спектр движков рендеринга, как правило, визуально выигрывают от вертикальной синхронизации, поскольку движок рендеринга обычно должен строить каждый кадр в реальном времени, основываясь на том, что указывают переменные движка в момент запроса кадра. Однако, поскольку вертикальная синхронизация вызывает задержку ввода , она мешает интерактивной природе игр [7] и особенно мешает играм, которые требуют точного времени или быстрого времени реакции.
Наконец, бенчмаркинг видеокарты или движка рендеринга обычно подразумевает, что аппаратное и программное обеспечение рендерит дисплей как можно быстрее, без учета возможностей монитора или результирующего разрыва видео. В противном случае монитор и видеокарта будут тормозить программу бенчмаркинга, что приведет к недействительным результатам.
Некоторые графические системы позволяют программному обеспечению выполнять доступ к памяти, чтобы они оставались в одной и той же временной точке относительно цикла обновления аппаратного обеспечения дисплея, что известно как прерывание растра или гонка за лучом . В этом случае программное обеспечение записывает в области дисплея, которые только что были обновлены, оставаясь сразу за активной точкой обновления монитора. Это позволяет выполнять процедуры копирования или рендеринговые движки с менее предсказуемой пропускной способностью, пока рендеринговый движок может «догнать» активную точку обновления монитора, когда она отстает.
В качестве альтернативы программное обеспечение может оставаться немного впереди активной точки обновления. В зависимости от того, насколько далеко вперед вы решите оставаться, этот метод может потребовать кода, который копирует или визуализирует дисплей с фиксированной, постоянной скоростью. Слишком большая задержка приводит к тому, что монитор иногда обгоняет программное обеспечение, что приводит к артефактам визуализации, разрывам и т. д.
Демонстрационное программное обеспечение на классических системах, таких как Commodore 64 и ZX Spectrum, часто использовало эти приемы из-за предсказуемой природы соответствующих видеосистем для достижения эффектов, которые в противном случае были бы невозможны.