Los fotogramas por segundo, explicados

Hoy abordamos una de las preguntas más frecuentes que vemos sobre los juegos de PC: ¿cuántos fotogramas por segundo necesitas? ¿Deberías correr a la misma tasa de fotogramas que la tasa de refresco máxima de tus monitores, digamos 60 FPS en un monitor de 60 Hz, o hay algún beneficio en correr juegos a una tasa de fotogramas mucho más alta que la que puede mostrar tu monitor, como por ejemplo, 500 FPS?

Para responder a esta pregunta tenemos que hablar un poco de cómo la GPU y la pantalla trabajan juntas para enviar fotogramas a tus ojos, y de cómo funcionan tecnologías como Vsync.

Pero la conclusión es que ejecutar juegos a velocidades de fotogramas extremadamente altas, muy por encima de la frecuencia de refresco de tu monitor, conducirá a una experiencia de juego más sensible con una menor latencia de entrada percibida. Esa es la respuesta a la pregunta para los que no quieren esperar hasta el final. Ahora hablemos del porqué.

Nota del editor: Este reportaje fue publicado originalmente el 2 de agosto de 2018. Es tan relevante y actual hoy como lo fue entonces, por lo que lo hemos bacheado como parte de nuestra iniciativa #ThrowbackThursday.

Supongamos que tenemos un monitor con una frecuencia de refresco fija de 60 Hz. En otras palabras, el monitor está actualizando su pantalla cada 1/60 de segundo, o cada 16,7ms. Cuando se ejecuta un juego, no hay garantía de que la GPU sea capaz de renderizar cada fotograma en 16,7 milisegundos exactamente. A veces puede tardar 20ms, a veces puede tardar 15ms, a veces puede tardar 8ms. Esa es la naturaleza variable del renderizado de un juego en una GPU.

Con esta tasa de renderizado variable, hay una opción de cómo cada cuadro renderizado se pasa al monitor. Puede pasar el nuevo fotograma a la pantalla tan pronto como se haya renderizado por completo, lo que se conoce como ejecutar el juego con «Vsync» o sincronización vertical desactivada, o puede esperar hasta que la pantalla esté lista para refrescarse antes de enviar el nuevo fotograma, lo que se conoce como «Vsync on».

Vsync off

Usar el primer método, Vsync off, provoca tearing. Esto se debe a que una pantalla no puede actualizar toda la imagen instantáneamente, sino que se actualiza línea por línea, normalmente desde la parte superior de la pantalla hasta la inferior. Durante este proceso, un nuevo fotograma puede estar listo desde la GPU, y como no estamos usando Vsync, el fotograma se envía a la pantalla inmediatamente. El resultado es que a mitad de una actualización, el monitor recibe nuevos datos y actualiza el resto de las líneas de la pantalla con estos nuevos datos. Así, se obtiene una imagen en la que la mitad superior de la pantalla es del fotograma anterior y la mitad inferior es del nuevo fotograma disponible.

Desgarro

Dependiendo del contenido que se muestre, esta división entre los fotogramas nuevos y los antiguos en la única actualización se presenta como un desgarro, o línea visible entre los fotogramas antiguos y los nuevos. Suele ser más evidente en las escenas de movimiento rápido en las que hay una gran diferencia entre un fotograma y el siguiente.

Aunque Vsync desactivado provoca tearing, tiene la ventaja de enviar un fotograma a la pantalla en cuanto termina de renderizarse, para conseguir una baja latencia entre la GPU y la pantalla. Tenlo en cuenta para más adelante.

Vsync on

La forma alternativa de mostrar una imagen es con Vsync on. En este caso, en lugar de que la GPU envíe el nuevo fotograma inmediatamente a la pantalla, baraja cada fotograma renderizado en un búfer. El primer búfer se utiliza para almacenar el fotograma en el que se está trabajando en ese momento, y el segundo búfer se utiliza para almacenar el fotograma que la pantalla está mostrando en ese momento. En ningún momento del refresco se actualiza el segundo búfer, por lo que la pantalla sólo muestra los datos de un fotograma completamente renderizado, y como resultado no se produce tearing por una actualización a mitad del refresco.

Vsync on, a closer look

El único momento en el que se actualiza el segundo búfer es entre los refrescos. Para asegurarse de que eso ocurra, la GPU espera después de terminar de renderizar un fotograma, hasta que la pantalla esté a punto de refrescarse. Entonces baraja los búferes, comienza a renderizar un nuevo cuadro y el proceso se repite. A veces, el proceso puede implicar varios búferes antes de que un fotograma llegue a la pantalla, pero ésta es la idea general de cómo funciona Vsync.

Cuando tu GPU es demasiado lenta para renderizar un fotograma… se produce tartamudeo

Hay dos problemas con Vsync. En primer lugar, si la velocidad de renderizado de tu GPU es demasiado lenta para seguir el ritmo de refresco de la pantalla – digamos que sólo es capaz de renderizar a 40 FPS en una pantalla de 60 Hz – entonces la GPU no renderizará un fotograma completo a tiempo para cumplir con el inicio del refresco de la pantalla, por lo que un fotograma se repite. Esto provoca tartamudeo, ya que algunos fotogramas se muestran sólo una vez, mientras que otros se muestran dos veces.

Vsync activado: Pantalla de 60Hz, 200 FPS

El segundo problema ocurre cuando tu GPU es muy rápida y es capaz de renderizar fácilmente un fotograma dentro del intervalo de refresco. Digamos que puede renderizar a 200 FPS, produciendo un nuevo fotograma cada 5ms, salvo que estés usando una pantalla de 60 Hz con una ventana de refresco de 16,7ms.

Con Vsync activado, tu GPU completará el siguiente fotograma a mostrar en 5ms, luego esperará 11,7 ms antes de enviar el fotograma al segundo buffer para mostrarlo en el monitor y comenzar con el siguiente fotograma. Esta es la razón por la que con Vsync activado, la mayor tasa de fotogramas que obtendrás coincide con la tasa de refresco de tu monitor, ya que la GPU está esencialmente «bloqueada» para renderizar no más rápido que la tasa de refresco.

Ahora es en este punto donde hay mucha confusión.

A menudo escuchamos cosas como «bloquear la GPU al refresco de mi monitor usando Vsync es genial, porque si renderiza más rápido que la tasa de refresco, esos fotogramas se desperdician porque el monitor no puede mostrarlos, y todo lo que obtengo es tearing». Mucha gente señala el ahorro de energía que supone el uso de Vsync; tu GPU no necesita trabajar tanto, no hay ningún beneficio por correr a frecuencias de cuadro superiores a la tasa de refresco del monitor, así que corre a unos FPS bloqueados y ahorra algo de energía.

Podemos ver por qué la gente llega a esta conclusión y hay algunas partes de verdad en ella, pero no es exacta en general. La razón es que no se tiene en cuenta el tiempo en el que se procesan las entradas y el tiempo que tardan en materializarse en la pantalla.

Vsync al incluir la entrada

Para explicar por qué es así, veamos el diagrama de Vsync on, pero superpongamos el diagrama con la entrada del ratón y el teclado, que normalmente se recoge cada 1ms. Utilicemos también el mismo ejemplo en el que tenemos una GPU capaz de renderizar a 200 FPS con una pantalla de 60 Hz.

Con Vsync y un sistema de buffer simple, en esta explicación simplificada la GPU empieza a renderizar un fotograma correspondiente a la entrada del ratón en cuanto recibe esa entrada, en el tiempo 0. A continuación, tarda 5 ms en renderizar el fotograma, y espera otros 11,7 ms antes de enviarlo al buffer de la pantalla.

La pantalla tarda entonces un tiempo en recibir el fotograma a renderizar y actualizar físicamente la pantalla línea a línea con esta información.

Vsync al incluir la entrada

Incluso en el mejor de los casos, nos encontramos con un retraso de al menos 16,7ms entre la entrada y el momento en que la pantalla puede empezar a mostrar los resultados de esa entrada.

Cuando se tiene en cuenta el retardo de la entrada de la pantalla, el tiempo de procesamiento de la CPU, etc., la latencia entre la entrada y el refresco de la pantalla podría ser fácilmente superior a 50ms.

Vsync off incluyendo la entrada, pantalla de 60Hz, 200 FPS

Ahora veamos el diagrama de Vsync off. La GPU renderiza continuamente independientemente de cuándo se actualice la pantalla, tardando 5ms en convertir su entrada en un fotograma completo. La pantalla puede entonces empezar a mostrar ese nuevo fotograma inmediatamente, aunque puede ser sólo una parte de ese fotograma. El resultado es que la latencia entre tu entrada en el juego y el momento en que la pantalla puede empezar a mostrar los resultados de esa entrada se reduce de 16,7 ms a sólo 5 ms. Y no habrá ningún búfer adicional en las implementaciones del mundo real; es tan rápido como eso, más el retardo de entrada de tu monitor.

Y ahí es donde obtienes la ventaja. En este ejemplo, correr a 200 FPS con Vsync desactivado en un monitor de 60 Hz reduce la latencia de entrada a 5ms, mientras que con Vsync activado, esa latencia es de al menos 16,7ms, si no más.

Aunque la pantalla no es capaz de mostrar los 200 fotogramas por segundo en su totalidad, lo que la pantalla muestra cada 1/60 de segundo se produce a partir de una entrada mucho más cercana en el tiempo a ese fotograma.

Este fenómeno, por supuesto, también se aplica con los monitores de alto refresco. A 144 Hz, por ejemplo, podrás ver muchos más fotogramas cada segundo, por lo que obtendrás una experiencia más fluida y sensible en general. Pero correr a 200 FPS con Vsync desactivado en lugar de 144 FPS con Vsync activado te dará una diferencia entre 5ms y más de 7ms de latencia de entrada.

Ahora que estamos hablando de diferencias de milisegundos, probablemente te preguntes si realmente puedes notar esta diferencia en los juegos.

Dependiendo del tipo de juego al que estés jugando, la diferencia puede ser desde muy notable, hasta ninguna diferencia en absoluto. Un juego rápido como CS: GO que se ejecuta a 400 FPS en un monitor de 60 Hz, con una latencia de entrada de unos 2,5 ms, responderá mucho mejor a los movimientos del ratón que si se ejecuta el mismo juego a 60 FPS con una latencia de 16,7 ms (o más).

En ambos casos, la pantalla sólo muestra un nuevo fotograma 60 veces por segundo, por lo que no será tan suave como en una pantalla de 144 Hz o 240 Hz. Pero la diferencia en la latencia de entrada es enorme; correr a 400 FPS te permite llevar tus entradas a la pantalla casi 7 veces más rápido, si no más. Pruébalo por ti mismo y seguro que notas la diferencia en la capacidad de respuesta.

Y no hemos sacado esta explicación de la nada, de hecho Nvidia conoce las limitaciones de Vsync en cuanto a la latencia de entrada, por lo que ofrece una alternativa llamada Fast Sync (la alternativa de AMD se llama Enhanced Sync). Esta técnica de sincronización de pantalla es como una combinación de Vsync on y Vsync off, produciendo lo mejor de ambos mundos.

Fast Sync funciona introduciendo un buffer adicional en el pipeline de Vsync on llamado last rendered buffer. Esto permite a la GPU seguir renderizando nuevos fotogramas en el búfer posterior, pasando al último búfer renderizado cuando se completa. Entonces, cuando se actualiza la pantalla, el último búfer renderizado es empujado al búfer frontal al que accede la pantalla.

Sincronización rápida / Sincronización mejorada

La ventaja que esto crea es que la GPU ya no espera después de completar un fotograma a que se produzca la actualización de la pantalla, como ocurre con Vsync activado. En su lugar, la GPU sigue renderizando fotogramas, de modo que cuando la pantalla accede a un fotograma al principio del periodo de refresco, ese fotograma se ha renderizado más cerca de la ventana de refresco. Esto reduce la latencia de entrada. Sin embargo, a diferencia de lo que ocurre con Vsync desactivado, Fast Sync envía un fotograma completo a la pantalla al principio de cada refresco, en lugar de enviar el fotograma a la pantalla inmediatamente, y es esta técnica la que elimina el tearing.

Fast Sync sólo funciona cuando la velocidad de fotogramas es mayor que la frecuencia de refresco de la pantalla, pero consigue proporcionar una experiencia de juego más sensible sin tearing. Y, por supuesto, AMD tiene un equivalente llamado Enhanced Sync.

Esperemos que esta explicación haya aclarado algunas de tus dudas sobre por qué ejecutar un juego por encima de la tasa de refresco máxima de tu monitor ofrece una experiencia de juego más sensible, y por qué la capacidad de ejecutar juegos a velocidades de fotogramas más altas es siempre una ventaja, incluso si parece que tu monitor no puede aprovecharla.

Una última nota: no hemos hablado aquí de las tecnologías de sincronización adaptativa como G-Sync y FreeSync, y eso es porque hemos estado hablando principalmente de ejecutar juegos por encima del refresco máximo, donde la sincronización adaptativa no se aplica. Hay un montón de métodos de sincronización diferentes por ahí, pero la sincronización adaptativa es muy diferente a Vsync y Fast Sync de los que hemos estado hablando, y al menos para esta discusión, no es realmente relevante.

Más lecturas
  • Los mejores monitores para juegos
  • Explicación de FreeSync 2
  • Las mejores tarjetas gráficas 2018
Accesos de compra
  • Radeon RX 570 en Amazon, Newegg
  • Radeon RX 580 en Amazon, Newegg
  • GeForce GTX 1060 6GB en Amazon
  • GeForce GTX 1070 Ti en Amazon, Newegg
  • GeForce RTX 2070 en Amazon, Newegg
  • GeForce RTX 2080 en Amazon, Newegg
  • GeForce RTX 2080 Ti en Amazon, Newegg

Crédito de Masthead: Foto de Jakob Owens

Articles

Deja una respuesta

Tu dirección de correo electrónico no será publicada.