27 jun. 2008

Tearing y Juddering, o los parpadeos y ralentizaciones de las pantallas

Si cuando estás jugando con tu juego favorito de tu consola percibes "fallos de refresco de la imagen"; es decir, que la imagen no va todo lo fluída que debería ir, es muy probable que estés sufriendo de Tearing o Juddering.

El Tearing
Está relacionado con la velocidad de refresco de la pantalla; esto es, con las veces por segundo que es capaz la pantalla de cambiar la imagen mostrada.
Se produce porque el aparato que emite las imágenes no está bien configurado para sincronizar las imágenes con la pantalla o no es capaz de hacerlo por limitaciones técnicas o de programación.
Cuanto menor es la frecuencia de refresco de que es capaz la pantalla, el efecto es más evidente, y podemos apreciar que zonas de la pantalla "no concuerdan", sobre todo en escenas de películas o videojuegos con mucho movimiento en los que las imágenes cambian rápidamente.
Es una sensación de "oleaje" en la pantalla; esto es, la pantalla muestra partes de diferentes fotogramas a la vez, en vez de hacerlo de uno en uno y por completo.



Para evitar este problema en linux por ej., hay que activar el Vsync (sincronización vertical) de la tarjeta gráfica con el monitor o pantalla. Acabo de saber que si tienes el Compiz (escritorio 3D) activado puede que es no se llegue a sincronizar debido a algún problema del Compiz o del controlador de la tarjeta gráfica.

El Juddering
Es consecuencia del problema anterior. Las imágenes se están sincronizando, pero se produce cuando la consola u ordenador no es capaz de mostrar las imágenes cuando es necesario y se ve obligado a descartar imágenes por generarse fuera de tiempo, por lo que se producen tirones y ralentizaciones en la secuencia.
Es particularmente evidente cuando se muestra una escena de un paisaje o imagen en "travelling"; es decir, cuando la cámara se mueve de un lado a otro mostrando una imagen de fondo. Al estar unos fotogramas más tiempo que otros en pantalla, el efecto se hace visible.
Este efecto es inevitable con ciertas conbinaciones hardware, por lo que en ocasiones aunque casi inapreciable, sigue existiendo al no ser la fuente de vídeo múltiplo de la frecuencia de muestreo del monitor o pantalla.
Si por ejemplo utilizamos una fuente PAL (a 24 imágenes por seg.) y lo mostramos en un monitor a 60 Hz (la imagen se refresca 60 veces por segundo) entonces cada imagen estará 0,2 segundos y algunas 0,3 segundos (si dividimos 60/24=2,5; tenemos que descartar el decimal) ya que el monitor no puede mostrar imágenes parciales (si no volveríamos al Tearing).

También se hace evidente con videojuegos que por falta de potencia de la máquina no pueden mostrar suficientes imágenes por segundo, por lo que aparte de ir el juego a saltos, en ocasiones dará tirones.

Estos problemas generalmente no son debidos ni a la resolución de la pantalla ni a sobrecalentamiento y dependerá de la potencia del equipo y de si pantalla y equipo "se entienden".

Medidas para contrarrestar estos efectos.


En Linux con nvidia-settings se puede configurar el Vsync en el caso de tarjetas nvidia

En el caso de los ordenadores, tenemos dos tipos de ajuste. Por un lado la sincronización vertical (Vsync) en las imágenes en 2D (videos) que es recomendable activar, y por otro la sincronización vertical para el 3D (OpenGl) que no es recomendable activar a menos que tengamos una tarjeta gráfica muy potente para 3D, con lo que evitaremos generar imágenes que no vamos a llegar a ver en pantalla (si tenemos un monitor a 60 Hz es tontería estar jugando con 120 imágenes por segundo) y de paso ahorramos en la factura de la luz y en CO2.

En las consolas éstas deben estar preparadas para ajustarse en lo posible (si el juego está bien programado) por lo que no deberían dar muchos problemas.


Enlaces:
Entrada inspirada parcialmente en los comentarios de ppmk en laps3.com
Screen Tearing on Wikipedia
Telecine Judder on Wikipedia
Unraveling the mistery of VSYNC

No hay comentarios:

Publicar un comentario

Puede dejar su comentario. Los comentarios descalificativos o sin relación ninguna con el tema tratado serán eliminados sin previo aviso. Antes de plantear una duda, asegúrate de que la respuesta no está en otra entrada del tema visitando la etiqueta que hay al final del artículo para verlos todos; muchas veces lo que planteas puede haber sido corregido o comentado en otra entrada posterior.