Skip to main content
cabecera teselación

La sobreteselación en Nvidia Gameworks como táctica anticompetitiva

Suele ser normal que un fabricante de tarjetas gráficas también se meta en el mundo del desarrollo de software. Esto lo suelen hacer para crear nuevos efectos o formas de hacer esos efectos que o bien aprovechen mejor características existentes en sus gráficas o bien para enseñar nuevos efectos que ahora se pueden hacer por hardware, por ejemplo.

Uno de estos efectos es la teselación. En resumidas cuentas, este efecto permite multiplicar el número de polígonos de un objeto al que le pasas una textura con displacement mapping y así consigues aumentar su nivel de detalle de forma instantánea. Desde hace varias generaciones de procesadores gráficos, este efecto ha podido realizarse por hardware con diversos motores de teselado que AMD y Nvidia han introducido en sus modelos de gráficas. Nvidia, sabiendo que su motor de teselado suele ser más potente que el de AMD, fuerza en su paquete de software Nvidia Gameworks efectos con niveles de teselado exageradamente altos, efectos que los hace mediante teselación aún sabiendo que con otros efectos de postprocesado se conseguirían mejores resultados y rendimiento e incluso ocultando teselación por el mapeado que se calcula pero que no se ve.

Ejemplo clásico de teselación de la demo técnica Unigine
Ejemplo clásico de teselación de la demo técnica Unigine

El caso Nvidia Gameworks y su pérdida de rendimiento en las gráficas que a Nvidia le da la gana (la competencia y gráficas aparentemente antiguas que Nvidia quiere que renueves) sale casi con cada juego que pisa el mercado que hace uso de este paquete. Como último caso tenemos el Fallout 4, un juego con gráficos terribles, que pide recursos bastante altos para los gráficos horrorosos que mueve y que usa el Gameworks. En este caso nos encontramos con que se usa teselación para la iluminación volumétrica, conocido coloquialmente como God Rays, un efecto que siempre se ha hecho con postprocesado porque da mejores resultados y consume menos recursos.

Comparativa de la propia nvidia en donde no se ven diferencias entre low y ultra
Comparativa de la propia nvidia en donde no se ven diferencias entre low y ultra

Lo que es peor, no hay prácticamente diferencias visuales entre ponerlo en su modo más bajo o en ultra pero el rendimiento te cae un 40%. Esta es la sobreteselación que comentaba. Teselar hasta niveles de subpixel, algo totalmente inncecesario para que, aunque tus gráficas también caigan en rendimiento, no pasa nada porque la competencia y tus gráficas antiguas van a caer más en rendimiento haciendo parecer que tu generación actual de gráficas es mejor de lo que realmente es.

Caída de rendimiento por la sobreteselación en fallout 4 proporcionado por Nvidia
Caída de rendimiento por la sobreteselación en fallout 4 proporcionado por Nvidia

Un caso también reciente lo encontramos en el famoso pelo de Geralt, el protagonista del videojuego The Witcher 3. Este juego fue elegido por Nvidia para mostrar las bondades de otro de sus grandes efectos que vienen integrados en su Gameworks. El Hairworks o la simulación más realista del pelo de personas, animales… En este caso el aspecto llamativo no solo era la caída de rendimiento por activar ese efecto del pelo aunque solo fuese a usarse en la cabeza del protagonista y no en el resto del entorno. El efecto de simulación de pelo también tiene su variante en AMD, TressFX, usado en otros juegos como el Tomb Raider y en ese juego se vio que se podía activar sin pérdida apreciable de rendimiento. Claro está, la versión de ese efecto de Nvidia usaba la sobreteselación para dibujar los pelos y de ahí la caída en rendimiento, en unos casos (AMD y gráficas kepler y anteriores) más que en otros. En este caso la desarrolladora de The Witcher 3 viendo la cantidad de críticas que estaba recibiendo por este efecto en concreto, acabó metiendo un slider por el cual podías bajar la cantidad de teselado del pelo de 64x (opción anteriormente por defecto, absurda y fuera de lugar ya que acabas teselando subpixels) a 16x sin que se apreciase una pérdida de calidad en el proceso.

Comparativa de teselación Hairworks the witcher 3 16x vs 64x
Comparativa de teselación Hairworks The Witcher 3 16x vs 64x

Todavía me acuerdo del caso Crysis 2, y me acuerdo porque es el más esperpéntico de todos. Resulta que en algunos mapas de ciudad te encontrabas con que habían metido un mar debajo de la ciudad y que ese mar se renderizaba usando sobreteselación. Ese mar no se veía, pero daba igual porque por el simple hecho de hacer que se renderice ya se estaba desviando el rendimiento del juego hacia donde a Nvidia le interesaba. También se encontraron casos de objetos lejanos que casi no se veían teselados hasta el extremo o de paredes totalmente planas que acababan convirtiéndose en millones de polígonos teselados a nivel de subpixel que no aportaban nada en lo visual pero que sí afectaba al rendimiento.

Podría seguir poniendo ejemplos, pero creo que resultaría pesado y se entiende lo que quiero decir.

Todo esto viene porque, cuando normalmente se analizan el rendimiento de tarjetas gráficas con el juego recién salido de turno, las páginas web tienden a ir a lo fácil. Lo ponen todo en ultra, hacen los tests y se acabó. Les da igual que haya un efecto que no aporta nada en lo visual y que simplemente por activarlo hagas que unas gráficas determinadas se vean perjudicadas en la comparativa, que si no pones todo en ultra pues luego la tabla queda fea. Nvidia esto lo sabe muy bien y para ellos esto es toda una victoria ya que estas comparativas no se suelen volver a revisar una vez descubierta la trampa Gameworks en el juego de turno con lo que el daño ya está hecho. Sus gráficas siempre estarán en la cima en esas comparativas aunque en otras que se revisan posteriormente (pocas) se vea que desactivando ese efecto de turno la cosa puede cambiar. AMD es consciente de esta situación con la sobreteselación y tiene en su panel de control una opción para sobreescribir las opciones de teselado a nivel de drivers en los juegos para poder cambiarse a algo más razonable, pero poca gente lo usa y creo que no lo he visto mencionado en ninguna comparativa entre gráficas con el videojuego de turno.

Es una pena que de dos compañías que continúan diseñando procesadores gráficos de alto rendimiento para el pc, una haga tecnologías que suelen ser abiertas y libres como Mantle y similares mientras que la otra se dedica a poner dinero encima de la mesa a desarrolladoras para que usen su caja negra llamada Gameworks que no aporta nada más que una distorsión en el mercado.

Actualización 22/12/2015:

Un canal de youtube acaba de publicar este vídeo en donde se comentan muchos de los puntos que he tratado aquí y además extiende otros relacionados con el tema. Te lo pongo aquí por si es de tu interés. El título del vídeo es un poco agresivo, supongo que para buscar el click fácil, pero el vídeo en sí está bien hecho:

3 comentarios en “La sobreteselación en Nvidia Gameworks como táctica anticompetitiva

    1. A mi no me parecería una locura, sobre todo porque la 970 en concreto es un modelo que no me gusta nada desde que se vio que nvidia mintió con sus especificaciones. Al final esa tarjeta tiene un reparto de memoria raro que estoy seguro le acabará perjudicando en el futuro y también tiene menos caché y ROPs de lo que nvidia dijo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *