La revolución necesaria del DLSS

Para jugar a 1080p me bastaba con la Nvidia Geforce GTX 1060 3GB de Gigabyte que conseguí poco después de terminar el montaje de mi nuevo ordenador de sobremesa; pero no es menos cierto que desde el principio tuve el ojo puesto en la gama RTX para poder subirme al carro de una tecnología que en tiempos me hubiera parecido de ciencia-ficción: el DLSS, iniciales de Deep Learning Super Sampling.

La relación resolución / potencia de cálculo

Muy a grandes rasgos y a nivel muy muy básico, una tarjeta gráfica necesita más potencia cuantos más pixels tiene que dibujar en pantalla. A una resolución de 1080p son 2073600 pixels. A 1440p serían 3686400, a K4 nos iríamos a 8294400 y, por último, a 8K serían 33177600 pixels.

Pensad ahora que esos son los pixels necesarios para dibujar un sólo frame en pantalla, y si estamos jugando algo que requiera un mínimo de acción querremos que la imagen se refresque, al menos, 60 veces cada segundo para no tener sensación de discontinuidad en la animación, que es algo que saca del juego (y de quicio) a cualquiera.

Si tomamos el ejemplo de resolución 4K, en el que decíamos que la pantalla a dicha resolución se compone de 8294400 pixels y lo multiplicamos por 60, tenemos que la tarjeta gráfica tiene que calcular cada segundo la friolera de 497664000 pixels. ¡Eso son casi quinientos millones de pixels en un sólo segundo! ¡¡¡QUINIENTOS MILLONES!!!

Obviamente, para poder mover semejante cantidad de datos la potencia bruta y la velocidad de proceso de la tarjeta gráfica han de ser tremendas, porque los pixels no son sólo cuadrados de colores sin más; sino que hasta decidir su aspecto previamente llevan una rutina de posicionado, trazado de vértices, texturizado, sombreado… Y no digamos ya si emplean técnicas de iluminación mediante raytracing ¿Empezáis a entender por qué las tarjetas de gama alta cuestan lo que cuestan, abultan lo que abultan y se calientan como se calientan?

De cualquier modo, cuando se pasó de FullHD (1080p) a la resolución de 1440p los fabricantes se dieron cuenta de que la potencia necesaria para dar el salto a cada siguiente resolución se iba incrementando a un ritmo exponencial que el desarrollo de las tecnologías gráficas clásicas no iba a ser capaz de seguir. Se imponía por tanto buscar una solución que no fuera simplemente meter potencia bruta sin más, ya que con el 4K empezando a proliferar y el 8K en el horizonte no es posible disponer de tal potencia de cálculo en una tarjeta que de momento ha de entrar en la caja de un PC.

Buscando alternativas a la potencia pura y dura

Y así es cómo en Nvidia empezaron a dar vueltas a la idea de crear unos algoritmos de escalado dinámico que permitieran renderizar internamente a una resolución inferior para en un último paso resamplear a resoluciones más altas sin apenas pérdida de calidad. Y es que ahí está la clave de todo: podéis coger el Paint, abrir una imagen de 80 x 120 pixels y subirle la resolución todo lo que queráis, pero los píxeles tendrán el tamaño de un melocotón y el resultado será, como mínimo, decepcionante.

Lo alucinante del DLSS es que realmente la pérdida de calidad es muy pequeña para lo mucho que baja la resolución internamente el algoritmo. Por ejemplo, si vamos a jugar en 4K (2160p) y elegimos el modo llamado «Calidad» internamente renderizará a 1440p. Si elegimos el modo «Equilibrado» lo hará en 1253p, mientras que el modo «Rendimiento» lo hará a 1080p y el «Rendimiento Ultra» a 720p. Y sí que es verdad que en este último caso se nota pérdida de calidad sobre todo en los detalles más finos como el pelo de Lara Croft en Shadow of Tomb Raider o las estructuras metálicas finas lejanas en Cyberpunk 2077, pero si elegimos los modos «Calidad» o «Equilibrado» realmente apenas notaremos diferencia con la resolución original y la tasa de frames por segundo se incrementará considerablemente.

Hubo una primera versión que funcionaba en juegos muy específicos y era algo limitada, pero poco a poco la tecnología ha ido evolucionando y a día de hoy estamos ya en la versión 2.0 del DLSS que ofrece mejores prestaciones y una implentación en los títulos más sencilla para los desarrolladores. Hasta tal punto es así que algunos títulos que ya empleaban la primera versión del algoritmo se han actualizado para hacer uso de la versión actual.

Los detalles de cómo funciona el DLSS son bastante complejos, ya que se basa en una red neuronal que utilizando imágenes de muy alta y baja resolución del juego que Nvidia carga en sus servidores aprende cómo rellenar los huecos y desajustes que ocurren cuando se resamplea «a las bravas» una imagen y esta información la acaban volcando en los drivers gráficos que actualizan un par de veces al mes más o menos. Obviamente no os voy a dar el tostón aquí con tantos detalles tećnicos, pero si os interesa el tema os recomiendo echar un vistazo a algunos artículos (casi siempre en inglés) donde tocan en tema de forma bastante profunda.

Está claro que este post-procesado requiere una potencia de cálculo importante en la tarjeta gráfica, pero a la vista de los resultados, las unidades que computan estos algoritmos (los llamados Tensor Cores en las dos últimas familias de tarjetas gráficas de Nvidia RTX20 y RTX30) lo hacen bastante más rápido que si desactivamos el DLSS; lo cual me parece sencillamente alucinante. Que sea más fácil para la tarjeta «inventarse» parte de los pixels de la imagen que calcularlos y que además el resultado final sea tan bueno es algo que la primera vez que vi me sorprendió muchísimo.

DLSS en pruebas sintéticas: 3DMark

Para mostraros esto de una forma gráfica (nunca mejor dicho) he pasado el test específico de DLSS que incorpora la última versión de 3D Mark, el cual dicho sea de paso, es una pasada a nivel visual. Y es que, de hecho, 3DMark siempre ha sido la referencia para los gráficos más punteros, acordándome ahora mismo de la mítica demo de la versión del año 2000 que ejecutaba en mi AMD K6-2 de la época al que le puse una Voodoo Banshee con 16 MB de VRAM.

Volviendo al test de DLSS, en primer lugar aquí tenéis el resultado de pasar el test a una resolución de 1080p con mi Nvidia Geforce RTX 2060. La primera parte es sin DLSS y la segunda aplicando el algoritmo en modo «Calidad», haciendo que apenas haya diferencias gráficas entre uno y otro test.

Como podéis ver, sin aplicar DLSS obtenemos unos 32 FPS, y con el modo «Calidad» la media es de casi 58 FPS que es  un 80% de ganancia de rendimiento (casi el doble).

En caso de aplicar el modo «Rendimiento» en la misma resolución de antes perderemos algo de calidad gráfica en algunos detalles finos pero ganaremos unos cuantos FPS.

En esta ocasión hemos pasado de los 32 FPS al no aplicar DLSS a una tasa de prácticamente 76 FPS, lo que representa una ganancia de rendimiento del 135%.

DLSS en la práctica: Shadow of Tomb Raider

Vamos a ver ahora esto mismo pero aplicado a un juego comercial como es el Shadow of Tomb Raider dado que nos permite usar todos los modos de DLSS disponibles y así como, logicamente, prescindir de él. Se ha ejecutado en el mismo equipo que la prueba del 3DMark.

En las siguientes imágenes podéis ver, de arriba a abajo, cómo influye en la tasa de cuadros por segundo no emplear DSLL o ir usando respectivamente los modos Calidad, Equilibrado, Rendimiento y Rendimiento ultra, manteniendo en todos los casos la calidad gráfica del juego en el máximo y la resolución a 1080p.

¿Veis a lo que me refiero? Emplear DLSS hace que tengamos más FPS a costa de una apenas perceptible pérdida de calidad de imagen, de modo que es un recurso valioso que nos permitirá estirar un poco más la vida útil de nuestra tarjeta gráfica antes de plantearnos dar el salto a un modelo superior porque ya no da más de si.

Ahora bien, espero que con esto los desarrolladores no empiecen a optimizar los juegos malamente pensando que si va lento con que los usuarios activen el DLSS ya está todo arreglado, porque entonces estamos en las mismas al compensar una ventaja con una desventaja. El DLSS es un inventazo, pero yo lo entiendo como un modo de que gente que no tiene una tarjeta de gama alta pueda jugar a resoluciones y/o niveles de detalle que «de serie» no podrían alcanzar.

Que este tipo de tecnologías van a ser de un uso cada vez más general lo demuestra el hecho de que recientemente AMD ha sacado su algoritmo FidelityFX Super Resolution y que Intel, que ahora se va a subir también al carro de las tarjetas gráficas con sus modelos Arc, va a emplear una tecnología similar llamada XeSS. Está claro que esta era una revolución necesaria.

La velocidad de las tarjetas de memoria en fotografía

De nada sirve hacerse con una Nikon D3 y su capacidad de disparar nueve fotografías por segundo (una auténtica ametralladora) si luego nuestra tarjeta de memoria es tan lenta que representa un cuello de botella que la deja parada durante varios segundos al transferir hasta ella los datos del buffer intermedio de la cámara.

specsview-001

(Imagen extraída de dpreview.com)

Dicho buffer no es más que una rápida memoria RAM de tipo FIFO (“First In, First Out” o “primero en entrar primero en salir”) en la que se almacenan las fotografías recién capturadas para dotar al sistema de una cierta agilidad en sus operaciones de escritura. Nunca se escribe directamente en la tarjeta porque la operación sería mucho más propensa a errores de sincronización y el rendimiento de la máquina dependería mucho de la tarjeta empleada (de hecho depende, pero mucho menos gracias al empleo de esa memoria intermedia que ya está optimizada para rendir al máximo).

Al tomar fotografías sueltas, nada más terminar la exposición la cámara genera la imagen internamente con los datos captados por el sensor, la pasa al buffer y a continuación la graba en la tarjeta. Por muy lenta que esta sea, nosotros no notaremos esa operación de escritura porque se realiza antes de que nos de tiempo siquiera a componer la siguiente imagen en el visor.

En modo ráfaga el proceso es algo diferente: mientras mantengamos el dedo presionando el disparador, la cámara va generando las imágenes, pasándolas al buffer y a continuación a la tarjeta de memoria. Esa operación de escritura se irá realizando en segundo plano de forma continuada y completamente transparente para nosotros, de tal modo que las imágenes van entrando por un lado del buffer y almacenándose allí temporalmente durante el tiempo necesario para que la tarjeta las vaya grabando en ella. Para hacernos una idea un poco más gráfica, es como un depósito de agua con una tubería de entrada (el sensor) y un grifo a la salida (la tarjeta de memoria).

!

Todo irá como la seda si la tarjeta es tan rápida como para grabar los datos según entran al buffer (dejamos el grifo abierto y según entra agua al depósito sale por el otro lado). En el caso contrario las imágenes se irán acumulando en dicho buffer hasta que se llene. En ese momento, la cámara dejará de disparar hasta que se transfiera a la tarjeta la suficiente información como para tener espacio de almacenamiento interno para una imagen más. Es como si nuestro depósito estuviera lleno, el grifo no diera más de si y en la tubería el agua se quedara acumulada esperando a entrar. Evidentemente no podrá pasar más líquido al interior del depósito hasta que el grifo lo vacíe un poco.

Es decir, que la ráfaga funcionará a toda velocidad siempre que haya espacio suficiente en el buffer para almacenar al menos una fotografía más, así que cuando estamos rozando el límite de llenado de esa memoria intermedia, la cámara dejará de disparar y se pondrá a transferir información a la tarjeta de memoria con objeto de liberar espacio en el buffer; y hasta que eso no suceda no va a seguir disparando hagamos lo que hagamos, por lo que la cadencia de la ráfaga disminuirá considerablemente.

Baldo

Aquí es donde entra en juego la velocidad de la tarjeta de memoria, pues cuanto más rápida sea, menos va a tardar la cámara en transferir los datos desde el buffer. Si la tarjeta es lenta (grifo de poco caudal) enseguida se va a ir llenando esa memoria intermedia y comenzarán los parones en la ráfaga, mientras que con una tarjeta rápida (grifo por el que puede salir gran cantidad de agua) vamos a poder disparar a máxima velocidad durante todo el tiempo que queramos (al menos en formato JPG) porque las fotografías se graban en la tarjeta al mismo ritmo que entran en el buffer. Además, en caso de alcanzar el límite de llenado del buffer, usando una tarjeta rápida la operación de vaciado será más breve que si escribimos en una tarjeta de velocidad inferior.

Por cierto, hablando de velocidad, actualmente hay una forma más o menos estándar de conocer la velocidad de las tarjetas SD, que consiste en buscar un círculo con una C y una cifra a continuación que indicará la rapidez de la tarjeta. Las más lentas son las de clase 2 (C2), mientras que por encima irán las C4 y las más rápidas a día de hoy son las C6 C10 (gracias a K0J1 por el apunte 😉 ).

sandisk-4gb-extreme-iii-sd-card-sdhc--class-6

Para poneros un ejemplo concreto, en el buffer de mi Nikon D40 caben cuatro imágenes en RAW o nueve en JPG a máxima calidad, pero hay cámaras profesionales cuyo buffer es muchísimo más grande (66 en JPG y 17 en RAW en el caso de la Nikon D3). Mi velocidad de disparo es de 2.6 fotografías por segundo en cualquiera de los dos formatos, y la diferencia entre emplear la tarjeta marca “Nisupa” que me regalaron con la cámara y la Sandisk Extreme III de 4 GB que compré poco después es que antes la ráfaga en JPG se me ralentizaba cuando llevaba unas cuantas fotografías y ahora puedo disparar en dicho formato hasta 99 fotografías (limitado por firmware) a máxima velocidad porque la información se graba en la tarjeta de memoria al mismo ritmo que entra en el buffer.

Disparar en formato RAW ya es otra historia, pues al ocupar seis megabytes cada fotografía sí que alcanzo a llenar el buffer en ráfagas de más de seis disparos, ralentizando la ráfaga a aproximadamente dos imágenes por segundo (que tampoco está nada mal para una cámara tan sencilla); aunque ese llenado se alcanza tan pronto como sucedía con la tarjeta más lenta y además la memoria intermedia se vacía más rápidamente como os decía hace un par de párrafos. De cualquier modo, apenas empleo el modo ráfaga (hasta el momento nada más que en los recientes fuegos artificiales en Oropesa del Mar), por lo que la compra de la nueva tarjeta respondió más al deseo de tener un medio de almacenamiento fiable que a una necesidad real de velocidad.

Y es que para temas de fotografía siempre merece la pena invertir un dinero extra en el medio de almacenamiento; ya sea por el tema de la velocidad si acostumbráis a disparar en ráfaga o porque una tarjeta barata nos puede dejar tirados el día que hemos hecho las mejores fotografías de nuestra vida (la Ley de Murphy es poderosa).

* Todos los artículos de este tipo en https://luipermom.wordpress.com/fotografia