03aRA12 Aliasing - DAC
03aRA12 Aliasing - DAC
03aRA12 Aliasing - DAC
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