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.
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.
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.
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).
Ray Tracing (Trazador de rayos):
Es un método basado en los principios físicos de la óptica geométrica que puede simular reflexiones múltiples y la transparencia
Buffer de profundidad
Es la parte de la memoria de nuestra tarjeta gráfica encargada de la visibilidad de nuestros gráficos 3D según las coordenadas de sus pixeles, con lo que se puede gestionar qué elementos de una escena renderizada son visibles y cuales permanecerán ocultos según sus posiciones en el eje Z ( distancia a cámara ). Sirve para no dibujar objetos delante de otros cuando no debe.
Buffer de Stencil
Es un buffer extra, además de la memoria de color (buffer pixel) y el buffer de profundidad (z-buffering) encontró en el equipo moderno hardware gráfico. El buffer es por píxel, y trabaja en valores enteros, por lo general con una profundidad de un byte por píxel. El buffer de profundidad y stencil buffer a menudo comparten la misma área en la memoria RAM del hardware de gráficos.
Buffer de acumulación
Sirve para capturar el buffer de color en un fotograma y aplicarle acumulaciones del color de otro fotograma/s. Esto básicamente sirve para simular el efecto de estela que deja un objeto cuando se mueve muy rápidamente en el encuadre de la cámara.
Fuentes de Luz
La luz puede dejar una superficie mediante dos procesos fundamentales:
· Emisión propia
· Reflexión
Normalmente se piensa en una fuente de luz como un objeto que emite luz solo mediante fuentes de energía internas, sin embargo, una fuente de luz, como un foco, puede reflejar alguna luz incidente a esta del ambiente. Este aspecto no será tomado en cuenta en los modelos más sencillos.
Fuentes de color
Son fuentes luminosas naturales todos aquellos cuerpos capaces de emitir luz, como las estrellas, las luciérnagas, el fuego, etc. No solamente las fuentes de luz emiten diferentes cantidades de luz en diferentes frecuencias, pero también sus propiedades direccionales varían con la frecuencia. Por lo tanto, un modelos físicamente correcto puede ser muy complejo. Para la mayoría de las aplicaciones, se puede modelar fuentes de luz en base a tres componentes primarios, RGB, y puede usar cada uno de los tres colores fuentes para obtener el componente de color correspondiente que un observador humano vería. La mayor fuente natural de luz y de calor en la Tierra, es el Sol durante el día y durante la noche son la Luna y las Estrellas que la reciben del Sol y lo reflejan a la Tierra.
Luz ambiente
En algunos cuartos, las luces se diseñan y ubican para proveer iluminación uniforme en el cuarto. Tal iluminación se logra mediante fuentes grandes con difusores cuyo propósito es esparcir la luz en todas las direcciones. Se puede crear una simulación precisa de tal iluminación, modelando todas las fuentes distribuidas, y luego integrando la iluminación de estas fuentes en cada punto de una superficie reflectora. Hacer tal modelo y generar la escena sería un tarea formidable para un sistema gráfico, especialmente si se desea ejecución en tiempo real. De manera alternativa, se puede ver el efecto deseado de las fuentes: lograr un nivel de luz uniforme en el cuarto. Esta iluminación uniforme se llama luz ambiente.
Spotlights (direccionales)
Se caracterizan por un rango delgado de ángulos por los cuales se emite luz. Se puede construir un spotlight sencillo de una fuente de punto limitando los ángulos de donde la luz de la fuente se puede ver.
Fuentes de Luz Distantes
La mayoría de los cálculos de sombreado requieren la dirección de un punto sobre la superficie a la fuente de luz. Según se mueve a lo largo de la superficie, se debe recomputar este vector para calcular la intensidad en cada punto, una computación que es una parte significativa del cálculo del sombreado. Sin embargo, si la fuente de luz está lejos de la superficie, el vector no cambiará mucho según se mueve de un punto a otro, al igual que la luz del sol da en todos los objetos cercanos entre si con el mismo ángulo.
Intensidad completa
La intensidad completa exclusivamente por efectos de iluminación es la siguiente:
FUENTES:
1.http://cannes.itam.mx/Alfredo/Espaniol/Cursos/Grafica/Sombreado.pdf
2. http://www.fdi.ucm.es/profesor/segundo/PDFs/7SombreadoVisualizacion.pdf
3.http://lsi.ugr.es/~curena/doce/vr/pracs.10-11/03/#ilu
4.http://e-md.upc.edu/diposit/material/24099/24099.pdf
5.http://informatica.uv.es/iiguia/AIG/web_teoria/tema3.pdf
6.http://www.azrodin.com/2009/09/generacion-de-sombras-con-stencil-buffer/
7.http://cannes.itam.mx/Alfredo/Espaniol/Cursos/Grafica/Sombreado.pdf
8.http://sabia.tic.udc.es/gc/Contenidos%20adicionales/trabajos/3D/modelosIlumionacion/introduccion_intensidad_completa.html