10.05.2013 Views

03aRA12 Aliasing - DAC

03aRA12 Aliasing - DAC

03aRA12 Aliasing - DAC

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Rendering Avanzado<br />

ALIASING Y<br />

CÓMO COMBATIRLO<br />

Its’s important to keep in mind that a pixel is actually<br />

not a little square, and that samples outside the pixel’s<br />

grid can -and should- influence the pixel’s color.<br />

-- Tomas Akenine-Möller<br />

(A pixel is not a little square !)<br />

David Miraut Andrés david.miraut@urjc.es<br />

3<br />

-- Alvy Ray Smith<br />

In our last episode the evil high frequencies from the<br />

<strong>Aliasing</strong> Empire were sneaking into our image and<br />

transforming themselves into deadly Jaggies. Our<br />

research labs had come up witha theoretical weapon<br />

to defeat the Jaggies. Unfortunately, the purely<br />

theoretical solution cannot be used in practice...<br />

-- Jim Blinn


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

c<br />

ÍNDICE<br />

Ejemplos visuales<br />

Definición formal del problema del aliasing<br />

Conceptos sencillos de muestreo y reconstrucción<br />

Tecnicas tradicionales de antialiasing<br />

Tecnicas implementadas en HW gráfico (GPUs)<br />

Detrás del telón: el dominio de la frecuencia y la<br />

verdadera causa del aliasing<br />

Trataremos el problema de la forma más intuitiva posible<br />

dentro del dominio del tiempo y el espacio, cuando la base<br />

esté más asentada pasaremos al dominio de la frecuencia<br />

dónde se puede profundizar en el problema y su solución<br />

más rigurosamente.<br />

Todas las marcas y productos mencionados<br />

en estas trasparencias están registradas por<br />

sus respectivas compañías, y su uso es de<br />

carácter descriptivo con fines docentes.<br />

Parte de las tablas y gráficos y el texto están<br />

basados en el libro Real Time Rendering de<br />

Tomas Akenine-Möller y Eric Haines, y en<br />

los libros mencionados en la bibliografía


Un pixel no es:<br />

un cuadrado<br />

un disco<br />

¿QuÉ ES UN PIXEL?<br />

una luz muy pequeñita<br />

Un pixel ES un punto<br />

no tiene dimensión (dimensión 0)<br />

no ocupa área<br />

no se puede ver<br />

tiene una coordenada<br />

En realidad, un pixel es mucho más que un simple punto...<br />

¡es una muestra!<br />

Tarjeta Hércules


MUESTRAS<br />

La mayor parte de las cosas en el mundo son continuas,<br />

aunque todo en un ordenador tiene naturaleza discreta<br />

El proceso de mapear una función contínua a una discreta<br />

es lo que llamamos muestreado (sampling)<br />

El proceso de mapear una variable contínua a una<br />

variable discreta se denomina cuantización<br />

Para representar ó renderizar una imagen con un<br />

ordenador, tenemos que muestrear y cuantizar<br />

Tarjeta Hércules<br />

muestreo


UNA IMAGEN ES UNA FUNCIÓN 2D<br />

Una imagen ideal es una función I(x,y) de intensidades<br />

Puede representarse como un campo de alturas<br />

En general, una<br />

imagen no se<br />

puede representar<br />

fácilmente<br />

como una función<br />

analítica contínua<br />

En lugar de ello,<br />

representamos las<br />

imágenes como<br />

funciones<br />

tabuladas<br />

Tarjeta Hércules<br />

Imagen de Leonard McMillan (Univ. North Carolina)<br />

¿Cómo rellenamos la tabla?


MALLA DE MUESTREO REGULAR<br />

Podemos generar una “tabla” / array con valores al multiplicar la<br />

función contínua de la imagen por un conjunto uniformemente<br />

distribuido de funciones delta de Kronecker<br />

Tarjeta Hércules<br />

Imagen de Leonard McMillan (Univ. North Carolina)


MUESTREO DE LA IMAGEN<br />

El resultado es un conjunto de muestras puntuales, ó píxeles<br />

Tarjeta Hércules<br />

Imagen de Leonard McMillan (Univ. North Carolina)


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

ALIASING


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

ALGUNOS EJEMPLOS<br />

Probablemente al hablar de aliasing, lo primero que nos vienen a la<br />

mente son imágenes como éstas:<br />

Por lo que le echamos la culpa a los famosos<br />

“pixeles cuadrados”, pero podemos conseguir<br />

mucha mejor calidad en nuestros gráficos si<br />

indagamos en el problema para atajarlo de raíz.<br />

Tarjeta Hércules<br />

Las líneas horizontales<br />

y los rectángulos no<br />

tienen artefactos<br />

extraños<br />

Las líneas diagonales y<br />

curvas se ven mucho<br />

peor, tenemos bordes<br />

dentados y un pixelado<br />

muy molesto


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Rueda del vagón del tren<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Supongamos que nos equivocamos de codec con la cámara digital<br />

y, por error, elegimos uno de baja calidad que toma las imágenes a<br />

intervalos mayores (menor frecuencia). Por ejemplo, en lugar de<br />

las 50 imágenes por segundo sólo tomamos 7 por segundo<br />

¿Qué ocurre al reproducir el vídeo?<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Supongamos que nos equivocamos de codec con la cámara digital<br />

y, por error, elegimos uno de baja calidad que toma las imágenes a<br />

intervalos mayores (menor frecuencia). Por ejemplo, en lugar de<br />

las 50 imágenes por segundo sólo tomamos 7 por segundo<br />

¿Qué ocurre al reproducir el vídeo?<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Supongamos que nos equivocamos de codec con la cámara digital<br />

y, por error, elegimos uno de baja calidad que toma las imágenes a<br />

intervalos mayores (menor frecuencia). Por ejemplo, en lugar de<br />

las 50 imágenes por segundo sólo tomamos 7 por segundo<br />

¿Qué ocurre al reproducir el vídeo?<br />

Tarjeta Hércules


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

EFECTO DE LA RUEDA DE TREN<br />

Imaginemos que estamos filmando con nuestra flamante cámara de video<br />

un tren en movimiento, y nos fijamos en el movimiento de las ruedas<br />

de los vagones, en el mismo sentido de avance del tren...<br />

Supongamos que nos equivocamos de codec con la cámara digital<br />

y, por error, elegimos uno de baja calidad que toma las imágenes a<br />

intervalos mayores (menor frecuencia). Por ejemplo, en lugar de<br />

las 50 imágenes por segundo sólo tomamos 7 por segundo<br />

¿Qué ocurre al reproducir el vídeo?<br />

Parece que la rueda se mueve hacia ATRÁS<br />

<strong>Aliasing</strong> temporal


¿QUÉ ES EL ALIASING?<br />

OTROS LUGARES DONDE NOS LO ENCONTRAMOS<br />

<strong>Aliasing</strong> espacial, en gráficos:<br />

Patrones de Moire en mapas de textura<br />

y warping de imágenes<br />

Bordes dentados en el rendering<br />

<strong>Aliasing</strong> temporal en audio<br />

Cuando se remuestrea una señal a<br />

<strong>Aliasing</strong> una frecuencia notablemente menor,<br />

p. ej. el audio que tenemos en el<br />

Teoría de móvil está lejos de tener calidad CD<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

tablero de ajedrez<br />

<strong>Aliasing</strong> temporal en video y animación<br />

Efecto estroboscópico (como en la discoteca)<br />

Saltos en la animación (no hay suavidad de movimientos)<br />

El efecto de la “rueda de tren”


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿CÓMO ES EL ALIASING?<br />

ALIASING IS BAD!<br />

--- Paul S. Heckbert (ex-profesor de la Carnegie Mellon<br />

University y ahora Arquitecto gráfico en nVIDIA)<br />

Bordes dentados (jaggies), patrones de Moire, aliasing temporal y otros<br />

síntomas debidos al aliasing son artefactos no deseados:<br />

En una imagen fija, estos artefactos empobrecen la sensación visual<br />

y dan una sensación de irrealidad<br />

En audio, suelen dar una tonalidad metálica y distorsionan las voces<br />

En animaciones pueden desviar la atención del usuario, esto<br />

se nota especialmente en los antiguos simuladores (de vuelo)<br />

Por ello, uno de nuestros objetivos al generar gráficos<br />

(en tiempo real o no) será eliminar o paliar en lo posible<br />

su efecto


Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

Ejemplo pixel<br />

¿QUÉ ES EL ALIASING?<br />

DEFINICIÓN FORMAL<br />

El aliasing es el efecto que causa que señales continuas distintas<br />

se tornen indistinguibles cuando se les muestrea digitalmente.<br />

Cuando esto sucede, la señal original no puede ser reconstruida de<br />

forma unívoca a partir de la señal digital.<br />

En anteriores asignaturas vimos que en el ordenador no podemos<br />

manejar directamente señales analógicas, contínuas y de precisión<br />

infinita, sino que tenemos que partir la señal en pequeños trozos<br />

(muestrear) y darle unos valores finitos (discretizar) que podamos<br />

<strong>Aliasing</strong><br />

codificar con un conjunto de bits (digitalizar).<br />

Teoría de ANALÓGICO vs DIGITAL El aliasing es causado por un muestreo incorrecto<br />

Muestreo Ambos tienen y sus ventajas e inconvenientes, pero si estamos<br />

hablando de ordenadores hemos de cruzar la frontera y<br />

movernos en el mundo digital (mucho más limitado). de la señal que se está digitalizando, de modo que<br />

Reconstrucción<br />

Señal Analógica Señal digital aparecen artefactos (imperfecciones) en la misma.<br />

Tenemos que:<br />

· Muestrear<br />

(Sólo podemos coger unos cuantos puntos)<br />

· Discretizar<br />

El ordenador tiene una precisión finita y limitada, eso<br />

conlleva un rango dinámico limitado para las señales<br />

digitales (y “agujeros” entre los números)<br />

Trabajamos con modelos, no con la realidad<br />

En el caso de PCs (y derivados como consolas),<br />

tenemos dos lugares criticos en los que hay que tener<br />

en cuenta este problema: la generación de la imagen<br />

(precisión limitada) y su representación en pantalla


<strong>Aliasing</strong><br />

Teoría de<br />

No podemos controlarlo<br />

por lo general tenemos<br />

un detalle casi infinito !!<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿QUÉ ES EL ALIASING?<br />

DEFINICIÓN FORMAL<br />

Las imágenes rasterizadas son representaciones<br />

digitales discretas de una realidad contínua<br />

(señales ópticas), incluso las ímagenes sínteticas<br />

son matemáticamente contínuas<br />

El muestreo y la reconstrucción son fundamentales<br />

en los gráficos por ordenador<br />

Normalmente tratamos con imágenes de una<br />

complejidad y detalle que superan el ancho de<br />

banda de los medios de los que disponemos<br />

para su representación, por lo que tenemos<br />

que adaptarnos a lo que tenemos (*).<br />

Aprovechamos que la<br />

percepción humana no<br />

es perfecta y podemos<br />

permitirnos un cierto<br />

error debajo del umbral<br />

Podriamos dar un cuatrimestre entero<br />

de procesado de señal y no veríamos<br />

más que una minúscula parte<br />

no podemos<br />

aumentar la<br />

frecuencia de<br />

muestreo.<br />

Es fija!<br />

alta frec.<br />

no nos caben tantos<br />

detalles en tan pocos<br />

píxeles (aparentemente)!!<br />

muy baja<br />

frecuencia<br />

En la pantalla tenemos<br />

una resolución fija, mucho<br />

menor que lo que perciben<br />

nuestros ojos, que tambien<br />

son “discretos”


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TEORIA DE<br />

MUESTREO Y<br />

RECONSTRUCCIÓN


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

TEORÍA DE MUESTREO Y FILTRADO<br />

Dom. frecuencia<br />

El proceso de rendering o representación de graficos 3D en el área de<br />

visualización (ó el framebuffer) puede verse como una tarea de muestreo<br />

Al sintetizar la imagen, muestreamos la descripción de una escena<br />

tridimensional para obtener los valores de color en cada pixel de la<br />

imagen (un array bidimensional de pixeles discretos)<br />

(Por simplicidad veremos los ejemplos en una dimensión)<br />

señal continua<br />

original<br />

Información<br />

“infinita”<br />

(aunque tiene<br />

cierto ruido)<br />

muestreo<br />

reconstrucción<br />

señal muestreada<br />

(a intervalos regulares)<br />

Reducimos la cantidad<br />

de infomación para<br />

poderlo manejar<br />

señal reconstruida<br />

Después necesitaremos<br />

reconstruir la señal<br />

(mediante filtrado)


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

TEORÍA DE MUESTREO Y FILTRADO<br />

Dom. frecuencia<br />

En nuestro caso, al trabajar con señales con componentes frecuenciales<br />

casi infinitas (ancho de banda ilimitado), el problema del aliasing vendrá<br />

derivado de muestrear (para hacer la representación en memoria y<br />

en pantalla) a una frecuencia demasiado baja<br />

La energía asociada a las componentes de alta frecuencia que<br />

no alcanzamos no desaparece, sino que se convierte en<br />

parte de la señal erróneamente reconstruida de baja<br />

frecuencia alias


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

TEORÍA DE MUESTREO Y FILTRADO<br />

Dom. frecuencia<br />

En nuestro caso, al trabajar con señales con componentes frecuenciales<br />

casi infinitas (ancho de banda ilimitado), el problema del aliasing vendrá<br />

derivado de muestrear (para hacer la representación en memoria y<br />

en pantalla) a una frecuencia demasiado baja<br />

t<br />

t<br />

rango dinámico<br />

del display<br />

rango dinámico<br />

del display<br />

señal original<br />

señal<br />

reconstruida<br />

La energía asociada a las componentes de alta frecuencia que<br />

no alcanzamos no desaparece, sino que se convierte en<br />

parte de la señal erróneamente reconstruida de baja<br />

frecuencia alias<br />

f<br />

f<br />

Parte de la energía<br />

de la señal de alta<br />

frecuencia se puede<br />

“colar” como energía<br />

de baja frecuencia.


La señal tiene<br />

que ser limitada<br />

en frecuencia<br />

<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TEOREMA DE NYQUIST<br />

La frecuencia de muestreo debe ser al menos 2 veces mayor que la<br />

máxima frecuencia de la señal que almacenamos y luego queremos<br />

reconstruir.<br />

frec = 1rpm<br />

Pero los limites de los polígonos, bordes de<br />

las sombras... son discontinuidades que<br />

introducen componentes frecuenciales infinitas!<br />

1 muestra por revolución<br />

Un poco más de una<br />

muestra por revolución<br />

2 muestras por revolución<br />

Más de dos muestras<br />

por revolución


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

RECONSTRUCCIÓN DE LA SEÑAL<br />

FILTRO “CUADRADO” Ó VECINO MÁS PRÓXIMO<br />

Para reconstruir una señal de ancho de banda limitado, que ha sido<br />

muestreada, es necesario filtrarla. Esto es, para convertirla en una señal<br />

continua “propagamos” o rellenamos con los valores que teníamos para<br />

puntos concretos (en forma de “deltas de dirac”) sobre el resto del<br />

2 3<br />

dominio R, R , R ...<br />

Lo más sencillo es dar a cada punto el valor correspondiente a la muestra<br />

más cercana en distancia, o lo que es lo mismo, tomar el valor y<br />

“expandirlo” en el trozo correspondiente a los alrededores del punto de<br />

muestreo, a eso le llamamos filtrado “por vecino más próximo”.<br />

Es muy utilizado en gráficos debido a su gran simplicidad,<br />

hace lo mínimo que se le pide a un filtro para esta labor, pero<br />

como comprobaremos más adelante, esta aproximación es muy<br />

ruda, y el filtro penaliza algunas componentes de baja frecuencia<br />

que nos pueden interesar y deja pasar altas frecuencias.<br />

introduce un cierto<br />

emborronamiento<br />

nuestros odiados<br />

bordes dentados<br />

Como dice J. Blinn, puede ser pura coincidencia que justo lo<br />

que buscamos tenga esta forma en el dominio de la frecuencia :-)


<strong>Aliasing</strong><br />

0<br />

0 1 2 3 4<br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

convolucionamos con el filtro<br />

1 Anti-aliasing<br />

HW GPUs<br />

0 Dom. -3 -2 frecuencia<br />

RECONSTRUCCIÓN DE LA SEÑAL<br />

-1 0 1 2 3<br />

FILTRO “CUADRADO” Ó VECINO MÁS PRÓXIMO<br />

5<br />

6<br />

7<br />

foto con cámara digital<br />

0<br />

0<br />

Zoom óptico x10<br />

Zoom digital x10<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7


<strong>Aliasing</strong><br />

0<br />

0 1 2<br />

Teoría de<br />

Muestreo y<br />

3 4<br />

Reconstrucción<br />

1 Anti-aliasing<br />

HW GPUs<br />

0 Dom. -3 frecuencia<br />

-2<br />

RECONSTRUCCIÓN DE LA SEÑAL<br />

5<br />

6<br />

FILTRO “TRIANGULAR” Ó LINEAL<br />

El siguiente filtro más sencillo de implementar (y barato de calcular).<br />

Interpola linealmente las (dos) muestras vecinas<br />

La señal resultante es continua<br />

Pero lo obtenido no es especialmente suave, tenemos cambios bruscos<br />

en la pendiente, justo en los puntos de muestreo.<br />

convolucionamos con el filtro<br />

-1 0 1 2 3<br />

7<br />

0<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

RECONSTRUCCIÓN DE LA SEÑAL<br />

FILTRO “TRIANGULAR” Ó LINEAL<br />

Vecino más próximo<br />

imágenes de 52x60 píxeles<br />

Lineal


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

RECONSTRUCCIÓN DE LA SEÑAL<br />

FILTRO “TRIANGULAR” Ó LINEAL<br />

Borde ideal<br />

en una malla de<br />

baja resolución<br />

Vecino más próximo<br />

Lineal


introduce<br />

variaciones<br />

muy bruscas<br />

de la señal<br />

debido a los<br />

“impulsos”<br />

<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

RECONSTRUCCIÓN DE LA SEÑAL<br />

FILTRO PASO BAJO Ó SINC<br />

Puesto que al muestrear la señal inicial, aunque fuera acotada en frecuencia,<br />

se convierte en una señal de banda ilimitada (como veremos más adelante),<br />

el filtro que debemos utilizar para su reconstrucción ha de eliminar las altas<br />

frecuencias necesitamos un filtro paso bajo<br />

hacia el<br />

menos infinito<br />

-4<br />

-3 2<br />

-2 - 0<br />

1<br />

sinc(x)=<br />

3<br />

4<br />

sin( x)<br />

x<br />

hacia el infinito<br />

Teóricamente es perfecta, pero presenta problemas prácticos:<br />

Es una señal ilimitada en el espacio<br />

Es una señal perfectamente continua<br />

Tiene partes positivas y negativas...


0<br />

0 1 2 <strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

1<br />

Anti-aliasing<br />

HW 0 GPUs<br />

Dom. frecuencia<br />

3<br />

convolucionamos con el filtro<br />

-3<br />

4<br />

-2 -1 0 1 2 3<br />

RECONSTRUCCIÓN DE LA SEÑAL<br />

FILTRO PASO BAJO Ó SINC<br />

5<br />

Recontruye la señal perfectamente siempre que esta originalmente<br />

fuera una señal sólo con componentes de baja frecuencia que no<br />

haya dado lugar a fenómenos de aliasing en el muestreo.<br />

6<br />

7<br />

0<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7


0<br />

0 1 2 <strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

1<br />

Anti-aliasing<br />

HW 0 GPUs<br />

Dom. frecuencia<br />

3<br />

convolucionamos con el filtro<br />

-3<br />

4<br />

RECONSTRUCCIÓN DE LA SEÑAL<br />

FILTRO GAUSIANO<br />

Puesto que no es posible utilizar sincs en la práctica, se suele considerar<br />

un excelente filtrado cuando lo aproximamos con una funcion con forma<br />

de campana de Gauss<br />

-2 -1 0 1 2 3<br />

5<br />

6<br />

7<br />

0<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7


RECONSTRUCCIÓN DE LA SEÑAL<br />

FILTRO GAUSIANO<br />

filtro rectangular<br />

filtro gaussiano


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

REMUESTREO<br />

Lo vamos a utilizar para ampliar o “comprimir” en la dimensión<br />

en la que hemos tomado las muestras (espacio o tiempo), u de esta<br />

forma resaltar el problema del aliasing en gráficos.<br />

Supondremos que las muestras se han tomado uniformemente<br />

a intervalos unidad, por ejemplo 1, 2, 3, 4...<br />

Las nuevas muestras (que también vamos a suponer con un intervalo<br />

constante) se encontrarán a una distancia proporcional de las anteriores,<br />

esto lo vamos a cuantificar en este ejemplo con el parámetro a que<br />

multiplicará el intervalo<br />

a < 1 el intervalo resultante será más pequeño, por tanto<br />

aumentamos la frecuencia y el número de muestras<br />

para cubrir el mismo espacio interpolación<br />

a > 1 el intervalo será mayor, disminuimos la frecuencia<br />

en el nuevo muestreo y el numero de muestras para<br />

representar la misma información hay que eliminar<br />

y nos podemos “cargar” cosas interesantes si no se<br />

hace con cuidado diezmado (aliasing)


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

REMUESTREO<br />

REMUESTEO: INTERPOLACIÓN<br />

Parece más simple, podemos reconstruir la señal con un filtro (sinc)<br />

y luego volver a tomar los valores en los intervalos deseados<br />

a = 1<br />

nuevas muestras<br />

a = 0’5<br />

dibujo de Tomas Akenine


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

REMUESTREO<br />

SUBMUESTREO: DIEZMADO<br />

Estamos reduciendo el número de muestras, por lo que las variaciones<br />

producidas por las componentes de frecuencia de la señal original puede<br />

ser demasiado “rápidas” para ser “capturadas” con las pocas muestras<br />

de las que vamos a disponer aliasing<br />

a = 1<br />

quitamos<br />

demasiados<br />

“pilares”,<br />

la señal se<br />

“derrumba”<br />

muestras eliminadas<br />

a = 2<br />

No se parece a la<br />

señal original !!!<br />

dibujo de Tomas Akenine


¿Qué podemos hacer?<br />

Típicamente, tendriamos<br />

que filtrar previamente<br />

la señal para eliminar<br />

<strong>Aliasing</strong> esas componentes de<br />

alta frecuencia y luego<br />

Teoría de<br />

realizar el muestreo.<br />

Muestreo y<br />

Eso nos va a hacer perder<br />

Reconstrucción<br />

detalles, pero no hacer<br />

Anti-aliasingnada<br />

es mucho peor.<br />

HW GPUs<br />

¿Y si la señal ya nos la dan muestreada?<br />

Dom. Técnicas frecuencia de anti-aliasing a pantalla completa<br />

REMUESTREO<br />

SUBMUESTREO: DIEZMADO<br />

Estamos reduciendo el número de muestras, por lo que las varaiaciones<br />

producidas por las componentes de frecuencia de la señal original puede<br />

ser demasiado “rápidas” para ser “capturadas” con las pocas muestras<br />

de las que vamos a disponer aliasing o solapamiento de la señal<br />

quitamos<br />

demasiados<br />

“pilares”,<br />

la señal se<br />

“derrumba”<br />

muestras eliminadas<br />

No se parece a la<br />

señal original !!!


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

ANTIALIASING<br />

A PANTALLA<br />

COMPLETA


Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TÉCNICAS DE ANTI-ALIASING<br />

Podemos distinguir tres familias de técnicas de anti-aliasing<br />

en síntesis de gráficos:<br />

Anti-aliasing de líneas<br />

Geometría original Bordes prefiltrados<br />

<strong>Aliasing</strong><br />

Filtro vecino más próximo Filtro gausiano<br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing de texturas<br />

Anti-aliasing a pantalla completa<br />

la línea se puede “simular”<br />

como un rectángulo muy fino<br />

y aplicar las terceras técnicas<br />

Cuidado, el remuestreo del<br />

rendering de Acrobat Reader<br />

puede introducir artefactos<br />

en las imágenes, haced zoom<br />

para verlo adecuadamente


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TÉCNICAS DE ANTI-ALIASING<br />

Original (aliasing)<br />

ATI Radeon 9800 Pro, 6x (regilla rotada e intercalada)<br />

NVIDIA Quadro FX 2000, 16x AA (4x4 regilla ordenada)<br />

Sander et al. [2001] (hardware line antialiasing)<br />

Filtro triangular Filtro gausiano<br />

Cuidado, el remuestreo del<br />

rendering de Acrobat Reader<br />

puede introducir artefactos<br />

en las imágenes, haced zoom<br />

para verlo adecuadamente


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TÉCNICAS DE ANTI-ALIASING<br />

Original (aliasing) NVIDIA Quadro FX 2000,<br />

16x AA (4x4 regilla ordenada)<br />

ATI Radeon 9800 Pro, 6x<br />

(regilla rotada e intercalada)<br />

Cuidado, el remuestreo del<br />

rendering de Acrobat Reader<br />

puede introducir artefactos<br />

en las imágenes, haced zoom<br />

para verlo adecuadamente


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TÉCNICAS DE ANTI-ALIASING<br />

Sander et al. [2001]<br />

(hardware line antialiasing) Filtro triangular Filtro gausiano<br />

Cuidado, el remuestreo del<br />

rendering de Acrobat Reader<br />

puede introducir artefactos<br />

en las imágenes, haced zoom<br />

para verlo adecuadamente


Tenemos control<br />

sobre el primero<br />

de los muestreos<br />

pero se aplica<br />

polígono a polígono<br />

los bordes y el<br />

conjunto pueden<br />

no tener calidad<br />

suficiente<br />

<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TÉCNICAS DE ANTI-ALIASING<br />

Podemos distinguir tres familias de técnicas de anti-aliasing<br />

en síntesis de gráficos:<br />

Anti-aliasing de líneas<br />

Anti-aliasing de texturas<br />

vecino más<br />

próximo<br />

filtro bilineal<br />

Cuidado, el remuestreo del<br />

rendering de Acrobat Reader<br />

puede introducir artefactos<br />

en las imágenes, haced zoom<br />

para verlo adecuadamente<br />

Anti-aliasing a pantalla completa<br />

filtro<br />

trilineal<br />

filtro<br />

anisotropico<br />

4x<br />

filtro<br />

anisotrópico<br />

16x


<strong>Aliasing</strong><br />

Se le llama<br />

supermuestreo<br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TÉCNICAS DE ANTI-ALIASING<br />

Podemos distinguir tres familias de técnicas de anti-aliasing<br />

en síntesis de gráficos:<br />

Anti-aliasing de líneas<br />

Anti-aliasing de texturas<br />

Anti-aliasing a pantalla completa<br />

Operamos sobre los fragmentos al final del pipeline gráfico<br />

sin necesidad de conocer los objetos que componen la imagen.<br />

El secreto está en utilizar más muestras (fragmentos) por<br />

celda de la malla (píxel) de representación y luego “fusionarlos”:<br />

n<br />

p(x,y)= i=1<br />

w c(i,x,y)<br />

i<br />

peso<br />

n<br />

i=1<br />

w = 1<br />

i<br />

valor de color de la muestra que<br />

contribuye a la celda (píxel)<br />

La posición relativa de las muestras puede variar para cada<br />

píxel, así la función c(i,x,y) se descompone en una función<br />

f(i,n) que nos devuelve la posición (x,y) de la muestra.<br />

El caso por defecto en HW gráfico es n=1 y las<br />

muestras centradas en el pixel.


Ejemplo:<br />

Tenemos la<br />

mala suerte<br />

de muestrear<br />

en un punto<br />

de variación<br />

rápida y<br />

afecta a<br />

varios pixeles<br />

<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

¿POR QUÉ LOS MÉTODOS<br />

DE SUPERMUESTREO?<br />

Realidad contínua (matemática o no)<br />

a representar. Tres dimensiones<br />

En la pizarra<br />

Valor muestreado Dimension nula<br />

Espacio de memoria en que se almacena<br />

la muestra/fragmento (framebuffer + Z)<br />

En función de la resolución de la pantalla<br />

abarcará varios elementos/“pixeles” del<br />

monitor. Dos dimensiones<br />

Hay que rellenar un área con un único valor<br />

Si escogemos un único valor muestreado sin tener en cuenta<br />

lo que hay alrededor en el área que va a mostrar en pantalla,<br />

probablemente cometeremos un error ya que su color no<br />

será representativo del área que “ocupa” en píxeles


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

FULL SCENE ANTIALIASING (FSAA)<br />

Este método (FSAA) renderiza la escena a una resolución mayor y luego<br />

hace una media ponderada de los valores de color para crear la imagen.<br />

En la pizarra<br />

Por ejemplo, si queremos una imagen de 1024 x 768 con cuatro muestras<br />

(2x2) por pixel necesitaremos más de 3 millones de fragmentos supervivientes<br />

al final del pipeline.<br />

Puesto que representan una pequeña cantidad de lo que se ha generado<br />

en el pipeline nos da una idea de la carga extra que han de han de<br />

soportar las etapas que siguen al rasterizado.<br />

Es muy simple y fácil de implementar en la arquitectura gráfica,<br />

pero implica un gran consumo de recursos en la GPU


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

ACUMULATION BUFFER (PURO)<br />

En la pizarra<br />

Frame n - imagen 1<br />

Tenemos un buffer de la misma<br />

resolución y más bits para color<br />

(xn) que la imagen deseada<br />

Detalle<br />

El primer cálculo es igual que en el render normal


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

ACUMULATION BUFFER (PURO)<br />

Frame n -<br />

imagen 1<br />

En la pizarra<br />

Frame n - imagen 2<br />

Tenemos un buffer de la misma<br />

resolución y más bits para color<br />

(xn) que la imagen deseada<br />

Detalle<br />

El cálculo se repite las veces que se desee, desplazando<br />

ligeramente la posisión de las muestras que se toman,<br />

y el resultado se va sumando al buffer de acumulación.


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

ACUMULATION BUFFER (PURO)<br />

Frame n -<br />

imagen 1<br />

Frame n -<br />

imagen 2<br />

En la pizarra<br />

Frame n - imagen 3<br />

Tenemos un buffer de la misma<br />

resolución y más bits para color<br />

(xn) que la imagen deseada<br />

Detalle<br />

Ha de tener bastante precisión,<br />

para que no se pierdan los<br />

bits menos significativos y se<br />

produzca un efecto de bandas<br />

Cuando ya se tienen todas las muestras sumadas se divide<br />

entre el numero de las mismas en cada futuro pixel.<br />

Los bufferes de acumulación son parte de OpenGL y pueden utilizarse<br />

para otros efectos como motion blur y profundidad de campo.<br />

Re-renderizar la escena varias veces por frame lo hace muy<br />

costoso en escenas complejas en tiempo real.


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

EL BUFFER T<br />

En lugar de utilizar disparidad puramente espacial podemos aprovechar<br />

también la temporal para reducir la exigencia gráfica.<br />

Consiste en un conjunto de 2, 4, o más imágenes y Z buffers con máscaras<br />

que determinan donde las primitivas (triángulos) están localizados. La<br />

circuitería de composición se encarga de combinar los buffers como una<br />

única imagen poderada.<br />

En lugar de hacer multiples pasadas, un triángulo puede ser enviado y<br />

procesarlo en paralelo en todos los buffers simultáneamente, con un<br />

ligero cambio en el punto de vista para cada uno, con lo que los<br />

desplazamientos x e y se determinan por separado.<br />

La ventaja es que se puede aplicar sin tener que hacer cambios en<br />

los programas, con una sola pasada. Basta con indicarselo al driver<br />

de la tarjeta gráfica en el modo de antialiasing.<br />

Sacrificamos memoria para obtener velocidad


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

EL BUFFER T<br />

Esta tecnología fue por primera vez implementada en hardware de<br />

consumo por 3DFX, quien la popularizó, y desde entonces las técnicas<br />

antialiasing a pantalla completa han sido un factor determinante en la<br />

calidad de las imágenes de las tarjetas gráficas.<br />

Voodoo3<br />

Cuidado, el remuestreo del<br />

rendering de Acrobat Reader<br />

puede introducir artefactos<br />

en las imágenes, haced<br />

zoom para verlo<br />

adecuadamente


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

PATRONES DE MUESTREO:<br />

Una ventaja del Buffer-T sobre el FSAA (y el Buffer A) es que el el<br />

muestreo no tiene porqué ser ortogonal dentro de la rejilla de celdas<br />

(píxeles), y cada paso es independiente de los anteriores.<br />

Uno de los patrones más populares por sus buenas caracteristicas de<br />

antialiasing es el Rotated Grid Super Sampling.


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

PATRONES DE MUESTREO:


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MUESTREO ESTOCÁSTICO:<br />

El muestreo regular no puede eliminar el aliasing, sólo reducirlo.<br />

¿Por qué?<br />

Siempre vamos a tener elementos arbitrariamente pequeños en<br />

pantalla que ningún periodo por pequeño que sea va a poder capturar<br />

Los bordes provocan componentes frecuenciales “infinitas”<br />

Si distribuimos las muestras aleatoriamente podemos reemplazar los<br />

efectos repetitivos del aliasing por ruido<br />

El ojo humano es mucho más tolerante al ruido que a los artefactos<br />

del aliasing mejor calidad percibida<br />

El mas común es el jittering,<br />

un tipo de muestreo estratificado<br />

que divide el área en subpixeles<br />

en los que se aplica esta idea.<br />

De esta forma, las muestras<br />

siempre cubren todo el área<br />

Ejemplos de arquitecturas que utilizan este método:<br />

Infinite Reality (Stanford) y SuperScene (3DLabs)


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

EL BUFFER A<br />

Bastante utilizado en software para rendering a velocidades no interactivas<br />

y debido a sus cualidades ya tenemos implementaciones HW en GPUs<br />

Calcula la cobertura aproximada de cada polígono sobre la celda de la<br />

malla (pixel) y, a diferencia de los anteriores, comparte esa información<br />

con las muestras cercanas de la celda.<br />

0 0 0 0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

máscara de<br />

cobertura<br />

Hasta ahora hemos visto como una<br />

desventaja el que los bordes de los<br />

polígonos (primitivas) tengan una<br />

precisión “infinita” matemáticamente<br />

(introducen componentes de alta frec.)<br />

En este caso lo vamos a aprovechar<br />

para saber cuánto y cómo cubren cada<br />

una de las celdas de la malla.


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

EL BUFFER A<br />

Con cada polígono generamos una máscara de cobertura para cada celda,<br />

que nos va a ayudar a determinar la contribución del mismo a su color.<br />

Sólo se hace un cálculo de iluminación y profundidad por polígono y celda,<br />

que suponemos centrado en el píxel para ambos, y se comparte la información<br />

para todas las muestras. Esto conlleva que:<br />

Tenemos menos coste computacional<br />

No podemos hacer antialiasing de texturas y sombras<br />

Está especializado en antialiasing de bordes y transparencias<br />

(color + atributos)<br />

Fragmento = mascara del polígono + shade + profundidad<br />

Una celda tendrá tantos fragmentos como polígonos<br />

contribuyan en ella (independientemente de las<br />

muestras que dependen de la precisión con la<br />

que se define la máscara en cada una de las<br />

celdas)<br />

0 0 0 0<br />

0<br />

1<br />

0<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

EL BUFFER A<br />

Los fragmentos se descartan en el caso de que el área de cobertura sobre<br />

la celda sea “tapada” por un fragmento de otro polígono opaco que tenga<br />

una distancia menor de profundidad.<br />

Con los fragmentos “supervivientes” (transparentes y que no hayan sido<br />

tapados) se determina el color final en función de las áreas que ocupa<br />

cada uno y su visibilidad.<br />

A (adelante) B (en el medio) C(atrás)<br />

1 1 1 1 1 1 1 1<br />

0 0 0 1 1 1 1 1<br />

0 0 0 0 0 0 1 1<br />

0 0 0 0 0 0 0 0<br />

¬ A∧<br />

¬ A∧ ¬ B∧<br />

0 0 0 0 0 0 1 1<br />

0 0 0 0 0 1 1 1<br />

0 0 0 0 1 1 1 1<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

1 1 1 1 1 1 1 1<br />

0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1<br />

colores de los<br />

subpixeles<br />

color final<br />

del pixel<br />

A cubre 15/32 del pixel<br />

¬ A ∧ B cubre 7/32 del pixel<br />

¬ ∧ ¬ ∧<br />

A B C cubre 7/32 del pixel


<strong>Aliasing</strong><br />

Anti-aliasing<br />

HW GPUs<br />

0 0 0 0 0 0 0 0<br />

0 0 1 1 1 1 1 1<br />

0 0 1 1 1 1 1 1<br />

0 1 1 1 1 1 1 1<br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Dom. frecuencia<br />

MÉTODOS SUPERMUESTREO:<br />

0 0 0 0 0 0 0 0<br />

0 0 0 1 1 1 1 1<br />

0 0 0 0 0 0 1 1<br />

0 0 0 0 0 0 0 0<br />

EL BUFFER A<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

La arquitectura hardware de este tipo de aliasing es algo distinta a la<br />

que hemos estudiado hasta ahora, pues los límites de la etapa de<br />

geometría y rasterizado se desdibujan, o bien da lugar a una nueva<br />

etapa presente en las tarjetas de nueva generación: etapa de primitivas<br />

y una fuerte modificación del buffer Z.<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

0 0 1 0 0 0 0 0<br />

0 0 1 1 1 1 0 0<br />

0 1 1 1 1 1 1 1<br />

Formación de la máscara<br />

Ventajas del Buffer-A respecto a los anteriores métodos:<br />

Menos espacio de almacenamiento<br />

Menos pasadas de renderizado<br />

Menos cálculos: sombreado y profundidad sólo<br />

una vez por fragmento (pixel/poligono)<br />

Matrox tiene<br />

implementado<br />

y optimizado<br />

este método<br />

en hardware


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

IMPLEMENTACION<br />

HARDWARE DEL<br />

ANTIALIASING<br />

A PANTALLA<br />

COMPLETA<br />

GeForce4


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODO QUINCUNX de nVIDIA<br />

También llamado High Resolution Antialiasing (HRAA)<br />

El nombre viene por la disposición de las muestras,<br />

y su relación con el nombre en latín que recibe.<br />

Es un término muy antiguo, que se corresponde con la<br />

formación táctica más común en el ejercito romano<br />

El principal problema de los métodos de supermuestreo<br />

es el coste del cálculo del muestreo de varios puntos<br />

por “celda” (o pixel)<br />

nVIDIA busca maximizar la mejora de calidad/coste<br />

tomando las muestras en el borde de la celda para poder<br />

compartir su valor entre varias.<br />

De esta forma sólo necesitamos dos muestras<br />

por pixel y se obtiene mejor calidad que en<br />

los FSAA tradicionales del mismo número<br />

de muestras.<br />

Quincunx<br />

o tablero<br />

de Galton


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODO QUINCUNX de nVIDIA


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

MÉTODO QUINCUNX de nVIDIA<br />

No todas las muestras contribuyen con el mismo<br />

peso al color final de la celda. La muestra central<br />

tiene un peso de ½ y las de las esquinas sólo 1/8<br />

Con ello se obtiene un aliasing de mucha mejor<br />

calidad que con el típico filtro cuadrado y algo<br />

mejor que un bilineal supermuestreado.<br />

En la implementación hardware se han cuidado especialmente aspectos<br />

de ahorro en ancho de banda y potencia de cálculo.<br />

Sin embargo, esta técnica introduce<br />

un ligero error en la forma en la que<br />

se toman las muestras.<br />

Esto ha sido solucionado en la<br />

siguiente generación de técnicas<br />

de antialiasing de nVIDIA:<br />

Accuview (GeForce4)<br />

Que desplaza el patrón de<br />

muestreo y la malla de celdas<br />

GeForce Mx4000<br />

Accuview Antialiasing<br />

(2xFSAA, 4xFSAA,<br />

Quincunx a 4XS)


Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

INTERLEAVED SAMPLING<br />

Esta técnica fue inicialmente utilizada en Pixel Machine (de AT&T),<br />

VGX (de Silicon Graphics) y la tecnología SMOOTHVISION de ATI<br />

Toma algunas ideas del buffer de acumulación, pero en lugar de tomar<br />

varias muestras (hasta 16 por celda) con un patrón puramente repetitivo,<br />

tiene un conjunto de posibles patrones (tb. hasta 16) que puede ir<br />

mezclando e intercambiando (pseudo-aleatorio).<br />

<strong>Aliasing</strong> No llega a convertir los artefactos en “ruido” como hacía el muestreo<br />

estocástico, pero los artículos de Molnar, Keller y Heidrich demuestran<br />

Teoría de que esta forma “discreta” de simularlo reduce significativamente los<br />

Muestreo y artefactos producidos por el efecto de aliasing.<br />

Reconstrucción<br />

Más nítido, pero<br />

requiere mucho<br />

más tiempo de<br />

cálculo<br />

ATI Radeon 8500 ATI Radeon 8500<br />

2X Performace AA<br />

nVIDIA GeForce3<br />

Ti 500 Quincunx AA


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

FILTRO MORFOLÓGICO<br />

El filtro que se utiliza ahora es dependiente de los píxeles sobre los que<br />

se aplica. Esta es una idea que se lleva aplicando mucho tiempo en<br />

el contexto de procesado de señal, pero su complejidad (equivalente a<br />

una convolución espacialmente variante) lo ha dejado fuera del ámbito<br />

del tiempo real durante mucho tiempo.<br />

Se propuso inicialmente en el HPG»09 y en pocos meses ya<br />

se incorporó en el God of War III. Ya se implementa en los<br />

drivers de ATI (a partir de la Radeon HD 6870)


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

FILTRO MORFOLÓGICO<br />

FINAL FANTASY XIV


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

TENDENCIAS FUTURAS<br />

Para comprender las técnicas actuales de antialiasing a pantalla completa<br />

tenemos que introducir más conceptos relacionados con los avances en<br />

las últimas etapas (no programables del pipeline): Test de transparencia,<br />

composición, blending, niebla... Si nos da tiempo lo contaremos al final<br />

de la clase<br />

POISSON DISK SAMPLING<br />

Puntos no uniformemente distribuidos separados por una distancia<br />

mínima que después se reconstruye con un filtro gaussiano.<br />

Esta íntimamente relacionado con el point based rendering.<br />

MUESTREO CON REFINAMIENTO ADAPTATIVO<br />

La imagen mejora con el tiempo, a medida que se van tomando<br />

más muestras de esa zona. Es útil en aplciaciones interactivas:<br />

- No tendremos gran detalle si la escena o el punto de vista<br />

cambia rápidamente (pero el ojo en ese caso tampoco lo<br />

captaría a esa velocidad)<br />

- Mejora poco a poco en escenas estáticas<br />

Evolución del buffer de acumulación<br />

Ambos implican cambios en la concepción del pipeline<br />

gráfico actual, pero se pueden simular en software<br />

En juegos no hay<br />

grandes cambios de<br />

un frame al siguiente


<strong>Aliasing</strong><br />

Teoría de<br />

Muestreo y<br />

Reconstrucción<br />

Anti-aliasing<br />

HW GPUs<br />

Dom. frecuencia<br />

DETRÁS DEL TELÓN:<br />

EL DOMINIO DE LA FRECUENCIA<br />

Sólo para aquellos<br />

que elijáis como<br />

asignatura completa<br />

Rendering Avanzado


LECTURA RECOMENDADA


Cap.4<br />

BIBLIOGRAFÍA

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!