El proceso general del render

Introducción

El proceso general del render

El tile-bassed deferred rendering

Historia

Aplicaciones

Rendimiento

Programación

Bibliografía



Pedro
Marcos
Adrián
Pablo
Fran
Ismael

El proceso general del render

 

Indice:

 

3D COMPUTER GRAPHICS

 

INTRODUCCIÓN MODELOS:

- Wire-Frame based Models

- Voxel based Models

- Poligon based Models


INTRODUCCIÓN TÉCNICAS DE RENDER:

- Scanline Rendering

- Progressive Scanning Display (P)

- Interlaced Scanning Display (I)

 

INTRODUCCIÓN TIPOS DE GRÁFICOS:

- Vector Graphics

- Raster Graphics


INTRODUCCIÓN TÉCNICAS DE ILUMINACIÓN:

- Raytracing

- Photon Mapping

- Radiosity

 

INTRODUCCIÓN TECNICAS DE SOMBREADO:

Pixel Shader

Vertex Shader

Geometry Shader

 

 

3D COMPUTER GRAPHICS

Se define “3d Compunter Graphics”(1) como el conjunto de gráficos en los que se emplea una representación tridimensional de la información geométrica de un objeto.

A pesar de las palpables diferencias entre gráficos 2d y 3d, estos últimos, hacen uso de muchos de los algoritmos empleados en la generación de gráficos 2d. Tales como gráficos vectoriales en “wire-frame models” y “raster graphics” en técnicas de iluminación.

_______________________________________________________________________

(1): El término “Computer Graphics” fue acuñado en 1961 por William Fetter fundador de Boeing, “American Multinational Aerospace and Defense Corporation”.

 

MODELOS: WIRE-FRAME BASED MODELS

Algoritmo de renderizado del que resulta una imagen semi-transparente, dicha imagen esta compuesta solamente por las aristas de la malla que constituye al objeto. Esta técnica se emplea mayormente durante la edición de los modelos, debido a la escasa potencia de cálculo necesaria en comparación con otros métodos. Esto se debe fundamentalmente a que a la hora de generar un “wire-frame” solo se tiene en cuenta las posiciones relativas de los puntos y las uniones en el espacio tridimensional para la formación de los polígonos.

 

MODELOS: VOXEL BASED MODELS

Un Voxel o Pixel volumétrico es un elemento, con el que se representa el valor de una cuadrícula regular en un espacio tridimensional. Análogamente al Pixel(1) que representa la unidad de información en un “Bitmap”(2).

Al igual, que los Pixel's de un “Bitmap” , los Voxel por sí mismos no suelen contener información de su posición en la imagen adjunta con sus valores. Si no, que la posición de un Voxel se calcula en base a las posición relativa con respecto a los otros Voxel's. A difrencia de Pixel's y Voxel's; Puntos y Polígonos son a menudo explícitamente representados por las coordenadas de sus vértices.

Una consecuencia directa de esta diferencia es que los Polígonos son capaces de representar eficazmente estructuras 3D simples con gran cantidad de espacios vacíos o homogéneamente rellenadas. Mientras que los Voxel's son buenos a la hora de representar modelos de muestreo regular o de carácter no homogéneo.

 

_______________________________________________________________________

(1): Unidad elemental de una imagen de tipo “Raster Graphic” o mínimo elemento direccionable en un dispositivo de visualización como una pantalla.

(2): Forma de organizar la información contenida en una imagen.

 

MODELOS: POLIGON BASED MODELS

Los gráficos que emplean esta técnica, para la representación de modelos 3d, generan dichos objetos, realizando aproximaciones en base a polígonos. Estos polígonos basan su geometría, en "Polygon Meshes"(1) que a su vez, se basan en el uso de vértices, donde 2 vértices conectados, serán una arista o "Edge" y finalmente 3 constituyen la primitiva, el triangulo. Al agrupamiento de polígonos con vértices comunes se le denominara "Element" y a cada una de las primitivas que lo componen, recibe el nombre de "Face". Nótese que cada triangulo tiene dos caras, una opuesta a la otra. Normalmente solo se tendrá en cuenta una de ellas, descartando la otra, la cual llamaremos "BackFace".

 


El uso de triángulos en la composición de figuras en base a polígonos, se debe fundamentalmente a que el cálculo de la normal de superficie, es mucho más sencillo de obtener empleando planos. Métodos, tales como el "Raytracing" y el "Phong Shading Model" se ven beneficiados de este tipo representación. De todos modos, algunos sistemas de render, emplean las normales de los vértices, en vez de las normales de las caras, para conseguir un mayor realismo a pesar del mayor coste en el procesado de la imagen.

_______________________________________________________________________
(1): Colección de vértices, aristas y caras que definen un objeto poliédrico.


http://en.wikipedia.org/wiki/Polygon_mesh

http://en.wikipedia.org/wiki/Polygonal_modeling

 

GRÁFICOS: VECTOR GRAPHICS

Se define, imagen vectorial como aquella imagen formada por objetos geométricos independientes (Segmentos, Polígonos, Arcos, etc). Cada uno de ellos definido por distintos atributos matemáticos, tales como la forma, la posición, el color...

Este tipo de formato de imagen es completamente distinto al formato de los gráficos rasterizados, también llamados imágenes matriciales, que están formados por Pixel's. Una de las características principales de los gráficos vectoriales es el hecho de poder ampliar el tamaño de una imagen a voluntad, sin sufrir el efecto de escalado que sufren los “Raster Graphics”. Así mismo, permiten la translación, rotación y escalado de las imágenes de forma relativamente sencilla. De todos modos, a la hora de hacer las representaciones de este tipo de gráficos por pantalla estos, tendrán que ser traducidos a “Raster Graphics” para poder ser representados en pantalla al estar esta, constituida físicamente por Pixel's.

 


GRÁFICOS: RASTER GRAPHICS

Una imagen en mapa de bits “Bitmap”, también conocida como imagen matricial, es una estructura o fichero de datos representado por una rejilla rectangular de Pixel's. Las imágenes en mapa de bits están caracterizadas por la altura y la anchura en el Pixel y por la Profundidad del color, la cual determina el número de colores que la imagen puede representar.

Los “Bitmap” se distinguen de los “Gráficos Vectoriales” en que estos últimos representan una imagen a través del uso de objetos geométricos como curvas de Bézier y Polígonos. En contraposición a los “Raster Graphics” donde se almacena el color de cada puntos de la matriz que conforma la imagen.

 

 

RENDER: INTRODUCCIÓN

Último paso del “Graphic Pipeline” se define, el término “Render”, como el proceso mediante el cual se genera una imagen o secuencia 2D o 3D; basándose en la información de un modelo o escena.

 

RENDER: SCANLINE RENDERING

El “Scanline Rendering” es un tipo render de salida que emplea el interpolado de campos. Desarrollado para aplicaciones 3d, es un algoritmo que determina la forma en que los objetos de la escena van siendo calculados. Generalmente, se genera creando líneas que aparecen en el plano de render resultante de arriba hacia abajo o viceversa. A modo de ejemplo, tenemos el refresco de las pantallas de televisión, donde un tubo de rayos catódicos proyecta una haz de luz sobre una superficie de fósforo realizando un barrido de izquierda a derecha y de arriba a abajo.

 

RENDER: PROGRESSIVE SCANNIG DISPLAY

El “Progressive Scan Render” denominado también “NonInterlaced Scannig”. Es un método mediante el cual, una imagen sera representada, almacenada o tranmitida de tal manera que todas las lineas del “Frame” son dibujadas secuencialmente en el dispositivo de visualización.

 

RENDER: INTERLACED SCANNING DISPLAY

El “Interlaced Scanning” tradicionalmente usado en monitores analógicos. Consiste en la segmentación de la imagen, que estará constituida por el “Upper Field” y el“Lower Field”; los cuales serán representados de forma alternativa en el dispositivo de visualización.

 

ILUMINACIÓN: INTRODUCCIÓN

El “Computer Graphics Lighting” se refiere a la simulación de la luz en “Computer Graphics”. Esta simulación puede ser extremadamente precisa, como es el caso de una aplicación como “Radiance”(1) la cual, intenta capturar la transmisión de la luz y su interacción con los aplicando “Radiosity”. De modo alternativo podrían usarse simulaciones basadas en “Light Phyics”(2) como seria el caso de un renderizado no foto realista. En ambos casos se emplearia un Shader para describir como las superficies reaccionan a la luz. De todos modos entre ambas ténicas, existen métodos intermedios.

_______________________________________________________________________

(1): El término "Radiance" describe la cantidad de radiación lumínica o calorífica que atraviesa o es emitida en un area concreta.

(1): “Radiance” -

(2): “Light Phyics” -


ILUMINACIÓN: RAYTRACING

El “Raytracing” es fue propuesto inicialmente por Turner Whitted en 1980, se baso en el algoritmo de determinación de superficies visibles desarrollado por Arthur Appel en 1968 denominado Ray Casting(1).

El algoritmo de “Raytracing” extiende la idea de trazar los rayos para determinar las superficies visibles, añadiéndole el cálculo de la intensidad del Pixel. Esto permite tener en cuenta efectos globales de iluminación como pueden ser Reflexiones, Refracciones o sombras arrojadas. Para la simulación de los efectos de reflexión y refracción se trazan rayos de manera recursiva desde el punto de intersección que se esta sombreando dependiendo de las características del material del objeto intersecado. Para la simulación de sombras arrojadas se lanzan rayos desde el punto de intersección hasta las fuentes de luz. Estos rayos se conocen con el nombre de “Shadow Rays”. El algoritmo básico de trazado de rayos fue mejorado por Robert Cook (2) (1985) para simular otros efectos en las imágenes mediante el muestreo estocástico usando el “Método de Monte Carlo(3)”. Entre otros efectos podemos citar el “Motion Blur”, La profundidad de campo o el Submuestreo para eliminar efectos de aliasing en la imagen resultante.

 

[ Depth Map ] [ Raytracing ]

_______________________________________________________________________

(1): Algoritmo donde se determinan las superficies visibles en la escena que se quiere sintetizar, trazando rayos desde el observador (cámara), hasta la escena a través del plano de la imagen. Se calculan las intersecciones del rayo con los diferentes objetos de la escena. Aquella intersección que esté más cerca del observador determina cuál es el objeto visible.

(2): Investigador de “Gráficos en Computación” co-desarrollador de RenderMan. Actualmente es Vice Presidente de “Software Engineering” en “Pixar Animation Studios”.

(3): Algoritmo de muestreo aleatorio empleado para la simulación de sistemas de variables dependientes con muchos grados de libertad.

 

ILUMINACIÓN: PHOTON MAPPING

El concepto de Mapeado de Fotones “Photon Mapping”, fue introducido por Henrik Wann Jensen(1) en Junio de 1996. Debido a la necesidad de un algoritmo que fuera capaz de renderizar imágenes de geometría compleja con iluminación global y que pudiese manejar

cualquier tipo de geometría y “BRDF (Bidirectional Reflectance Distribution Function)”(2). El “Mapeado de Fotones” surgió como una alternativa a las técnicas de “Raytracing”. El fin era obtener una procedimiento equiparable al “Raytracing” pero evitando las complicaciones por ruido en la imagen.

El algoritmo emplea “Técnicas de Monte Carlo”, con el que buscara mantener la componente de radiación a lo largo de las distintas regiones de la escena. Se busca desligar el proceso de iluminación de la propia geometría de los objetos, evitando también la segmentación de la imagen. La información sobre la iluminación de la escena se almacenara como puntos en una estructura de datos global que denominaremos “Mapa de Fotones”. El almacenar tanto posición, dirección de incidencia de la luz, así como otros factores en cada uno de los puntos, posibilita de manera más flexible el manejo de superficies del tipo “BRDF” y el propio cálculo.

El “Mapa de Fotones” podría entenderse como una caché que contiene los distintos trazados direccionales de la luz dentro de una escena. Aunque podría usarse un método diferente para la estimación de la iluminación basando el cálculo en una estimación de densidad. El emplear la densidad trae como ventaja una disminución del error al generar la imagen. Además el procesado basado en estimaciones de densidad se procesa de manera mucho más rápida que un “Raytracing” totalmente cimentado en “Métodos de Monte Carlo”. Sin embargo al usar el estimador el resultado estará fuertemente condicionado al número de fotones, que se empleen en el procesado de la escena.

 

[ 15 Fotones ] [ 30 Fotones ] [ 100 Fotones ]

El mapa será construido en dos fases primero usando el “Trazado Fotónico” donde los fotones emitidos desde las luces serán almacenados al interactuar con las superficies del modelo. Tras obtener el mapa se calculara la “Radiación Estimada” que consistirá en la estimación de densidad de la luz radiada en un punto concreto de la escena.

_______________________________________________________________________

(1): Investigador Danés, conocido por desarrollar “Photon Mapping” como tema de su tesis doctoral.

(2): Función cuadrimensional que describe como la luz es reflejada en una superficie de carácter opaco. Como datos de entrada se toma la dirección de la luz entrante y saliente, ambas definidas con respecto a la normal. La función devuelve un ratio de radiación reflejada, con componente direccional respecto a la luz saliente, además de la irradiación incidente a lo largo de la superficie.

 

ILUMINACIÓN: RADIOSITY

Es un Algoritmo de iluminación global, usado principalmente en renderizado de gráficos. Dicho algoritmo es una función basada en el “Finite Element Method”(1) con el fin de resolver la “Rendering Equation”(2) para escenas de iluminación compuestas por superficies difusas.

Los métodos utilizados en “Radiosity” aunque posteriormente redefinidos en 1984 para el renderizado gráficos, fueron desarrollados en 1950 para abordar problematicas de transferencias de calor, y están contenidos en la “Theory of Thermal Radiation”(3). “Radiosity” hace uso de estos métodos ya que se basa en el cálculo de la cantidad de energía luminosa transferida a lo largo de una superficie.

 

Por otra parte, contrariamente a los algoritmos basados en el “Método de Monte Carlo” tales como “Path Tracing”, que tienen en cuenta todos los caminos recorridos por la luz. Este método, solo tendra en cuenta, aquellos caminos para los que la fuente de luz sea reflejada de manera difusa, un número finito de veces antes de llegar al observador. La problemática de usar este tipo de algoritmos, reside en que el cálculo del procedimiento es independiente de la posición relativa del observador. Con lo que el coste computacional, aumenta considerablemente.

 

[ Iteraciones del procesado de “Radiosity” ]

 

_______________________________________________________________________

(1): El “Finite Element Method (FEM)” es una técnica numérica para la búsqueda de soluciones aproximadas de “Partial Differential Equations (PDE)” tanto como para ecuaciones integrales. La solución se obtiene bien eliminando la ecuación diferencial completamente, o convirtiendo la ecuación diferencial parcial en un sistema de aproximación de ecuaciones diferenciales ordinarias, las cuales serán integradas de manera estándar usando técnicas de “Runge-Kutta”.

(2): Ecuación Integral, la cual define el equilibrio de “Radiancia Espectral”(4) que fuga de un punto dado como la suma de Radiancia Emitida y Radiancia Reflejada bajo “geometric optics aproximation”. Fue introducida de manera simultanea en “Computer Graphics” por David Immel y James Kajiya en 1986.

(3): Se define Radiación Calórica como una de tipo Electromagnético con una longitud de onda en el rango de 0.1 – 100 “Microns”, el cual abarca el espectro de luz visible.

(4): Los cuerpos calientes, emiten radiación térmica en todo el espectro electromagnético. Si se mide la radiancia de un cuerpo para todo el espectro de frecuencias, se obtiene la “Radiancia Espectral” del cuerpo.

 

SOMBREADO: INTRODUCCIÓN

El proceso de “Sombreado” o Shading dentro del contexto de “Gráficos en Computación” implica la simulación y más concretamente el cálculo, de como los objetos se comportan cuando son iluminados por una fuente de luz. Dado que generalmente esto, afecta a la especularidad, reflexión, transparencia, etc de los objetos sobre los que se aplica, dicho procesado variara en función de la técnica empleada.

 

SOMBREADO: PIXEL SHADER

Los "Pixel Shader", también denominado "Fragment Shader", es una técnica de sombreado, que permite la posibilidad de programar el segmento del pipeline gráfico que concerniente a la parte de textura y sombreado. El algoritmo recibe "MultiSample Pixel's" con valores de color, profundidad y textura. Aunque también, puede recibir información sobre las normales. El "Pixel Shader" fundamentalmente realiza cálculos sobre el color del Píxel para aplicarle un factor de iluminación, "Bump Maps", sombreado, iluminación especular... Así mismo puede realizar modificaciones en el Píxel y alterar la profundidad en el "Z-Buffer".
De todos modos el "Pixel Shader" necesita operar sobre conjuntos y no sobre Pixel's de manera individual, ya que necesita conocer la geometría de la escena. Además este Shader necesita ser soportado por el Hardware.

 

SOMBREADO: VERTEX SHADER

El “Vertex Shader”, es una función de procesamiento gráfico usada para el tratamiento de objetos en un entorno 3d, mediante la aplicación de operaciones matemáticas a los vértices presentes en la escena. Dichos vértices serán tratados solo una vez y uno a uno. Por ejemplo, un vértice siempre estará definido por su posición dentro de un entorno 3d, aunque también podría ser definido por su color, textura...

El tratamiento al que se someten los vértices al aplicarles el Shader, no cambia los tipo de datos que se emplea para definirlos. Simplemente sus valores fluctuaran, de tal manera que el vértice que ya ha sido procesado, contendrá variaciones en sus valores de color, textura o incluso posición.

 

SOMBREADO: GEOMETRY SHADERS

Los “Geometry Shaders” son un tipo relativamente nuevo de Shader, empleado en efectos de “Geometry Tessellation”(1) y “Shadow Volume Extrusion”(2). Han sido introducidos en Direct3D 10 y OpenGL 3.2. Este tipo de shader al contrario que el “Vertex Shader”, sí puede generar nuevas primitivas, tales como puntos, lineas, polígonos. Siempre condicionado a aquellas primitivas presentes en el “Graphic Pipeline”.

Esta técnica se aplica después del “Vertex Shader”. El algoritmo recibirá un conjunto de primitivas, con información de adyacencia. Suponiendo un modelo basado en polígonos, su primitiva seria el triangulo, y por consiguiente los tres vértices que conforman el mismo, son el conjunto de entrada del “Geometry Shader”. En este momento el Shader devolverá cero o mas primitivas, que serán rasterizadas, y en última instancia procesadas por el “Pixel Shader”. La ventaja de este tipo de procesado, se ve clara cuando se quiere aplicar modificaciones a un “Mesh”(3); donde los puntos de control de las curvas, se le pasan como argumento al algoritmo. Que dependiendo, de la complejidad de la modificación requerida, podría automáticamente generar lineas extra, con las que proporcionar una mejor aproximación de la curva.

_______________________________________________________________________

(1): "Tessellation" o "Tilling" del plano es un patrón de figuras planas que llenan el plano sin superposiciones y espacios.-

(2): Técnica empleada para añadir sombras a una escena. Propuesta por "Frank Crow" en 1977 como la geometría con la que describir una región ocluida debido a una fuente de luz.

 



Bibliografia

Polígonos:

http://www.toymaker.info/Games/html/pixel_shaders.html#1

http://en.wikipedia.org/wiki/Polygon_mesh

http://en.wikipedia.org/wiki/Polygonal_modeling