jueves, 17 de noviembre de 2011

Tecnicas de sombreado clasicas y avanzadas

Clasicas: Iluminacion local       
Calculos de iluminación por vértices
Para poder aplicar iluminación necesitamos asociar a cada vértice de nuestro objeto un vector normal asociado. Cuando tenemos la normal calculada tenemos que normalizarla, o sea, dividir ese vector por su propio modulo para que sea unitario, pero también podemos hacer que se encargue la OpengGl activando la normalización,
glEnable GL_NORMALIZE
o desactivarla con,
glDisable GL_NORMALIZE
el usar GL_NORMALIZE dependerá de nuestra aplicación ya que forzando a que sea OpenGl que las utilice se ralentiza ya que le estamos hacer mas cálculos de los que debe.
Para definir las normales en opengl utilizaremos la función glNormal3f(X,Y,Z) por ejemplo para definir una cara con 4 vértices la definiremos de la siguiente manera
GlBegin GL_QUADS
glNormal3f nX,nY,nZ
glvertex3f x,y,z
glvertex3f x,y,z
glvertex3f x,y,z
glvertex3f x,y,z
glEnd
Es decir, cada vez que queremos definir una normal a un vértice usamos glNormal y el vértice/s que siguen se asocian a esta normal.
La luz de tipo SMOOTH el polígono que definamos tendrá un color definido par cada vértice, asociando las normales a los vértices OpenGL puede hacer los cálculos de los colores a cada uno del vértice y después hace una interpolación de colores con este tipo de luz se acerca bastante al realismo pero a un la podemos mejorar.

Posterior relleno de triangulos
Rellenado de los triángulos (rastering). Para ello se realizan varias fases de procesamiento por Pixel. Comprobar si cada nuevo pixel es visible o no (comprobación de profundidad). 
Interpolación lineal del color para el nuevo pixel (método de Gouraud). 
Si existe una textura definida o transparencia, efectuar la modificación de color correspondiente. 
Se trata de la última fase, en ocasiones la más costosa, del proceso, por lo que es la primera que se suele integrar en el hardware gráfico. En esta etapa se trata de asignar colores a los pixels correspondientes al interior de cada triángulo proyectado que cae dentro del área de visualización. Los colores asignados deben calcularse por el método de Gouraud, interpolando linealmente entre los colores de los tres vértices.
Renderizado en tiempo real
La idea fundamental del procesado en tiempo real es que todos los objetos deben ser descompuestos en polígonos. Estos polígonos serán descompuestos a su vez en triangulos. Cada triangulo será proyectado sobre laventana bidimensional y rellenado con los colores adecuados para reflejar los efectos de la iluminación, texturas, etc. Ua vez se han generado los triangulos, en la pipeline existen dos partes claramente diferenciadas: uina primera etapa operaciones realizadas sobre cada uno de los vértices, y después de que estos se proyecten sobre la ventana, entonces comienza una segunda fase de cálculos realizados para cada pixel cubierto por los triangulos.

Alto Acabado

Sombreado Constante o plano. Un cálculo para todo el polígono. Obtenemos una intensidad  que aplicamos a un conjunto de puntos de un objeto (p.ej. todo un triángulo). Aceleramos el proceso de síntesis.  Correcto si se verifica: Fuente de luz en el infinito. Observador en el infinito. El polígono representa una superficie plana real del objeto que se modela y no es una aproximación de un objeto curvo.
Realistas: iluminación global
Trazado de rayos
El trazado de rayos computa la interaccion de la luz desde un punto de vista determinado y es particularmente adecuado para superficies reflectantes. Puede utilizarse como propiedad especifica de un determinado material.
Radiosidad
Esta basado en principios generales que se pueden encontrar en un manual general sobre rendering. En el estado inicial la escena consta de dos tipos de objetos: objetos que emiten luz y objetos que reciben luz. A partir de aquí, en una primera vuelta, se computa la luz que recibe cada objeto en una aproximación mas exacta, cada parte de un objeto, según una subdivisión cuya densidad puede percisarse en sucesivas aproximaciones. Cada una de estas partes, según su grado de reflexividad, su orientación y su distancia con respecto a las fuentes de luz original, se convertirá en una segunda vuelta, en un nuevo emisor de energía lumínica, una fuente de luz secundaria que iluminara a su vez a los objetos que le rodean.
Calculos de iluminación por pixel
La iluminación por píxel en tiempo real es una tecnología revolucionaria ofrecida como primicia por NVIDIA Shading Rasterizer. La iluminación dinámica a nivel de píxel libera a los desarrolladores de las restricciones de otros sistemas de iluminación y pone a su alcance toda una gama de sofisticados efectos. La potencia de NSR eleva la calidad de la experiencia multimedia que ofrecen las GPU NVIDIA. NSR mantiene la alta resolución en entornos dinámicos y proporciona la experiencia de juego más impactante.
La técnica Pixel Shader
La técnica Pixel Shader es una tecnología que pueden incorporar el hardware que se encarga de convertir las instrucciones generadas por un ordenador o una videoconsola en gráficos visualizables en la pantalla de TV o monitor, dicha técnica se encarga de virtualizar el mundo físico mediante gráficos generados digitalmente, en concreto el pixel shader se encarga de la gestión de iluminado de la escena, produciendo los efectos lumínicos de luces y sombras.

El hardware que implementa Pixel Shader es comúnmente conocido como "la tarjeta gráfica", o adaptador gráficos, VGAs o tarjetas de vídeo.
Sombreado Constante o plano
Un calculo para todo el polígono
Obtenemos una intensidad  que aplicamos a un conjunto de puntos de un objeto (p.ej. todo un triángulo)
Aceleramos el proceso de síntesis
 Correcto si se verifica
Fuente de luz en el infinito
Observador en el infinito
El polígono representa una superficie plana real del objeto que se modela y no es una aproximación de un objeto curvo.
Calcula normales al polígono
La iluminación cte. no produce buenos resultados en superficies curvas (aprox. por
facetas planas).
Evaluar la ecuación de iluminación en cada punto de una superficie genérica es muy costoso. Posible solución: aproximar mediante facetas planas e interpolar dentro de cada  polígono. Hay que evitar producir una apariencia “faceteada” (bandas de Mach; respuesta del ojo humano).
Sombreado Constante/Plano
(Flat Shading)
Obtenemos una intensidad que aplicamos a un conjunto de puntos de un objeto
–Aceleramos el proceso de síntesis
–Correcto si se verifica:
• Fuente de luz en el infinito
• Observador en el infinito
• El polígono representa una superficie plana real del objeto que se modela y no es una    aproximación de un objeto curvo.

Sombreado por Interpolación
La iluminación cte. no produce buenos resultados en superficies curvas (aprox. Por facetas planas)
– Evaluar la ecuación de iluminación en cada punto de una superficie genérica es muy costoso
– Posible solución: aproximar mediante facetas planas e interpolar dentro de cada polígono
– Hay que evitar producir una apariencia “facetada” (bandas de Mach; respuesta del ojo humano).

Sombreado de Gouraud
Se basa en la interpolación de intensidad o color
• Considera que facetas planas vecinas proceden de aproximar una superficie curva (salvo que se declare una arista real entre ambas)
• Elimina en gran medida las discontinuidades de iluminación
• Es sencilla, pero produce peores resultados en objetos con brillos especulares que el método de  Phong.
• Implementado en OpenGL.
Necesita la dirección de la normal en cada vértice (si se desconoce, se calcula a partir de las normales de las facetas que contienen el vértice)
• Si dos facetas están separadas por una arista real, se utilizan dos normales diferentes para
trabajar en cada faceta (se promedian las normales situadas solo a un lado de la arista)
• A partir de la normal en cada vértice, se evalúa la ecuación de iluminación (solo para cada vértice) y se obtiene un valor de intensidad para cada uno de ellos
• Se realiza una interpolación bilineal para obtener la intensidad en cada punto dentro de la
faceta (de forma incremental).

Sombreado de Phong
• Se basa en la interpolación de la dirección de la normal, calculada de la misma forma que antes.
• Igual que en Gouraud, se interpola a lo largo de cada línea de barrido, entre los puntos inicial y final, interpolados a su vez de los valores de los vértices de la arista.
• Captura mejor los brillos especulares en el medio de facetas planas (Gouraud los puede omitir).
Produce mejores resultados, a un coste computacional mayor (hay que incrementar la dirección de la normal en tres direcciones, normalizarla y calcular la ecuación de sombreado encada punto)
• Si el coeficiente de reflexión especular es pequeño, los resultados no difieren tanto (se pueden combinar objetos sombreados por ambos métodos en una escena).

Intensidad completa
 La intensidad completa exclusivamente por efectos de iluminación es la siguiente:

http://www.fdi.ucm.es/profesor/segundo/PDFs/7SombreadoVisualizacion.pdf

http://cannes.itam.mx/Alfredo/Espaniol/Cursos/Grafica/Sombreado.pdf

No hay comentarios:

Publicar un comentario