Tile Rendering, el secreto del rendimiento de las GPUs de bajo consumo

Tile Rendering, el secreto del rendimiento de las GPUs de bajo consumo

Josep Roca

Las GPUs para dispositivos de bajo consumo como son los smartphone, tabletas e incluso PCs de bajo consumo suelen utilizar una forma de renderizar común entre ellas: el Tile Rendering. ¿Pero qué significa y en qué consiste? Os lo explicamos de manera rápida y clara para que entendáis en que se diferencian estas GPUs de las más tradicionales.

El concepto del Tile Rendering se basa en dividir los búferes de imagen en varios más pequeños a los que llamamos “Tiles”. Es una técnica utilizada por las GPUs de los dispositivos móviles y por tanto de bajo consumo, la cual conlleva cambios importantes en la organización interna del procesador gráfico.

Resumen rápido del pipeline de la rasterización

El Tile Rendering es una variación del algoritmo de rasterización, el cual se divide en dos etapas:

  • World Space Pipeline
  • Screen Space Pipeline

En el World Space Pipeline se calcula la geometría de la escena, visualizarla como un escultor que realiza una figura en su taller, en dicha etapa no se trabaja con pixeles sino con vértices en un espacio de coordenadas tridimensional.

El Screen Space Pipeline empieza con el rasterizado, el cual no es más que la proyección en el plano de toda la escena 3D, imaginad por un momento que ese mismo escultor realiza una foto a su trabajo, obviamente ha transformado su trabajo a un espacio en dos dimensiones, ya que una fotografía es un elemento bidimensional.

Rasterizado Básico

Pero la cámara de nuestro escultor es especial, resulta que hace las fotografías en blanco y negro, no las hace en color, por lo que tiene que coger las fotografías y las ha de editar en el su ordenador para darles color, lo que vendría a ser el proceso de texturizado. Ya para terminar el fotógrafo saca la foto ya en color a su impresora, lo que sería el equivalente a escribir los pixeles finales en el búfer de imagen.

¿En que es diferente el Tile Rendering?

Tile Rendeirng Pipeline

El Tile Rendering tiene las mismas etapas que la rasterización tradicional, pero añade etapas adicionales al pipeline gráfico, lo que lleva a que sea un poco más lento que el rasterizado tradicional al tener un pipeline más largo.

Justo al terminar el cálculo de la geometría de la escena, lo que hace la GPU es ordenar la geometría de la escena según su posición en pantalla y crea una serie de listas de pantalla nuevas, una por cada tile de la pantalla, en cada una de ellas se almacena la información de la geometría en esa parte de la pantalla, dicho búfer es generado en la VRAM.

Tile Rendering

El siguiente paso es la rasterización, pero en este caso los tiles se acaban de rasterizar uno a uno, pero la ventaja es que el búfer de imagen de cada tile es lo suficientemente pequeño como para caber en la memoria interna de la GPU, lo que hace que para las operaciones del Color Buffer y el Z-Buffer no requieran ancho de banda de la VRAM, lo que permite el uso de memorias con menos ancho de banda y una reducción considerable en el consumo.

En las GPUs basadas en el Tile Rendering podemos ver más de una vez el concepto «GPU de x núcleos«, en realidad no es que existan varias GPUs en el chip, sino que está diseñada para procesar x tiles al mismo tiempo durante el Screen Space Pipeline.

Apple A10X

¿Por qué el tile rendering no se utiliza en GPUs para PCs de escritorio?

RTX 3000 RX 6000

El mayor problema de las GPUs con Tile Rendering es el proceso en el que ordenan la geometría de la escena en el búfer de parámetros, este proceso requiere un hardware más complejo cuanto mayor sea la complejidad geométrica de la escena. Los juegos AAA para PC y consolas, donde se utilizan GPUs que no son Tile Renderers tienen una complejidad geométrica que hace que los Tile Renderers no puedan escalar tan bien en ese aspecto.

En las GPUs de AMD y NVIDIA lo que existe es el Tile Caching que consiste en rasterizar por tiles pero con una serie de diferencias:

  • No se genera el búfer de parametros o de triangulos.
  • En el Tile Rendering los pixeles de cada tile se mantienen en la memoria interna hasta que no se ha resuelto la lista de pantalla del tile.
  • En el Tile Caching, los pixeles van a la Cache L2 de la GPU por lo que pueden caer a la VRAM en cualquier momento.

Por el momento no existe nada que nos indique que AMD o NVIDIA vayan a tomar el camino del Tile Rendering.