Apuntes
Rendering, Rasterización
Contenido del apunte (1)
Página 1
Unidad de procesamiento gráfico o GPU
La GPU es una
parte esencial del hardware de visualizacion en modo inmediato, pero la
separamos del monitor y dejamos para lo ultimo por su importancia capital en la
CG. Antiguamente se conocian como placas graficas o placas aceleradoras de
video, pero desde el ano 2000 aproximadamente se utiliza el termino GPU para
resaltar su programabilidad. Hoy hasta los telefonos celulares contienen una
GPU.
La GPU es
basicamente una computadora especializada que procesa geometria (triangulos) y
genera pixeles.
Las variables de
estado son las condiciones de iluminacion, el punto de vista, el material y
otros datos “actuales” que se modifican o no, pero entre un triangulo y otro;
normalmente el estado tiene “larga” duracion (un objeto = muchos triangulos).
El tiempo de vida de esas variables hace sustentable procesar muchisimos
vertices, triangulos y sus fragmentos en paralelo. Actualmente se les estan
incorporando bloques de procesamiento especializados en la compresion y
descompresion de imagenes y video (codecs).
Como procesador
es una calculadora de matrices y vectores cuatridimensionales y ademas esta
especializada para manejar imagenes y pedazos (bloques rectangulares de una
memoria lineal) en forma muy eficiente.
La principal
ventaja estriba en que no se requiere mucha compatibilidad hacia atras (backwards compatibility) es decir que la
arquitectura del hardware es bastante mas libre que para una CPU y por lo tanto
ha evolucionado en forma asombrosa, tanto que hay procesadores en paralelo
basados en GPU que no se usan para imagenes sino para calculo de proposito
general (GPGPU) y un par de lenguajes (CUDA de Nvidia y OpenCL en general) para
realizarlo y ya algunas de las mas potentes supercomputadoras utilizan GPGPU
para el procesamiento.
Rendering
Se denomina rendering, y suele
castellanizarse como renderizado, al conjunto de computos que permiten
transformar una escena (normalmente tridimensional) en una imagen o una
pelicula. La escena es basicamente el conjunto de objetos, e incluye
posiblemente alguna forma de ambiente (cielo, imagen de fondo, etc.), pero tambien
incluye elementos como las luces, la camara y, para las peliculas, una
definicion de los movimientos de los objetos, las luces y la camara.
Mas alla de los
procedimientos individuales, el resultado se suele clasificar como fotorealista
o no-fotorealista (non photorealistic rendering o NPR). El
primero trata de simular un modelo fisico de la iluminacion real de objetos y
caracteres virtuales, el segundo (NPR) trata de simular el producto de la mano
artistica o puede utilizarse para representaciones visuales abstractas, como en
la visualizacion cientifica o matematica.
Casi todas las
imagenes que se generan mediante la Computacion Grafica son de tipo raster; es decir que
contienen informacion en los pixeles, que son puntos discretos con color. Pero
existe tambien el renderizado vectorial, que produce un trazado analitico de
los contornos y rellena cada interior con un color.
El trazado
vectorial clasico es el de los plotters, pero ahora tambien se utiliza para
almacenar imágenes rellenas, por ejemplo las definiciones de CorelDRAW o
Inkscape de logotipos y otros dibujos sencillos.
Una imagen raster consta de
informacion discreta; al ampliarla se ve “pixelada” (los pixeles pasan a ser
cuadrados visibles) a menos que se apliquen tecnicas de interpolacion o suavizado
que ayuden a mejorar un poco el resultado. La imagen vectorial, en cambio,
puede ampliarse sin perder definicion pues la ampliación solo varia el tamano
del dominio del calculo y se cuenta con las ecuaciones que reproducen cualquier
porción de la imagen.
El renderizado es
una secuencia de procedimientos de calculo que requieren software y hardware
especial para adecuarse a las exigencias modernas, tanto es asi que en este
momento se estan desarrollando ambos tipos de herramientas y cualquier aseveracion
que hagamos quedara obsoleta en un par de anos mas. Las placas graficas
permiten optimizar y paralelizar gran parte del computo, pero aun asi hay
algoritmos especiales que se incluyen en una amplia variedad de programas,
tanto libres como comerciales, para obtener distintos tipos de
resultados.
Otra
clasificacion del procedimiento se basa en la intencion de uso final, pero se
refiere mas bien a los cambios que sufre el modelo y la escena; pueden ser una
secuencia de procedimientos pre-programados que se renderizan en modo batch (esto es como
poner los ingredientes y enviar todo a cocinar al horno) o bien interactivo,
donde el usuario debe estar constantemente revisando y actualizando las
variables.
Los ejemplos
tipicos del renderizado en batch son las peliculas y las complejas imágenes
fotorealistas, para el interactivo son los videojuegos, el diseno (CAD) y la
exploracion de imagenes medicas o datos tecnicos.
Los pasos basicos
del renderizado definen el asi llamado pipeline gráfico, que incluye algunos procesos
especificos que iremos viendo a lo largo del curso, pero cuyo significado
podemos adelantar. Antes debemos describir como se crean las escenas y algunas
técnicas utilizadas.
Rasterización:
Que es, para que sirve, como se hace?
La idea es
representar un objeto mediante un conjunto discreto de puntos. Los objetos
continuos del modelo(curvas y superficies) se representan en un monitor u otro
dispositivo raster mediante un conjunto discreto de píxeles.
Las curvas raster
son una sucesión finita de puntos contiguos de coordenadas enteras y de modo
que no haya espacio entre dos puntos sucesivos de la línea: max (|Ax|,|Ay|)=1.
Una sucesión de puntos continuos suele denominarse “wáter tight”, a prueba de
agua o impermeable.
DDA:
El algoritmo calcula las derivadas en
t0 y pinta o marca el primer pto redondeando x0=int(x(t0)+0.5)
y0=int(y(t0)+0.5)
Luego con la variable de mayor derivada
con respecto a t,digamos x por ejemplo, calcula si debe avanzar o retroceder una
unidad, eso lo dictamina el signo de dx
, dando dx=+o-1. Con dt=1/|dx| calcula todo de nuevo en t+dt hasta llegar a t1
Es importante que sea una derivada
fácil de obtener sino se complica.por lo gral se utiliza en la mayoría de los polinomios.
Bresenham o pto medio:
El algoritmo de
Bresenham es un algoritmo creado para
dibujar rectas en los dispositivos de gráficos rasterizados, como por ejemplo un monitor de ordenador, que determina qué pixeles se rellenarán, en función de la
inclinación del ángulo de la recta a dibujar.
Es un algoritmo
preciso para la generación de líneas de rastreo que convierte mediante rastreo
las líneas al utilizar solo cálculos incrementales con enteros que se pueden
adaptar para desplegar circunferencias y curvas. Los ejes verticales muestran
las posiciones de rastreo y los ejes horizontales identifican columnas de pixel.
Es el algoritmo DDA, pero con una
mejora que consiste en utilizar solo aritmética de enteros. Para deshacernos de
las divisiones hay que multiplicar todo
por 2(para el redondeo) y por el denominador de la pendiente(dx o dy). Luego
hay que procurar que todos los valores sean enteros.
Algoritmo para rasterizar circunferencias:
Utilizamos un octavo del círculo, porque
tiene simetría central.
En este caso se calcula el tramo que va
de 90grados a 45, la curva es de tendencia horizontal, con x creciente e y decreciente; x aumenta de a una unidad.
Ahora lo que hay que saber es si el próximo punto está dentro o afuera de la
circunfencia. Si el punto medio está dentro pintamos el pixel E y si está
afuera el SE.
Un punto cualquiera está fuera del
círculo si x^2+ y^2>r^2.Luego habrá
que analizar si el próximo pto medio en (xi+1 e yi-0.5) ya que x crece e y
decrece, está o no dentro de la circunferencia (xi+1)^2+(yi-0.5)^2-r^2>0 si
se cumple se pinta SE sino E.
Subdivisiones binarias para elipse:
Se pinta el primer y último punto de la
elipse, si el intervalo en x o y es mayor que la unidad, entonces se pinta el
punto de parámetro intermedio.
Uso ¼ de la elipse con t variando de 0
a pi/2 calculo x-xc=(rh)*cos(t), y-yc=(ry)*sin(t)
Nueva Página
Información
- Descripción
- Computación Gráfica Introducción, Rendering, Rasterización
- Creado por
- mariangelesp14 · ago 2014
- Actualizado
- 26 oct 2016
- Visitas
- 39
- Valoración