Alguien sabría explicarme esto sobre V-SYNC?

Antes de nada, decir que juego en 60Hz y que tengo un PC que me sobra de potencia para jugar a 1080p (juego en Ultra a todo).

El caso es que según la teoría general, cuando bajas de 60 FPS en 60 Hz por ejemplo, V-Sync está diseñado para rebajar esos 60 FPS a 30 FPS para evitar el tearing, causando bastante lag (se supone que la sincronización adaptable evita esto, pero por mi experiencia la A-Sync es bastante inestable en cuanto a tearing, sobre todo en clips o secuencias de videojuegos, "cutscenes").

Mi duda es la siguiente: actualmente estoy jugando a un juego que tiene fama de estar algo mal optimizado en PC (sí, Ubisoft), por lo que a veces tengo caídas de 4 o 5 FPS en algunas zonas jugando a 60 FPS estables el 95% del tiempo. Cuando tengo esas caídas, sí que noto algún micro lag pero para nada algo como sentir una sensación de 30 FPS, es más, el juego no baja nunca a 30, sino que muestra 57 o 55 FPS (la cual es la sensación que sí me correpondería). Todo esto con V-Sync activado.

¿Por qué no noto esa sensación de 30 FPS si el juego baja de 60 FPS? He leído que la clave de V-Sync está más en mantener el frametime aunque haya una caída de FPS que en los mismos FPS.


Me gustaría saber la "teoría" de esto, para mí es interesante. Gracias de antemano.
tonygabbana escribió:Antes de nada, decir que juego en 60Hz y que tengo un PC que me sobra de potencia para jugar a 1080p (juego en Ultra a todo).

El caso es que según la teoría general, cuando bajas de 60 FPS en 60 Hz por ejemplo, V-Sync está diseñado para rebajar esos 60 FPS a 30 FPS para evitar el tearing, causando bastante lag (se supone que la sincronización adaptable evita esto, pero por mi experiencia la A-Sync es bastante inestable en cuanto a tearing, sobre todo en clips o secuencias de videojuegos, "cutscenes").

Mi duda es la siguiente: actualmente estoy jugando a un juego que tiene fama de estar algo mal optimizado en PC (sí, Ubisoft), por lo que a veces tengo caídas de 4 o 5 FPS en algunas zonas jugando a 60 FPS estables el 95% del tiempo. Cuando tengo esas caídas, sí que noto algún micro lag pero para nada algo como sentir una sensación de 30 FPS, es más, el juego no baja nunca a 30, sino que muestra 57 o 55 FPS (la cual es la sensación que sí me correpondería). Todo esto con V-Sync activado.

¿Por qué no noto esa sensación de 30 FPS si el juego baja de 60 FPS? He leído que la clave de V-Sync está más en mantener el frametime aunque haya una caída de FPS que en los mismos FPS.


Me gustaría saber la "teoría" de esto, para mí es interesante. Gracias de antemano.

Llevo toda la vida usando v-syncs con un monitor de 60hz y nunca me a bajado a 30fps por tenerlo activo, he escuchado alguna vez a alguien decir que funciona asi pero ya te adelanto que eso no funciona asi, vamos es que no tendria sentido alguno, si te baja a 57fps pues te ira a 57fps, es absurdo pensar que por bajar de 60 se va a poner a 30
@trakergc Eso es culpa del Vsync clásico con doble buffer: Si un frame no llega a tiempo (aunque sea 1ms tarde), repite el ultimo frame.

Si el frame rate se mantiene estable por debajo de 60fps, y puesto que vsync obliga a la GPU a no renderizar frames hasta recibir una señal del monitor, (casi) todos los frames llegarán tarde y tendrá que repetir el anterior constantemente, lo que a efectos prácticos supone reducir a la mitad la tasa de refresco.

Pero actualmente ese problema puede evitar de varias maneras: Una de ellas es el triple buffer (añade un nuevo backbuffer más para almacenar frames sin las limitaciones de sincronización del primer backbuffer) a costa de consumir más VRAM.

Otra solución alternativa es Adaptative Vsync, un Vsync que se desactiva automáticamente cuando el framerrate cae por debajo de la tasa de refresco (el tearing se produce en el caso contrario). Y luego está GSync y FreeSync, que sincronizan el monitor con el frame rate en vez de al revés.
Odioregistrarme escribió:@trakergc Eso es culpa del Vsync clásico con doble buffer: Si un frame no llega a tiempo (aunque sea 1ms tarde), repite el ultimo frame.

Si el frame rate se mantiene estable por debajo de 60fps, y puesto que vsync obliga a la GPU a no renderizar frames hasta recibir una señal del monitor, (casi) todos los frames llegarán tarde y tendrá que repetir el anterior constantemente, lo que a efectos prácticos supone reducir a la mitad la tasa de refresco.

Pero actualmente ese problema puede evitar de varias maneras: Una de ellas es el triple buffer (añade un nuevo backbuffer más para almacenar frames sin las limitaciones de sincronización del primer backbuffer) a costa de consumir más VRAM.

Otra solución alternativa es Adaptative Vsync, un Vsync que se desactiva automáticamente cuando el framerrate cae por debajo de la tasa de refresco (el tearing se produce en el caso contrario). Y luego está GSync y FreeSync, que sincronizan el monitor con el frame rate en vez de al revés.


Lo primero, gracias a ti y @trakergc por responder.

Efectivamente, según he podido investigar en distintos foros, es un problema que solía pasar con el Vsync clásico de doble buffer y que se llegó a solucionar activando el triple buffer o el Adaptive Vsync (bastante inestable en mi experiencia a día de hoy, sobre todo en cutscenes de juegos)

Sé que hace bastante el triple bufer se activaba manualmente con programas como D3DOverrider (no llegué a jugar en PC en esa época, te estoy hablando a lo mejor de hace 10 o 15 años), pero a día de hoy no hay ninguna manera de activarlo (el panel de control de Nvidia por ejemplo sí que ofrece una opción pero SOLO funciona para aplicaciones OpenGL, justo un estándar que se usaba más en aquella época).

Por lo tanto entiendo que prácticamente todos los juegos a día de hoy son desarrollados con triple buffer de manera "interna", ¿no? (alguna excepción he visto, sobre todo ports de consolas que están hechos para jugarlos a 30 FPS)

De nuevo, muchísimas gracias.
No estoy muy enterado del tema, así que no puedo aconsejarte mucho sobre como forzar el Triple Buffer.

Si D3DOverride no funciona (creo que es porque el buffering funciona diferente en Dx12 y Vulkan), he leídoque RadeonPRO también puede forzar triple buffering en Direct3D (si, obviamente, tienes una GPU de AMD)

Es eso, o utilizar algún wrapper D3D->OpenGL y forzar triple buffering desde el wrapper o el panel de GPU...
Sé que DXVK (D3D9-11 -> Vulkan) ofrece esa opcion.

También están el Fast Sync de Nvidia (que incluye triple Buffering) y Enhanced Sync de AMD (que lo combina con Adaptative Sync)
RadeonPRO funciona sobre cualquier GPU en muchas de sus funciones y modificaciones que hace, ya que manipula directamente sobre D3D [9/10 y creo tambien en 11].
tonygabbana escribió:Antes de nada, decir que juego en 60Hz y que tengo un PC que me sobra de potencia para jugar a 1080p (juego en Ultra a todo).

El caso es que según la teoría general, cuando bajas de 60 FPS en 60 Hz por ejemplo, V-Sync está diseñado para rebajar esos 60 FPS a 30 FPS para evitar el tearing, causando bastante lag (se supone que la sincronización adaptable evita esto, pero por mi experiencia la A-Sync es bastante inestable en cuanto a tearing, sobre todo en clips o secuencias de videojuegos, "cutscenes").

Mi duda es la siguiente: actualmente estoy jugando a un juego que tiene fama de estar algo mal optimizado en PC (sí, Ubisoft), por lo que a veces tengo caídas de 4 o 5 FPS en algunas zonas jugando a 60 FPS estables el 95% del tiempo. Cuando tengo esas caídas, sí que noto algún micro lag pero para nada algo como sentir una sensación de 30 FPS, es más, el juego no baja nunca a 30, sino que muestra 57 o 55 FPS (la cual es la sensación que sí me correpondería). Todo esto con V-Sync activado.

¿Por qué no noto esa sensación de 30 FPS si el juego baja de 60 FPS? He leído que la clave de V-Sync está más en mantener el frametime aunque haya una caída de FPS que en los mismos FPS.


Me gustaría saber la "teoría" de esto, para mí es interesante. Gracias de antemano.

Como siempre mucho lio de coco con esto, tambien es culpa que hay mucho publicado que no es correcto.

Lo que hace la sincronización vertical es reducir el lag entre la tarjeta grafica y el monitor aunque sea a costa de perder fps. Asi que la perdida de fps esta muy influenciada por el juego y la carga grafica que se tiene, asi como el PC, no todos los juegos en todos los PCs se mostraran del mismo modo.

Luego hay varias versiones de la sincronización vertical como la adaptable que te limita los fps a 60. Hay una variante que los limita a la mitad en base a la mitad de la tasa de refresco. Y luego esta la rapida que se llama diferente en tarjetas de ATI, creo que enhanced. La rapida intenta mantener los fps más altos posibles pero si la carga es alta, sucumbira a la reducción de fps para evitar el retraso con el monitor.

Lo que mejor funciona sin duda es el Gsync o Freesync porque iguala los fps con los hz, asi que puedes estar jugando a 65hz con 65 fps. No tienes porque tener que mantener 144hz, se recomienda solo ser capaz de jugar a 60fps o más para mantener la frecuencia variable pero lo más alta posible. No obstante Gsync funciona a 30 o más fps y Freesync para 40 fps, aunque esto depende del monitor, algunos requieren más fps, desactivandose debajo de esas tasas requeridas.
6 respuestas