Académique Documents
Professionnel Documents
Culture Documents
Se basa en que todas las imgenes tienen semejanza o correlacin entre los
pixeles. Existen dos componentes fundamentales para la compresin:
reduccin de redundancia y reduccin de irrelevancia.
Tcnicas de compresin:
Run Lenght Encoding (RLE): Los pixeles consecutivos se codifican como nico
valor y su cantidad. Ejemplos: [8] 0 seria 00000000. As se logran ahorrar
varios bytes.
Codificacin Lempel-Ziv: Utiliza un diccionario con las secuencias de valores de
los pixeles ya encontrados. Los datos comprimidos contienen los cdigos de las
entradas del diccionario.
Codificacin Huffman: En lugar de utilizar nmero fijo de bits utiliza cdigos
variables, los valores ms frecuentes utilizan cdigos ms cortos.
Transformada del coseno discreta (DCT): Los bloques de pixeles son
representados usando funciones de coseno de distintas frecuencias, las
frecuencias altas, que contienen menos informacin, son descartadas. Esta
tcnica es muy utilizada en formatos JPG y MPEG.
Sin prdida: RLE, Lempel-Zip y Huffman. Con prdida: DCT
Lnea: Est formada por todos los pixeles que se encuentran en la lnea que
conecta dos puntos. Sus atributos pueden ser: grosor, color, trama, etc.
Transformaciones en 2D: las ms comunes son traslacin, escalado y rotacin.
(Matrices de trasformacin en la hoja de frmulas).
Se dice que el escalado es uniforme si el valor Sx = Sy de la matriz de
escalado, si son diferentes se denomina escalado diferencial.
Composicin de Transformaciones
Con las coordenadas homogneas llegamos a un modelo uniforme de
multiplicacin de matrices para cada transformacin. Si queremos escalar,
rotar y luego trasladar una imagen podemos concatenar las matrices as:
T(R(SV)) o bien: (TRS)V . Esto significa que podemos agrupar las 3
trasformaciones en una nica matriz M = TRS. Esto es muy til en trminos de
eficiencia ya que solo calculamos una vez la matriz y se la aplicamos a todos
los vectores (miles) que necesitemos, en vez de tener que estar haciendo 3
multiplicaciones de matrices por cada vector. En esta notacin las
multiplicaciones se realizan de derecha a izquierda, Escalado, Rotacin,
Traslacin (TRS) en nuestro ejemplo. No es lo mismo invertir el orden.
En el caso particular de los Bitmaps no resulta eficiente aplicar estas
transformaciones a cada pixel de forma convencional, por ello el GPU posee
rutinas optimizadas para ello. Estas rutinas entran en la categora de
RasterOps. Una de las ms utilizadas es la de BitBlit o Blit (Bit Block Transfer),
que realiza copia de bloques de pixeles de un lugar a otro. Esta operacin
representa la traslacin. Otras opciones que permite esta rutina de RasterOps
es la de realizar operaciones como el AND, OR, XOR, etc. Otra opcin muy
utilizada es la Clipping (recorte). Tambin existen RasterOps para escalar y
1 textura
N tringulos
o 1 normal (face-normal)
o 3 vrtices
3 valores de posicin (por vrtice, X,Y,Z)
2 coordenadas de textura (por vrtice, u,v)
3 valores de vector normal (por vrtice, Nx,Ny,Nz)
4 valores de color (por vrtice, RGBA)
Color: Cada vrtice puede especificar un color RGB o RGBA. Este color se
utilizara para calcular la iluminacin del tringulo, es independiente de la
textura. Los adaptadores de video toman los colores de los vrtices y generan
colores interpolados para los pixeles de pantalla que se encuentren en el medio
de los vrtices que especifican un color.
Rendering
Una vez definido nuestro universo 3D especificando las primitivas grficas que
definen cada malla necesitamos poder visualizar el resultado. Para ello
debemos pasar de nuestro modelo lgico en 3D a un modelo fsico en 2D (ya
que los dispositivos trabajan en dos dimensiones). Para lograrlo el modelo
lgico deber ser proyectado a un modelo de dos dimensiones compuesto por
pixels. Este proceso se denomina rendering. Al finalizar el proceso de rendering
se obtiene una imagen digital en dos dimensiones, una imagen tipo raster.
La cmara es lo que determina que parte ser visible del universo 3D en un
momento dado, y se la denomina Frustum. El frustum es una figura
geomtrica de aspecto piramidal.
Todos los tringulos que se encuentren dentro del volumen del frustum sern
visibles en pantalla (excepto aquellos que sean tapados por otros). Aquellos
tringulos que se encuentren parte dentro y parte fuera sern recortados hasta
dejar solo la parte de los mismos que es visible (triangle splitting). Al
proceso de determinar que tringulos caen dentro y cuales fuera se lo
denomina Frustum Culling.
Determinar que tringulos sern visibles dentro del frustum debido a que
algunos pueden ser tapados por otros se denomina Occlusion Culling.
Por lo tanto el concepto de Rendering consiste en calcular, para una cmara
determinada, dentro de un universo 3D determinado, que pixels debern ser
dibujados en pantalla.
Renderizado RealTime vs Offline
En el renderizado Offline se construye un universo 3D y a partir de l se
obtienen imgenes (renders) bajo determinadas posiciones de la cmara. El
foco en este tipo de aplicacin es obtener la mayor calidad posible sin importar
tanto el tiempo de procesamiento. El cine de animacin, la edicin digital de
imgenes y la fotografa tienen este tipo de necesidades.
En el renderizado RealTime la situacin es completamente diferente, el
programa tiene una naturaleza crtica respecto del tiempo, debe dar respuesta
en tiempo real al usuario que lo est utilizando. Aplicaciones como programas
de diseo grfico, programas de simulaciones y video juegos son ejemplos de
algunos que tienen estas necesidades.
Graphics Pipeline
Para realizar un render, es decir, pasar del modelo lgico de 3D al modelo fsico
2D que se mostrara en pantalla, existen una serie de complejos pasos a seguir
que se denominan Graphics Pipeline.
A muy grandes rasgos, los pasos de una aplicacin 3D son los siguientes:
El programa especifica a la API la geometra en su modelo 3D, texturas e
iluminacin del mundo 3D que desea construir. La API, junto con la ayuda de
los adaptadores de video, recibe toda la informacin de la aplicacin, la
procesa y la transforma para ser proyectada en el plano 2D de una pantalla.
Todo este proceso se denomina rendering y para completarlo se debe pasar por
todas las etapas del Graphics Pipeline.
Las etapas del Graphics Pipeline son secuenciales. La informacin llega a una
etapa, es procesada y luego enva su respuesta a la siguiente etapa.
La entrada inicial del Pipeline ser la descripcin del modelo lgico del universo
3D y la salida ser la matriz de pixeles que se mostrar en pantalla.
Cabe destacar que ya a principio de esta etapa, la API junto con los
adaptadores de video, desconocen el concepto de modelo 3D o malla y solo se
manejan a nivel de tringulo. La API grfica continuar el resto de los pasos del
pipeline trabajando individualmente sobre cada tringulo.
Frustum Culling: En esta etapa se evala que tringulos estn dentro y
cuales fuera. Los que estn fuera en este momento dado ya no pasaran a la
siguiente etapa. Los que estn dentro por completo o parte dentro pasaran,
luego se los cortara como corresponda.
Back-Face Culling: En este proceso todos los tringulos que se encuentran
completamente hacia el lado contrario a la cmara son eliminados, ya que
nunca sern visibles. Para esto se utiliza la informacin del vector normal a
cada triangulo.
Per-Vertex Lighting: En esta etapa se procesan todos los parmetros de
iluminacin definidos. El usuario cuenta con estos parmetros para definir la
iluminacin: Color por vrtice, Material del mesh, Luces que hayan sido
colocadas en el universo 3D. El modelo de iluminacin utilizado es el Gouraud
Shading que determina el color de cada vrtice y luego se interpola para
obtener los colores de los puntos restantes del tringulo. En este proceso se
termina calculando el color verdadero de cada vrtice, no de cada pixel, eso se
efectuara luego en la etapa de Shading a partir de lo calculado aqu.
Triangle Clipping: En esta etapa se cortan todos los tringulos que tienen
parte dentro y parte fuera del volumen del frustum formando nuevos tringulos
al realizar dichos cortes.
Iluminacin Esttica
Texture Mapping: Para que un tringulo contenga una seccin de textura es
necesario especificar valores de mappeo, denominados coordenadas de
textura. Son un par ordenado (u,v) con valor entre 0 y 1 que luego se
multiplican por el ancho y alto de la imagen que da la textura para obtener los
verdaderos valores de mappeo, logrando as que la especificacin de mappeo
sea indistinta del tamao real de la textura. El mappeo se haca con
interpolado lineal pero eso traa problemas con objetos con inclinaciones, por
ello se empez a utilizar Perspective Correct Texture Mapping que para
proyectar utiliza 1/z en el espacio 3D y as obtiene mejores resultados al aplicar
texturas, es ms costoso computacionalmente pero los adaptadores de video lo
soportan.
Mipmapping: se basa en generar varias imgenes de diferentes tamaos a
partir de una imagen de textura definida, para utilizar la imagen del tamao
que convenga segn la cantidad de pixeles que va a representar en pantalla.
Se suele generar un nuevo mipmap si un pixel contiene uno o ms texels. No
se realiza en tiempo real, la API los tiene pre calculados desde la carga de la
textura por primera vez. Adems al no tener que realizar esos clculos en
tiempo real la API le aplica anti-aliasing a las imgenes generadas (que son
ms pequeas) para corregir y disminuir imperfecciones, que debido a su costo
no sera posible realizarlo en tiempo real.
Texture Sampling: Es el mtodo de seleccin de muestras de texels.
Conllevan un gran costo computacional. Algunos son:
Nearest Sampling Method: Al recibir las coordenadas de textura, sus
valores floats se multiplican por las dimensiones de la imagen de textura y el
resultado es truncado a integer. Es el mtodo ms eficiente, pero desperdicia
informacin importante (los decimales).
Bilinear Sampling Method: Este mtodo utiliza los valores truncados del
mtodo anterior para determinar un rea de 4 pixels dentro de la textura e
Trilinear Sampling Method: Este mtodo tiene en cuenta los distintos niveles de
textura creados en el proceso de Mipmapping. Efecta bilinear entre dos
mipmaps y luego interpolacin lineal entre los dos valores encontrados. Atena
el efecto brusco de cambio de un mipmap a otro.
Anisotropic Sampling Method: Este mtodo utiliza la tcnica del mtodo
anterior pero incorporndole el ngulo de inclinacin del tringulo.
En un concepto ms amplio, una textura es una imagen compuesta por una
matriz de dos dimensiones, la cual posee como valor de cada par de
coordenadas (x,y) un color RGB. El color representado por cada pixel de la
textura normalmente se utiliza para hacer referencia al color que queremos
que se muestre en el modelo 3D, podra utilizarse para otras cosas.
Con este concepto ms amplio, una textura puede ser considerada como una
forma extra de proveer informacin para un modelo 3D.
DiffuseMap: es la textura tradicional que venimos tratando. Cada pixel
representa el color RGB que queremos que sea plasmado en la superficie
de un modelo 3D.
LightMap: Es una textura que se utiliza para lograr efectos de luces y
sombras. Cada pixel de la imagen representa el brillo de una
determinada seccin de un modelo 3D.
NormalMap: es una textura que se utiliza en la tcnica de Bump Mapping
para lograr efectos de relieve y generar sensacin de mayor detalle de
geometra. Cada pixel de la imagen representa el valor del vector normal
de la superficie del modelo 3D.
Multitexture: actualmente se pueden definir varias texturas para un mismo
modelo, simplemente se tienen varios canales de textura y cada triangulo
define varios pares de coordenadas u,v. Luego se las debe mezclar de alguna
manera, la tcnica ms comn es Modulation (se multiplican los texels de los
canales).
En cuanto a los colores por vrtice como se dijo antes cada vrtice puede
especificar valores RGBA para definir su color y luego se interpolara para
obtener los valores intermedios de los pixeles entre los vrtices. Esto se puede
combinar con los valores que den la/s textura/s para obtener un mejor
resultado.
Iluminacin Dinmica
Cuando se construye el universo 3D se pueden situar diferentes emisores de
luz en el escenario. Estos emisores luego sern tenidos en cuenta por la API
para influenciar el color de los vrtices de los tringulos. La iluminacin
dinmica debe ser calculada en run-time, en la etapa de Shading, con lo cual
es computacionalmente costosa.
El modelo utilizado es simplificado, ya que sera imposible calcular la
iluminacin real con el hardware actual. El dato utilizado para el clculo es el
vector normal del vrtice al que le queremos calcular la iluminacin. Una vez
obtenidos los colores de los 3 vrtices de un tringulo se utiliza algn mtodo
(Shading Model) para determinar los colores de los puntos intermedios.
Ecuacin de luz simplificada en hoja de frmulas.
Ambient Light: La luz ambiental es aquella que proviene de todas
direcciones, todas las superficies son iluminadas por ella con igual intensidad
sin importar su orientacin. Es una simplificacin tramposa de la fsica de la
luz, ya que la luz ambiental real proviene de la luz reflejada por el ambiente
(cosa que no podemos calcular debido al costo computacional), entonces se
establece un valor X arbitrario que especifica la cantidad de luz ambiental.
Diffuse Light: La luz difusa es la proveniente de una fuente de luz que es
absorbida por una superficie y luego reflejada en todas direcciones. Depende
del ngulo que exista entre la orientacin del vrtice y el vector desde el
vrtice hacia la fuente de luz. La luz difusa es independiente de la posicin de
la cmara.
Specular Light: La luz especular es la proveniente de una fuente de luz que
refleja en la superficie y se dirige hacia la cmara. Se la conoce como efecto
espejo y representa la capacidad de un objeto de reflejar luz.
Material
En la fsica real cuanto ms cerca est un objeto de una fuente de luz, ms se
ilumina, para simular la atenuacin de la luz al alejarse se utilizan los tres
coeficientes de la ecuacin del clculo de la luz. La configuracin de esos
coeficientes determina como un objeto refleja o irradia luz y se la denomina
material.
Shading Model
Una vez calculado el color RGB con el modelo de iluminacin dinmica, se debe
calcular los colores de los puntos intermedios de las superficies, este proceso
se denomina Shading.
Flat Shading: Es el mtodo ms simple y rpido. No calcula el color RGB para
cada vrtice sino que calcula un nico color para todo el tringulo utilizando el
vector normal, as cada triangulo tiene un nico color slido. No genera
transiciones de iluminacin suaves.
LightMap
La calidad de la iluminacin por vrtice con Gouraud Shading en una malla est
limitada por la cantidad de vrtices de la misma. Si uno quiere lograr mejores
efectos de iluminacin se ve obligado a aumentar la complejidad de la
geometra del modelo.
Los LightMaps son una tcnica para evitar este problema y lograr buenos
efectos de luces y sombras en objetos estticos.
Un LightMap es una textura que representa el brillo de las superficies de un
objeto, dadas diversas fuentes de luces. Solo contiene informacin acerca de
cmo est iluminado el objeto.
Al proceso de agrupar muchas texturas pequeas en una sola ms grande se lo
denomina Texture Packing.
La tcnica de LightMaps es muy til para lograr buena calidad de brillo
inclusive en objetos de geometra simple. Adems tiene muy bajo costo
computacional porque todo se pre calcula Offline. Pero esta tambin es su
principal desventaja, ya que es una iluminacin esttica. Si durante la
ejecucin de la aplicacin la geometra fuese modificada (destruccin de una
pared, apagar un farol de luz) la iluminacin sobre los modelos seguir igual
que al principio.
Bump Mapping: Es una tcnica para aumentar la calidad grfica y la
complejidad de un modelo mediante la generacin de falsas protuberancias y
abolladura. Normal Mapping es una de las tcnicas ms sencillas de Bump
Mapping. La idea de Normal Mapping es generar dos modelos, uno low poly y
otro high poly. Solo se puede renderizar el High poly en tiempo real, el low poly
se utiliza para generar un Normal Map ya que tiene mucho ms detalle y ms
vectores normales lo que dara un mejor efecto de iluminacin. Luego se utiliza
ese normal map y se lo aplica como una textura al low poly model obteniendo
mejores resultados de iluminacin
Iluminacin Offline
Radiosity es ideal para calcular la irradiacin de luz entre los objetos y Ray
Tracing es ms indicado para efectos de reflexin especular y transparencia.
Por lo tanto, en la prctica, ambas tcnicas son combinadas para obtener las
ventajas de cada una.
previa des habilitacin del Z-Buffer. Ya que sino los valores se pisaran porque
el proceso con Z-Buffer solo contempla la profundidad y no as la traslucidez.
Notas:
El algoritmo de iluminacin dinmica se ejecuta en la sub etapa de PerVertex
Lighting de la etapa Geometry del Graphics Pipeline. Recibe como
entrada vrtices de tringulos y devuelve esos mismos vrtices con su
color RGB calculado.
El algoritmo de Shading Model es ejecutado en la sub etapa de Shading
de la etapa de Rendering/Rasterization del Graphics Pipeline. Recibe
como entrada fragmentos de tringulos sin color y devuelve como salida
pixels con el color determinado.
Un Shader es cdigo programable que ejecuta en la GPU.
Pertenece al esquema de Programable Pipeline. Existen Vertex
Shaders y Pixel Shaders, entre otros. Un
Pixel Shader permite al programador sobrescribir la funcionalidad
tradicional de la subetapa de Shading del Pipeline, para
implementar un Shading Model diferente.
SkyBox es un mtodo sencillo de crear un fondo envolvente para un
escenario, utilizando un cubo con 6 texturas que encastran
perfectamente.
Enviroment Mapping es una tcnica para generar el efecto de reflejo
de superficies como espejos, metales y agua. Se utiliza una textura,
denominada EnviromentMap.
Unidad 5 Animacin
Animar es dar la sensacin de que los objetos tienen vida propia.
La animacin hace que los objetos cambien en el tiempo siguiendo un guion
predefinido, mientras que la simulacin trata de predecir cmo van a cambiar
los objetos a lo largo del tiempo siguiendo reglas fsicas y matemticas.
Quadtree y Octree
Son estructuras de datos que evolucionan de la grilla regular. Tienen la
capacidad de adecuarse a la geometra particular de un escenario mediante la
construccin de una grilla adaptativa. Octree maneja 3 ejes y quadtree solo 2,
la utilizacin de una tcnica u otra depender de las caractersticas de la
aplicacin y del escenario.
La idea principal es ir subdividiendo el mapa, en cubos o cuadrados segn la
tcnica, hasta llegar a un nivel mximo de divisiones prestablecido o a que
haya menos de cierta cantidad de modelos en cada cubo o cuadrado. Las
divisiones se hacen en la mitad del cuadrado a dividir en ambos ejes.
La construccin de esta grilla conforma una estructura de datos en forma de
rbol.
La concentracin de modelos del escenario determina que tanto se seguir
subdividiendo un nodo. Por lo tanto en aquellos lugares en los que haya ms
modelos habr ms subdivisiones y en aquellos lugares vacos habr muy
pocas subdivisiones.
Esto produce que el tamao de las celdas sea ms chico donde realmente se
necesita ese nivel de precisin, manteniendo celdas de gran tamao para
abarcar las reas de poca informacin.
La construccin de la grilla debe realizarse en manera offline y persistirse en
algn archivo, ya que conlleva un importante costo computacional como para
hacerlo en real-time.
El porcentaje de completitud de un rbol se calcula como la cantidad de nodos
que posee el rbol sobre el total de nodos de ese rbol completo.
KD-Tree
La tcnica de KD-Tree es una evolucin directa de los Octrees/Quadtrees que
tiene como objetivo lograr un rbol balanceado sobre el escenario de modelos.
Para lograr esto lo que la tcnica propone es hacer cortes no a mitad espacial
BSP-Tree
El BSP-Tree termina la lnea de evolucin iniciada con la grilla regular e intenta
alcanzar como resultado un rbol completamente balanceado de rpido
acceso. La tctica anterior poda obtener resultados bastantes buenos pero se
vea limitada con ciertas configuraciones de modelos porque solo poda
efectuar cortes rectos por los ejes.
En un rbol BSP los cortes que se pueden hacer para dividir el volumen de un
nodo en dos mitades no tienen ninguna restriccin, pueden hacerse cortes en
diagonal con cualquier direccin.
Portal Rendering
Todas las tcnicas explicadas anteriormente atacan correctamente el tema de
Frustum Culling pero ninguno provee una solucin sencilla para acelerar el
Occlusion Culling. Portal Rendering es una estrategia para atacar ambos
problemas con una misma tcnica.
Esta tcnica se basa en proveed de metadata al escenario, en vez de crearle
una grilla lgica asumiendo que todos los modelos estn desparramados por el
escenario. De esta manera se deben definir celdas y portales que conectan las
diferentes celdas mediante objetos convexos. Con esta estructura definida
podemos realizar Frustum Clipping, que es el proceso de reducir
dinmicamente el frustum, ya que al chocar con un borde de una celda (si
no hay un portal que la conecte con otra) ese es el lmite de visin. Esto
permite acelerar enormemente el clculo de Occlusion Culling.
Portal Rendering utiliza un grafo de celdas que son conectados por portales.
La meta-data de Portal Rendering debe ser creada por el diseador del
escenario, a medida que va confeccionando sus modelos.
Todas las tcnicas contempladas hasta ahora se explicaron siempre sobre un
escenario que permaneca esttico. Todos sus modelos tienen una posicin fija
en el espacio que se mantiene igual durante toda la ejecucin de la aplicacin.
Dinamismo en Quadtree, Octree, KD-Tree y BSP. Como se dijo antes es
computacionalmente costoso el clculo de las grillas o cortes correspondientes
al escenario, por lo tanto no se puede recalcular en cada cuadro. Lo que si
puede hacerse es calcular en que nueva hoja del rbol se encuentra un modelo
que se haya movido. Luego quitarlo de la hoja original y agregarlo en la nueva.
Para el dinamismo en Portal Rendering se utiliza la misma idea.
Las tcnicas de rboles vistas tambin pueden ser utilizadas para optimizar la
deteccin de colisiones, haciendo relevantes solo los modelos que se
encuentren en hojas visibles por el frustum (las dems colisiones posibles no
son necesarias).
como baldosas de una vereda para confeccionar el color final de una superficie
mayor.
La variacin del valor Y entre dos puntos (X, Z) del Heightmap indica si la
prxima posicin deseada es realmente alcanzable por el modelo.
Unidad 8 Shaders
Al comienzo se trabajaba con el modelo del Graphics Pipeline visto
anteriormente que era fijo, de all Fixed Pipeline, pero con el tiempo esto
evolucion hacia Pipeline programable.
Se llama fragmentos a los pixeles que an no estn en pantalla. Es decir un
pixel final puede ser el producto de varios fragmentos debido al alpha blending
y al mutisampling.
Haba 2 tipos de unidades programables: los vertex shaders unit y los fragment
(o pixel) shaders unit. Los shaders entonces se escriban en lenguaje
ensamblador de muy bajo nivel, lo cual haca muy complicada su escritura,
mantenimiento y reutilizacin.
En el contexto de las GPUs un shader es un pequeo programa que se
carga y se ejecuta directamente en el hardware de la placa, en las
llamadas shaders units
Vertex Shader
El vertex shader trabaja a nivel de vrtices y sobrecarga la etapa de transform
y lighting del fixed pipeline. Recibe como dato de entrada un nico vrtice y
devuelve un vrtice transformado. Como mnimo debe devolver la posicin
transformada (o proyeccin al espacio de pantalla) de tal forma que el
rasterizador pueda generar los distintos fragmentos. Eventualmente puede
producir ms datos por vrtice como color (iluminacin por vrtice) y cualquier
otro dato que ser consumido por el rasterizador. El vertex shader no tiene
acceso a ningn otro vrtice de la primitiva, ni informacin sobre la misma,
esto permite el paralelismo entre los distintos vrtices que son totalmente
independientes entre s.
Con los Vertex Shaders podemos lograr efectos como ojo de pescado,
distorsiones, movimiento de telas y banderas, ondulaciones de superficies, etc.
Pixel Shader
El PS se llama una vez por cada pixel generado por el rasterizador. Recibe los
valores interpolados por vrtice (color, coordenadas de textura, normal, etc.) y
con todos esos datos devuelve el color final del pixel. Trabaja con un solo pixel
a la vez y eventualmente puede descartar dicho pixel y abortar las siguientes
etapas del pipeline. El PS no puede modificar la posicin en pantalla (X ,Y ) del
pixel pero ocasionalmente puede modificar el valor de profundidad Z.
Algunos efectos que se pueden lograr con pixel shader son: Iluminacin en
tiempo real, Multitextura, Efectos de relieve (bumpmapping), Pelaje en
superficies, Fuego, reflejos, sombras, alpha blending y blur.
Geometry Shader
Luego se agreg en el pipeline una entrada en la etapa de Geometry que
permitiera crear primitivas. As la entrada del Geometry Shader son los 3
vrtices de un tringulo y eventualmente informacin de adyacencia
(tringulos adyacentes al mismo). Con todo eso es capaz de crear nuevas
primitivas a partir de una nica primitiva de entrada.
Teselado
Se llama teselado a la operacin de cubrir una superficie utilizando tringulos
de tal forma que no queden huecos en el medio y que no se superpongan
ninguna de las figuras. El teselado de geometras es una de las principales
tcnicas para atacar el problema del LOD en grficos. La idea es que la
geometra se define con primitivas de orden superior las cuales son
convertidas a tringulos (proceso de teselado) slo cuando se precisan dibujar
en pantalla. Como se puede controlar la cantidad de tringulos en los que se va
a convertir la superficie original, es posible controlar el LOD de manera precisa.
Notas:
El CPU es de propsito general, mientras que el GPU est diseado
especialmente para renderizar. El CPU es un procesador escalar, mientras
que el GPU es un procesador vectorial o de flujo. El CPU es orientado a la
operacin, est hecho para ejecutar cualquier tipo de algoritmos en forma
serial, mientras que el GPU es orientado a los datos, ya que se procesan
millones de pixeles de forma independiente y en paralelo. El CPU busca
siempre la mayor precisin posible mientras que el GPU se permite cierta falta
de precisin con el fin de aumentar la performance.
El GPU tiene instrucciones SIMD (Single Instruction, Multiple Data) porque
las operaciones que se realizan a los vrtices y pixeles pueden realizarse de a
varios elementos por vez. Adems hay operaciones como dot product y cross
product que convienen realizarse en una sola instruccin.
GPGPU es General Purpose GPU, y se utiliza para aplicaciones en campos que
no necesariamente son relacionados con los grficos, como por ejemplo
modelado de molculas, simulaciones fsicas, climticas, algoritmos genticos,
etc.
Pipelining es una tcnica para lograr paralelismo en los stages del
rendering pipeline. Esto se logra utilizando unidades de geometra y de
rasterizacin en paralelo, cada una ejecutando distintas etapas del pipeline.
El rendering pipeline es paralelizable ya que en general los tringulos y los
pixeles que se procesan dentro de l son independientes unos de los otros. Las
tres etapas fundamentales del rendering pipeline son Aplicacin, Geometra y
rasterizador.
En la etapa de geometra ingresan los datos de los vrtices, coordenadas de
textura, texturas, materiales, informacin de la iluminacin, cambios de
estados del render y egresan los vrtices proyectados en un plano, junto con su
informacin de profundidad, y los datos necesarios para hacer el Shading.
De la etapa de Rasterizacin egresan los colores de pixeles que van a ser
copiados en el framebuffer.