> Manuales > Ayudas técnicas

El supersampling es la técnica para evitar los problemas de aliasing en gráficos por ordenador.

Bienvenidos al quinto post de la serie sobre aliasing que estoy realizando y que voy publicando en DesarrolloWeb.com y en Speakingin.net. En esta ocasión volvemos con un tema tratado anteriormente en el blog de Shawn Hargreaves que resulta especialmente interesante.

Supersampling

El supersampling es la técnica "simple" por fuerza bruta para evitar los problemas de aliasing en gráficos por ordenador.

Para evitar el aliasing, el teorema de Nyquist nos dice que debemos muestrear una señal a al menos a una frecuencia dos veces mayor a la frecuencia más alta de la señal de origen. Pero ¿cómo renderizamos una escena a una resolución mucho mayor?

Está claro que no queremos que la imagen final tenga una resolución bestial. No es bueno tener más pixeles que los que nuestra pantalla es capaz de mostrar. Así que una vez que tenemos nuestra preciada imagen, a alta resolución, libre de aliasing, tan sólo tenemos que reescalarla al tamaño final, usando un filtro para maximizar la calidad de la imagen.

Aquí tenemos un ejemplo, primero renderizamos a 64x64 sin aplicar técnicas de antialiasing, y la renderizamos a 256x256 (supersampling 16x) y volvemos a reducirla a 64x64 usando el filtro de "Best Quality" de Paint.NET (Si hiciésemos esto en los juegos en tiempo de juego, podemos usar un pixel shader para aplicar filtros de alta calidad):

64x64 sin aliasing:

64x64 después de aplicar el proceso descrito:

Si ampliamos ambas imágenes podemos ver las diferencias:

Como se ha incrementado la resolución de todas las operaciones de renderizado, el supersampling corrige muchos tipos de aliasing de un solo golpe:

De hecho el único problema de aliasing que no corrige el supersampling es el temporal.

El problema de esto es el coste. Incluso cuando tan sólo se dobla la resolución horizontal y vertical (haciendo un supersampling de 4x), tenemos que renderizar un número de pixeles cuatro veces mayor. Cuatro veces más texturas y cálculo de sombras, sin mencionar el aumento del framebuffer y la memoria, dejando a la GPU con un rendimiento cuatro veces menor. Y esto es tan sólo por un supersampling 4x, que no está para nada cerca de evitar los aliasing de texturas, geometrías y sombras.

¿Os acordáis del teorema de Nyquist? Para evitar el aliasing, hay que considerar el ratio entre la escala máxima y mínima a la que una señal puede ser reconstruida:

Es muy normal que los objetos cambien su tamaño en un factor de más de 100 a medida que nos movemos por el mundo. Pero esto sería totalmente impracticable ya que tendríamos que incrementar la resolución de la renderización en 100x tanto a lo ancho como a lo alto, incrementando el trabajo de la GPU en un orden de 10.000 veces más.

Por esta razón el supersampling no es muy usado, por eso esta serie de artículos no ha terminado. Pero es un punto de partida para entender otras técnicas más avanzadas de antialiasing.

Un escenario de uso de supersampling es cuando conectamos la XBOX 360 a una televisión con definición estándar. La mayoría de juegos de Xbox se renderizan en resoluciones HD como 1280x720, dejando en manos del hardware el trabajo de escalar las imágenes a la resolución de salida. Eso es supersampling. Gracias al trabajo del hardware, esos píxeles de sobra no se tiran, sino que se usan para crear una imagen sin aliasing de 640x480.

Otro escenario en el que los juegos usan supersampling es cuando hacen capturas de pantalla. Las build internas de MotoGP incluían un modo especial que permitía renderizar la misma escena usando diferentes matrices de proyección, combinando literalmente miles de imágnes a 640x480 para crear una captura de pantalla de 16384*16384, que podíamos descargarnos para tener una resolución más sana en Photoshop. ¿Truco?, puede. Pero es el motor de juego y sombras que se usa en los modelos y texturas que usa el hardware de Xbox. Las imágenes son tan perfectas, que se veían bien incluso cuando se imprimían en un poster gigante.

Nota: Este artículo es una traducción libre del post Supersampling de Shawn Hargreave.

Juan María Laó Ramos

Project Manager at Syderis Technologies S.L.

Manual