El desgarro de pantalla [1] es un artefacto visual en la visualización de video donde un dispositivo de visualización muestra información de múltiples cuadros en un solo dibujo de pantalla. [2]
El artefacto se produce cuando la señal de vídeo que llega al dispositivo no está sincronizada con la frecuencia de actualización de la pantalla. Esto puede deberse a frecuencias de actualización que no coinciden , y la línea de corte se mueve a medida que cambia la diferencia de fase (con una velocidad proporcional a la diferencia de frecuencias de cuadros). También puede producirse simplemente por una falta de sincronización entre dos frecuencias de cuadros iguales, y la línea de corte se encuentra entonces en una ubicación fija que corresponde a la diferencia de fase. Durante el movimiento del vídeo, el corte de pantalla crea un aspecto rasgado, ya que los bordes de los objetos (como una pared o un árbol) no se alinean.
El desgarro puede ocurrir con la mayoría de las tecnologías de visualización y tarjetas de video más comunes y es más notorio en imágenes con movimiento horizontal, como en tomas lentas de cámara en una película o en videojuegos clásicos de desplazamiento lateral.
El desgarro de pantalla es menos notorio cuando más de dos cuadros terminan de renderizarse durante el mismo intervalo de actualización, ya que eso significa que la pantalla tiene varios desgarros más estrechos, en lugar de uno solo más ancho.
Las formas de evitar el corte de vídeo dependen del dispositivo de visualización y de la tecnología de la tarjeta de vídeo, del software utilizado y de la naturaleza del material de vídeo. La solución más habitual es utilizar varios buffers .
La mayoría de los sistemas utilizan almacenamiento en búfer múltiple y algunos medios de sincronización de los ciclos de actualización de la memoria de vídeo y de la pantalla. [3]
Opción "TearFree" "boolean": deshabilitar o habilitar las actualizaciones de TearFree. Esta opción obliga a X a realizar toda la renderización en un búfer de respaldo antes de actualizar la pantalla real. Requiere una asignación de memoria adicional del mismo tamaño que un búfer de cuadros, la copia adicional ocasional y requiere seguimiento de daños. Por lo tanto, habilitar TearFree requiere más memoria y es más lento (rendimiento reducido) e introduce una pequeña cantidad de latencia de salida, pero no debería afectar la latencia de entrada. Sin embargo, la actualización de la pantalla se realiza de manera sincrónica con la actualización vertical de la pantalla para que toda la actualización se complete antes de que la pantalla comience a actualizarse. Es decir, solo se ve un cuadro, lo que evita un desgarro antiestético entre dos cuadros visibles y diferentes. Esto replica lo que debería estar haciendo el administrador de composición; sin embargo, TearFree redirigirá las actualizaciones del compositor (y las de los juegos de pantalla completa) directamente al escaneo, por lo que no incurrirá en una sobrecarga adicional en el caso compuesto. No todos los administradores de composición evitan el desgarro y, si se rotan las salidas, seguirá habiendo desgarro sin TearFree habilitado.
— Del controlador de GPU de código abierto de Intel, https://manpages.debian.org/buster/xserver-xorg-video-intel/intel.4.en.html
La sincronización vertical es una opción en la mayoría de los sistemas en la que se evita que la tarjeta de video haga algo visible en la memoria de pantalla hasta que el monitor finalice su ciclo de actualización actual.
Durante el intervalo de borrado vertical , el controlador ordena a la tarjeta de video que copie rápidamente el área de gráficos fuera de pantalla en el área de visualización activa ( doble buffering ) o que trate ambas áreas de memoria como visualizables y simplemente alterne entre ellas ( cambio de página ).
Los adaptadores de vídeo de Nvidia y AMD ofrecen una opción de "sincronización vertical adaptativa", que activará la sincronización vertical solo cuando la frecuencia de cuadros del software supere la frecuencia de actualización de la pantalla y la desactivará en caso contrario. Esto elimina el parpadeo que se produce cuando la frecuencia de cuadros del motor de renderizado cae por debajo de la frecuencia de actualización de la pantalla. [4]
Alternativamente, tecnologías como FreeSync [5] y G-Sync [6] invierten el concepto y adaptan la frecuencia de actualización de la pantalla al contenido que proviene del ordenador. Estas tecnologías requieren un soporte específico tanto del adaptador de vídeo como de la pantalla.
Cuando se utiliza la sincronización vertical, la velocidad de cuadros del motor de renderizado se limita a la velocidad de cuadros de la señal de vídeo. Esta característica normalmente mejora la calidad del vídeo, pero en algunos casos implica concesiones.
La sincronización vertical también puede causar artefactos en las presentaciones de video y películas, ya que generalmente se graban a velocidades de cuadros significativamente más bajas que las velocidades de cuadros típicas de un monitor (24-30 cuadros por segundo). Cuando una película de este tipo se reproduce en un monitor configurado para una frecuencia de actualización típica de 60 Hz, el reproductor de video no cumple con la fecha límite del monitor con bastante frecuencia y los cuadros intermedios se muestran un poco más rápido de lo previsto, lo que da como resultado un efecto similar al temblor . (Consulte Telecine: Diferencias de velocidad de cuadros ).
Los videojuegos, que utilizan una amplia variedad de motores de renderizado, tienden a beneficiarse visualmente de la sincronización vertical, ya que normalmente se espera que un motor de renderizado construya cada cuadro en tiempo real, en función de lo que especifiquen las variables del motor en el momento en que se solicita un cuadro. Sin embargo, debido a que la sincronización vertical causa un retraso de entrada , interfiere con la naturaleza interactiva de los juegos [7] y, en particular, interfiere con los juegos que requieren tiempos precisos o tiempos de reacción rápidos.
Por último, la evaluación comparativa de una tarjeta de vídeo o un motor de renderizado generalmente implica que el hardware y el software renderizan la pantalla lo más rápido posible, sin tener en cuenta las capacidades del monitor o el corte de vídeo resultante. De lo contrario, el monitor y la tarjeta de vídeo limitan el rendimiento del programa de evaluación comparativa, lo que genera resultados no válidos.
Algunos sistemas gráficos permiten que el software realice sus accesos a la memoria de modo que permanezcan en el mismo punto de tiempo en relación con el ciclo de actualización del hardware de la pantalla, conocido como interrupción de trama o carrera del haz . En ese caso, el software escribe en las áreas de la pantalla que se acaban de actualizar, manteniéndose justo detrás del punto de actualización activo del monitor. Eso permite rutinas de copia o motores de renderizado con un rendimiento menos predecible siempre que el motor de renderizado pueda "alcanzar" el punto de actualización activo del monitor cuando se queda atrás.
Otra opción es que el software se quede justo por delante del punto de actualización activo. Según la distancia que se elija, ese método puede exigir un código que copie o renderice la pantalla a una velocidad fija y constante. Demasiada latencia hace que, en ocasiones, el monitor supere al software, lo que genera artefactos de renderizado, cortes, etc.
El software de demostración en sistemas clásicos como Commodore 64 y ZX Spectrum con frecuencia explotaba esas técnicas debido a la naturaleza predecible de sus respectivos sistemas de video para lograr efectos que de otro modo podrían ser imposibles.