Radiosidad en Multiprocesadores

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Radiosidad en Multiprocesadores"

Transcripción

1 Universidad de Málaga Departamento de Arquitectura de Computadores Tesis Doctoral Radiosidad en Multiprocesadores Gonzalo Cerruela García

2

3 A mis padres y familiares, con todo mi amor. iii

4 iv

5 INDICE Introducción xi Capítulo 1. Fundamentos Físico Matemáticos de la Radiosidad Definiciones Energía Radiante Flujo Radiante Exitancia radiante e irradiancia Ángulo sólido Intensidad radiante Radiancia Dependencia con la longitud de onda Función de reflectancia bidireccional (BRDF) Función de visibilidad y de ray-casting. 11 vii

6 1.2. El Problema de la Iluminación Global Ecuación de Representación (Rendering) Flujo Radiante Operadores lineales de Transporte Radiosidad Transformación de la ecuación de radiosidad en un sistema de ecuaciones Cálculo de los Factores de Forma Métodos analíticos Métodos de Proyección Método de ray-casting Solución numérica del sistema de ecuaciones de radiosidad Métodos directos Métodos iterativos Métodos aproximados Conclusiones. 56 Capítulo 2. Computación Paralela 2.1. Introducción Sistemas Paralelos: Organización y Arquitectura Clasificación clásica Clasificación de acuerdo a la memoria Modelos de programación Computadores utilizados en nuestras aplicaciones Multiprocesador CRAY T3E Multiprocesador Origin Medidas de rendimiento en multiprocesadores Conclusión. 77

7 Radiosidad en Multiprocesadores.. Capítulo 3. Radiosidad Progresiva: Paralelización Introducción Método Progresivo Diseño del algoritmo de radiosidad progresiva Método de sobrerelajación Radiosidad progresiva en multiprocesadores Trabajos Previos Implementación en máquinas de memoria distribuida Implementación en máquinas de memoria compartida Conclusión. 109 Capítulo 4. Método Jerárquico de Solución de la Radiosidad Radiosidad Jerárquica Relación entre la Radiosidad jerárquica y el Problema de los N cuerpos Radiosidad Jerárquica en dos niveles Limitaciones de la jerarquía de dos niveles Jerarquía Multinivel Cálculo de visibilidad acelerado usando árboles BSP Algoritmo de radiosidad jerárquica Radiosidad Jerárquica en Multiprocesadores Trabajos previos Algoritmo paralelo Coherencia Localidad de Datos Balance de carga. 131 ix

8 Evaluación Resultados Experimentales Conclusiones. 140 Conclusiones y Principales Aportaciones. 141 ANEXO I. 145 ANEXO II. 153 Bibliografía. 167

9 Introducción INTRODUCCION El modelado y representación asistido por computador de interiores de edificios requieren sofisticadas técnicas para la visualización de entornos reales. La flexibilidad y la naturaleza interactiva de las aplicaciones de simulación por computador las convierten en herramientas ideales para la experimentación con un mínimo coste. Los sistemas de diseño asistidos por computador normalmente combinan el modelado de la geometría de sólidos con aplicaciones para la visualización de los mismos. El modelado de sólidos permite al diseñador construir una representación que define la forma y estructura de los objetos o entorno que está siendo diseñado. Por otra parte, los parámetros de iluminación, color y texturas de las superficies de los objetos se usan en la fase de rendering, en la que se realiza el sombreado y su visualización en la pantalla del computador del modelo sólido. Una consideración muy importante en el modelado arquitectónico es una representación adecuada de la iluminación, ya que la imagen del modelo mostrada en la pantalla del computador debe parecer convincente. El proceso de representar imágenes fotorrealistas es conocido como síntesis de imágenes, y la verosimilitud de estas imágenes dependerá fundamentalmente de la exactitud del modelo xi

10 Radiosidad en Multiprocesadores de iluminación que se utilice en su representación en la pantalla del computador. Buscando un mayor realismo en la síntesis de imágenes, los modelos de iluminación han evolucionado desde los simples sombreados planos o constantes y métodos de interpolación, como el sombreado de Goraud [Gor71]; hasta los complejos modelos realistas en los que los colores y sombras de las superficies dependen de los procesos físicos de intercambio de energía en el entorno. Los modelos de iluminación local, denominados también en ocasiones modelos de reflexión, simulan la reflexión de la luz de una superficie, considerando las fuentes de luz y las propiedades de la superficie de forma aislada al resto de superficies que forman el entorno. El modelo de Phong [Pho75] es un simple ejemplo de un modelo de iluminación local que incorpora reflexiones especulares, mientras que el modelo He [HTSG91] y el modelo de Cook y Torrance [CT81] son físicamente más rigurosos, teniendo en cuenta la energía reflejada por un amplio grupo de superficies. Los modelos de iluminación global simulan la interacción de energía en el entorno, entre todas las superficies y entre las fuentes de luz y las superficies. Un ejemplo de los modelos de iluminación global son los método de ray-tracing, radiosidad, y métodos híbridos, así como sus extensiones [GTGB84]. En general, mientras mayor sea la exactitud desde el punto de vista físico del modelo de iluminación, mayor será el realismo de las imágenes que éste genera, y mas costosa será la simulación del mismo. La elección del modelo de iluminación más adecuado depende de la aplicación. El modelo de iluminación global es utilizado principalmente para el diseño arquitectónico, donde el balance de energía, los detalles del color y la iluminación son de mucha más importancia que la fidelidad en la dimensiones (escala) de las superficies. Los método de ray-tracing y radiosidad están basados fundamentalmente en las leyes de la óptica geométrica. La radiosidad incorpora además los principios de la termodinámica que gobiernan el balance de energía en un entorno cerrado. En la práctica, en ambos se emplean consideraciones para la simplificación, y dependen de algunos parámetros no físicos. Ambos métodos son resueltos numéricamente, empleando técnicas de elementos finitos en el caso de la radiosidad, mientras en el ray-tracing se utiliza el muestreo de todos los puntos que forman la imagen. El ray-tracing reproduce principalmente el brillo especular y los efectos de transparencias, mientras que la radiosidad tiene en cuenta la sutileza y la mezcla de los colores, así xii

11 Introducción como los efectos de penumbra. Independientemente de que el consenso general es que las imágenes generadas por el método de radiosidad dan una apariencia más realista, su mayor ventaja se centra en el hecho de que es una solución que no depende del punto de vista es decir, una vez que se determina la solución para el balance energía difusa, se pueden realizar cambios en la posición del punto de vista sin que se necesiten nuevas computaciones para calcular la iluminación. Esto lo convierte en el mejor modelo para las simulaciones en arquitectura. El método de radiosidad fue aplicado por primera vez en la síntesis de imágenes por Goral [GTGB84] en Basado en este trabajo inicial, Cohen [CG85] introdujo el método del hemicubo para calcular los factores de forma y Nishita [NN85] presentó un nuevo método para el sombreado, que permitió simplificar las computaciones entre las superficies a la hora de determinar la iluminación en entornos complejos. Cohen [Coh85] continuó las investigaciones sobre el método original, incorporando una técnica para la subdivisión adaptativa que mejora la precisión en los detalles del sombreado. Se realizaron también extensiones del método de radiosidad para tener en cuenta las características del medio y las reflexiones no difusas [RT87], [WCG87]. En 1988, Cohen [CCWG88] introdujo una reformulación del método, basada en el refinamiento progresivo, que reduce significativamente el tiempo necesario para mostrar las imágenes iniciales en la pantalla del computador. Esta técnica permite obtener una imagen intermedia basada en una solución aproximada, que continuamente se va mejorando hasta que se alcanza la convergencia. En 1989 se introdujeron extensiones del método de la radiosidad progresiva [SP89], para tener en cuenta reflectores no difusos. En 1990, Hanrahan [HSA90] presentó una reformulación jerárquica del método de radiosidad, que reduce su complejidad y establece nuevas herramientas para controlar la precisión en la solución numérica. Las reformulaciones jerárquicas fueron extendidas también para incorporar reflectores no difusos [AH93]. Actualmente los método progresivos y jerárquicos constituyen un fértil campo para la investigación. El principal inconveniente de cualquier algoritmo de radiosidad sigue siendo su alto coste computacional; por esta razón el principal objetivo de nuestro trabajo está orientado a la reducción del coste computacional de estos algoritmos, utilizando para ello estrategias y las arquitecturas de procesamiento paralelo. Son varios los trabajos que aplican las técnica de procesamiento paralelo al caso partic- xiii

12 Radiosidad en Multiprocesadores ular de la radiosidad. Estos trabajos se pueden dividir de acuerdo con la arquitectura paralela utilizada en tres grupos. El primero formado por estaciones de trabajo especializadas en gráficos, conectadas por una red de área local. El segundo lo forman estaciones de trabajo basadas en arquitecturas multiprocesadoras de memoria compartida, y el tercero en arquitecturas masivamente paralelas, en las cuales cada procesador tiene su propia memoria local y la comunicación se realiza utilizando paso de mensajes La presente memoria resume el esfuerzo realizado en el estudio de los principales avances realizados hasta la actualidad y expone nuestras aportaciones para la obtención de algoritmos más eficientes. Su organización es la siguiente: En el capítulo 1 se detallan los conceptos básicos implicados en este trabajo, haciendo énfasis en los aspectos físicos - matemáticos del método de radiosidad. Se presenta además un estudio de las técnicas desarrolladas para el cálculo de los factores de forma, necesarias en cualquier algoritmo de radiosidad. Por último, se ilustran diversas técnicas para la solución del sistema de ecuaciones asociado al problema de la radiosidad. Las principales aportaciones de este capítulo se han publicado en [MCB97b][BDCea98]. En el capitulo 2 se realiza un análisis de las diversas arquitecturas paralelas existentes, y se detallan las principales características de las máquinas paralelas utilizadas en los experimentos y de las medidas utilizadas para analizar el rendimiento de los algoritmos propuestos. El capítulo 3 presenta el método de radiosidad progresiva, y los nuevos algoritmos paralelos que hemos desarrollado para él, así como los resultados experimentales obtenidos en diferentes arquitecturas multiprocesadoras. Algunos resultados de este capítulo han sido publicados en [CGB97a][CGB97b][BCea97][MCB97a]. En el capítulo 4 se presenta el método jerárquico para la solución de la ecuación de radiosidad, y nuestra solución a su paralelización para máquinas de memoria distribuida, con diferentes distribuciones de datos. Se termina presentando los resultados obtenidos, algunos de los cuales se publicaron en [BCea98][BCTZ98]. Finalmente se hace una síntesis de las principales aportaciones de esta tesis, así como un resumen de las líneas de investigación que se han iniciado a partir de ella. Dado que el objetivo fundamental de este trabajo se ha centrado en la solución del problema de la iluminación global utilizando el modelo de radiosidad y en la aplicación de las técnicas de procesamiento paralelo para obtener algoritmos más eficientes; se incorpora un xiv

13 Introducción anexo en la memoria, donde se detallan todas las fases necesarias para realizar un programa para la representación (rendering) de entornos virtuales utilizando el modelo de radiosidad. Además se incorpora un segundo anexo donde se detalla la implementación de los principales algoritmos para el cálculo de los factores de forma. xv

14 Radiosidad en Multiprocesadores xvi

15 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad CAPÍTULO 1. FUNDAMENTOS FÍSICOS Y MATEMÁTICOS DE LA RADIOSIDAD. En este capítulo se realizará una descripción formal de los aspectos relacionados con el transporte de la luz, los cuales son de interés cuando se resuelve el problema de la iluminación global. Detallaremos diferentes conceptos y unidades utilizadas en iluminación. Para las notaciones y símbolos usaremos la simbología y unidades que comúnmente se utilizan en la literatura, así como los empleados en el campo de la radiometría y la fotometría. 1

16 Radiosidad en Multiprocesadores 1.1. Definiciones La luz es una radiación electromagnética que se encuentra dentro de la longitud de onda visible por el ojo humano. En general la energía luminosa es función de la posición, la longitud de onda, la fase, la polarización y el tiempo Energía Radiante. La unidad básica de energía luminosa utilizada en iluminación global es la energía radiante Q, medida en Julios. Por ejemplo, si tomamos el modelo de partículas [AK90], cada partícula puede transportar un numero determinado de julios de energía proporcionales a su frecuencia Flujo Radiante. La energía que incide o abandona una superficie por unidad de tiempo es llamada flujo radiante Φ, y se expresa en watios: (1.1) El flujo radiante es la unidad de medida más utilizada en los algoritmos de iluminación global. Puesto que sólo estamos interesados en analizar el problema una vez que se haya llegado a una situación de equilibrio en el transporte de la energía luminosa, normalmente no se consideran distribuciones dependientes del tiempo. Φ = dq dt Exitancia radiante e irradiancia. Otras unidades útiles de medida son el flujo por unidad de área ( da) que incide, o abandona, una superficie. Respectivamente, son llamados irradiancia ( E ) y exitancia radiante ( R ). La exitancia radiante es llamada radiosidad en el contexto de la iluminación global, y puede representarse por B (según Cohen [Coh85]), M (según Ashdown [Ash94]), o R (según 2

17 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad W Glasnner [Gla95]) y se expresa en De esta forma se puede definir que m 2 E = M = R = B = dφ da (1.2) Ángulo sólido Las direcciones en un espacio vectorial euclidiano se puede representar como puntos o como vectores. Sin embargo, en el contexto de iluminación global las direcciones se representan comúnmente definiendo una esfera que rodea un punto de una superficie; en la práctica solo tiene sentido considerar las direcciones correspondientes a una misma cara de la superficie, y por tanto se utiliza sólo un hemisferio sobre dicho punto. Este hemisferio sobre un punto x se denota como Ω x. Cada dirección se puede definir por dos ángulos θ y ϕ, utilizando el sistema de coordenadas esféricas. Este sistema de coordenadas es relativo al vector normal (siendo x un punto de la superficie), y a un eje a, seleccionado de forma aleatoria y desde donde ϕ es medido. Se define además un diferencial de ángulo sólido alrededor de una dirección Θ como dω Θ, expresado como sen( θ)dθdϕ. La figura Figura 1.1 (a) muestra su representación n x y superficie dirección xy n x θ dirección Θ n y ángulo sólido dωθ θ y r xy y da y ángulo sólido dω xy x ángulo sólido dω Θ = senθdθdϕ x dirección Θ (a) a ϕ (b) Figura 1.1 Ángulo sólido. (a) Expresado en coordenadas esféricas. (b) Expresado en función de un diferencial de área de superficie. El diferencial de ángulo sólido se puede expresar en función de un diferencial de área de superficie da y, visible en toda la dirección del diferencial de ángulo sólido como se muestra en la Figura 1.1 (b), tal que: 3

18 Radiosidad en Multiprocesadores cosθ y da y dω Θ = dω xy = r xy (1.3) Intensidad radiante. El flujo se puede medir también por unidad de ángulo sólido. Esto es muy útil cuando queremos describir la cantidad de flujo que llega o sale de un punto de una superficie. Esta W cantidad se puede medir con el término de intensidad radiante que se expresa en ---- (wats/ sr stereoradian), y se define como: I = dφ dω (1.4) Radiancia. Podemos combinar las mediciones de flujo por unidad de área y por unidad de ángulo sólido en una única magnitud. La potencia que incide o abandona un diferencial de superficie da en una cierta dirección, por unidad de ángulo sólido dω, por unidad de área proyectada da perpendicular a la dirección del flujo, es llamada radiancia, y es representada por L. Por tanto: L de d 2 Φ = = dω dωda = d 2 Φ dωdacosθ (1.5) siendo θ el ángulo entre la normal a la superficie da y la dirección dω que se está considerando. W La radiancia se expresa en , y de forma intuitiva puede ser descrita como la sr m 2 intensidad percibida por un observador o detectores (por ejemplo cámaras); para los que la percepción de la intensidad luminosa depende del tamaño de las superficies o de la apertura del ángulo sólido. Por ejemplo, consideremos dos superficies de áreas 10m 2 y 1m 2, respectivamente, cada una de las cuales emite 1000 watios. A ojos de un observador la segunda superficie parece más brillante, dado que tiene una mayor cantidad de energía por unidad de 4

19 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad área. Esta misma consideración se puede hacer para variaciones del ángulo sólido. Dado que la radiancia en un punto x está definida en una cierta dirección Θ se debe tener cuidado con las notaciones utilizadas, para distinguir claramente entre la radiancia incidente y la emitida. Por ello utilizaremos las siguientes notaciones: Lx ( Θ) : radiancia que abandona un punto x en la dirección Θ. Lx ( Θ) : radiancia que incide en un punto x en la dirección Θ. Lx ( y) : radiancia que abandona un punto x hacia el punto y. Lx ( y) : radiancia que incide en un punto x desde el punto y. La radiancia es simétrica, y por tanto se cumple que Lx ( y) = Ly ( x), suponiendo la ausencia de pérdidas por la participación del medio de transporte. Esta afirmación se puede demostrar considerando por ejemplo dos diferenciales de área de dos superficies y calculando el transporte de energía entre ellas. En la Figura 1.2 se muestra gráficamente la geometría de este problema. n x θ x n y θ y r xy y da y x da x Figura 1.2 Transporte de energía entre dos diferenciales de superficie Según la ecuación (1.1), el flujo total que abandona el diferencial de superficie llega a otro diferencial de superficie da y se puede escribir como: da x y d 2 Φ = Lx ( y) cos( θ x )dω da xy x (1.6) donde xy es la dirección desde x hacia y, y dω xy el ángulo sólido desde el cual da y es visto desde x. La potencia que incide en el área da y procedente del área da x se puede expresar como: d 2 Φ = Ly ( x) cos( θ y )dω da yx y (1.7) Si consideramos que no hay pérdida de energía entre los diferenciales de superficie y que no existen fuentes de luz externas que aumenten la energía que llega a da y, el principio de conservación de la energía nos dice que toda la energía que abandona la superficie dax en 5

20 Radiosidad en Multiprocesadores dirección a da x debe llegar a la superficie da y, es decir: Lx ( y) cos( θ x )dω da xy x = Ly ( x) cos( θ y )dω da yx y (1.8) Sustituyendo la expresión del ángulo solido se obtiene: cos( θ y )da y cos( θ x )da x Lx ( y) cos( θ x ) da x = Ly ( x) cos( θ y ) da y r xy 2 r xy 2 (1.9) donde r xy es la distancia entre x e y. De aquí es inmediato que: Lx ( y) = Ly ( x) (1.10) La expresión (1.10) significa que la radiancia no se atenúa con la distancia, y permanece constante durante toda su trayectoria. Dado que la mayoría de los receptores de luz, (como el ojo humano, o las cámara) son sensibles a los cambios de radiancia, esta invarianza explica por qué el color percibido o el brillo de un objeto no cambia con la distancia. Es importante remarcar, sin embargo, que todas estas afirmaciones dejan de tener validez cuando el medio que participa en el transporte puede absorber o emitir energía. La conclusión más importante de esta propiedad es que basta conocer la distribución de radiancia en todos los puntos de una superficie para conocer su distribución de radiancia en toda la escena tridimensional Dependencia con la longitud de onda. Los términos definidos anteriormente dependen no solo de la posición y la dirección, sino también de la longitud de onda de la energía luminosa considerada. Dado que, los valores de radiancia son especificados normalmente para todos los valores posibles de la longitud de onda, los términos definidos anteriormente se considerarán como funciones integrales sobre el espectro completo de la luz visible. En las próximas secciones esta dependencia será considerada de forma implícita. 6

21 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Función de reflectancia bidireccional (BRDF). Los materiales interactúan con la luz de diversas formas, y diferentes materiales tienen diferente apariencia para las mismas condiciones de iluminación. Uno de los aspectos más importantes a tener en cuenta es la especularidad, así por ejemplo, algunos materiales parecen espejos mientras otros parecen superficies difusas. Las propiedades de reflectividad de una superficie son descritas por una función de reflectancia, que modela el comportamiento de la interacción de la luz reflejada en dicha superficie. La función de reflectancia bidireccional (BRDF) es la expresión más general de la reflectividad de un material. De forma simplificada podemos decir que la BRDF es la variación de la radiancia reflejada respecto a la irradiancia incidente. En forma más rigurosa, se define la BRDF (denotada por fr( x, Θ i Θ r )) como el cociente entre el diferencial de radiancia reflejado en una dirección y la irradiancia incidente a través de un ángulo sólido en la dirección. Usando la representación geométrica de la Figura 1.3 Θ i Θ r dl( x Θ r ) fr( x, Θ i Θ r ) = = de( x ) Θ i dl( x Θ r ) Lx ( Θ i ) cos( θ i )dω Θi (1.11) Θ r dl( x Θ r ) n x Θ i θ r θ i de( x ) Θ i x Figura 1.3 Representación Geométrica de la BRDF La BRDF puede tomar cualquier valor positivo, y varía con la longitud de onda. Además tiene algunas propiedades interesantes, como: 1) El valor de la BRDF no varía si intercambiamos las direcciones de incidencia y de 7

22 Radiosidad en Multiprocesadores salida. Esta propiedad se denomina reciprocidad de Helmholtz, y significa que el camino que sigue la luz puede ser intercambiado, es decir que: fr( x, Θ i Θ r ) = fr( x, Θ r Θi) (1.12) En adelante se usará una doble flecha en la notación de la BRDF ( fr( x, Θ i Θ r ) ) para indicar la posibilidad de intercambiar libremente ambas direcciones. 2) En general, la BRFD es anisótropa, de forma que si la superficie es rotada sobre el vector normal a la misma, el valor de fr cambiará. A pesar de ello existen muchas superficies que son isótropas, en las cuales el valor de fr no depende de la orientación. 3) El valor de la BRDF para una dirección incidente específica es independiente de la posible presencia de irradiancia para otros ángulos de incidencia. Por ello la BRFD se puede definir como una función lineal respecto a todas las direcciones incidentes. Para conocer el total de radiancia reflejada en la dirección distribución de irradiancia sobre el hemisferio de incidencia ( para una determinada ) alrededor de un punto x de la superficie tendremos que integrar la ecuación (1.11) sobre el hemisferio: Lx ( Θ r ) = fr( x, Θ Θ r )de( x Θ) Ω x θ r Ωx = Ω x dω Θ fr( x, Θ )Lx ( Θ) cos( n x, Θ) Θ r (1.13) donde es el coseno del ángulo formado por el vector normal al punto x ( ) y el ángulo de incidencia Θ. Nótese que el ángulo de incidencia varía en n x cos( n x, Θ) el hemisferio Ω x. Esta es la ecuación conocida como ecuación de reflectancia. Dependiendo de la naturaleza del material, éste puede presentar un aspecto de superficie difusa, especular, brillante, transparente, o una combinación de las anteriores, como muestra la Figura 1.4. A continuación describiremos los tipos de BRDF más usados habitualmente: 8

23 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad = + + BRDF superficies difusas superficies especulares superficies brillantes Figura 1.4 Componentes de la BRDF. a) Superficies difusas: Algunos materiales reflejan la luz de una forma uniforme sobre toda el hemisferio de salida. En ellos, dada una distribución de irradiancia, la energía reflejada es independiente de la dirección de la energía incidente. b) Superficies especulares: Un material es considerado como reflector especular perfecto si sólo refleja luz en una dirección específica tal que, siguiendo la ley de Snell, el ángulo incidente sea igual al ángulo reflejado respecto a la normal a la superficie. Una superficie perfectamente especular es un modelo matemático ideal, en el que la BRDF es cero para todas las direcciones de salida menos una, en la que toma valor infinito. c) Superficies brillantes: Muchas superficies no son reflectores difusos ideales, ni reflectores especulares ideales, sino que actúan como una combinación de ambos. Su BRFD es difícil de modelar con formulas analíticas. d) Superficies transparentes: Hablando estrictamente, la BRDF es definida sobre todas las direcciones de la esfera ( 4π estereoradianes) alrededor de un punto de la superficie. Esto es de suma importancia cuando consideramos superficies transparentes, ya que éstas pueden reflejar luz sobre toda la esfera. El tipo de BRDF transparente puede también tener un comportamiento difuso, especular o brillante dependiendo de las características de translucidez del material. Modelos empíricos de la BRDF. En los algoritmos de iluminación global es habitual usar modelos empíricos para calcular la BRDF. Sin embargo, es necesario observar algunas precauciones a la hora de utilizar esos 9

24 Radiosidad en Multiprocesadores modelos empíricos para poder lograr una buena representación de la BRDF. El principio de conservación de la energía impone que la cantidad total de potencia reflejada sobre todas las direcciones debe ser menor o igual que la potencia total que incide sobre la superficie. Para cualquier distribución de radiancia incidente L sobre el hemisferio total de potencia incidente por unidad de área de superficie es el total de irradiancia sobre dicho hemisferio: Ω x, el E = dω Θ Lx ( Θ) cos( n x, Θ) Ω x (1.14) El total de potencia reflejada M para todas las direcciones Ψ del hemisferio, se puede escribir como la suma de las contribuciones en todas las direcciones θ de incidencia: Ω x M = dω Θ dω Ψ fr( x, Θ Ψ)Lx ( Θ) cos( n x, Ψ) cos( n x, Θ) Ω x Ω x (1.15) De esta forma la BRDF satisface el principio de conservación de la energía en un punto de una superficie si para todas las posibles distribuciones incidentes la radiancia cumple que M E, o lo que es lo mismo : Ω x dω Θ dω Ψ fr( x, Θ Ψ)Lx ( Θ) cos( n x, Ψ) cos( n x, Θ) Ω x dω Θ Lx ( Θ) cos( n x, Θ) Ω x (1.16) Esta condición debe ser verdadera para cualquier función de radiancia incidente ( L i ) físicamente válida. Podemos simplificar la ecuación (1.16) para que la condición que debe cumplir la BRDF sea fácilmente verificable de forma estrictamente geométrica. Para ello introducimos la distribución de radiancia incidente Lx ( Θ) = L i δθ ( Ψ) donde δ es la función delta de Dirac. De esta forma obtendremos la condición: Ω x dω Ψ fr( x, Θ Ψ) cos( n x, Ψ) 1, Θ Ω x (1.17) La ecuación (1.17) es una condición necesaria para la conservación de la energía ya que expresa la desigualdad para una distribución dada de la radiancia incidente. Por otra parte es 10

25 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad también una condición suficiente, puesto que la distribución de radiancia incidente desde dos direcciones diferentes no influye en el valor de la BRDF, siendo el principio de conservación de la energía válido para cualquier combinación de valores de la radiancia incidente. Asímismo cualquier modelo empírico para la BRDF debe cumplir el principio de reciprocidad de Helmholtz. Esto es de suma importancia para muchos algoritmos, y en especial para aquellos que calculan la distribución de energía luminosa por caminos que comienzan por las fuentes de luz y al mismo tiempo por caminos que comienzan por la posición del obsevador. Un análisis más detallado sobre los modelos físicos para la BRDF se puede encontrar en el artículo de Robert Lewis et.al. [Lewi93], en el que se discuten diferentes modelos para la BRDF como los de Cook-Torrance, Minnaert y Neumann-Neumann Función de visibilidad y de ray-casting. Un concepto muy importante utilizado en los algoritmos de iluminación global es la determinación de visibilidad, ya que nos permite determinar que superficies pueden intercambiar energía entre sí. Dado dos puntos arbitrarios x e y en al espacio tridimensional, la función de visibilidad Vxy (, ) toma valor 1 dependiendo si los puntos son mutuamente visibles entre sí, o sea, entre ellos no se interpone ningún otro objeto o puntos de otra superficie; y toma valor 0 en caso contrario. Dado un punto x y una dirección Θ, normalmente interesa encontrar el punto de la superficie más cercana a x siguiendo una dirección (Figura 1.5), para una determinada geometría de la escena tridimensional. Este punto más cercano puede ser considerado como una función de x y Θ. Denominada función de ray-casting, esta función es denotada como rxθ (, ) y se define formalmente con la ecuación (1.18). Θ rxθ (, ) = x+ t min Θ donde t min = min{ t > 0 : (( x+ t Θ) A) } (1.18) rxθ (, ) superficie A Θ x Figura 1.5 Función de ray-casting. 11

26 Radiosidad en Multiprocesadores 1.2. El Problema de la Iluminación Global Ecuación de Representación (Rendering). El problema de la iluminación global es, básicamente, un problema de transporte. La energía emitida por las fuentes de luz es transportada por medio de reflexiones y refracciones en el entorno tridimensional. En nuestro análisis no consideraremos la dependencia con el tiempo, pues sólo nos interesa la distribución en equilibrio de la energía en el entorno. El ojo humano es sensible a los valores de radiancia; por tanto, para obtener imágenes fotorrealistas, nuestro objetivo se centra en calcular los valores de la radiancia sobre todas las áreas de interés. La forma genérica de estas áreas de interés puede variar sustancialmente dependiendo del nivel de exactitud deseado. Así, en los algoritmos de ray-tracing se definen estas áreas como las superficies vistas a través de un pixel, mientras en los algoritmos de radiosidad se suelen definir como trozos (patches) de superficies, con un hemisferio de reflexión como componente direccional. En la Figura 1.6 se representan estos dos grupos de superficies, que son los más utilizados en los algoritmos de cálculo de la iluminación global. Direcciones y grupos de puntos de la superficie correspondientes a un pixel Puntos de la Superficie Pixel Ángulo Sólido Punto de Vista Pantalla Virtual (a) Patches de la Superficie Ángulos Sólidos (b) Puntos de la Superficie Figura 1.6 Áreas de muestreo. (a) ray-tracing, (b) radiosidad. 12

27 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad La ecuación utilizada para describir el problema de la iluminación global es denominada ecuación de representación (rendering), y fue desarrollada por Kajiya [Kaj 86]. Esta ecuación se basa en la ecuación de reflectancia (1.13), pero añade como función de iniciación un término de emisión propia para los puntos de la superficie, que dota al entorno de energía inicial. Las superficies que autoemiten son las fuentes de luz de la escena tridimensional. La radiancia que abandona un punto x en una dirección se puede escribir como: Lx ( Θ r ) = Le( x Θ r ) + dω Θ ( Lx ( Θ)fr( x, Θ Θ r )) cos( n x, Θ) (1.19) donde Le( x Θr ) es la energía autoemitida por el punto x si este pertenece a la superficie de una fuente de luz. La ecuación (1.19) nos dice que la radiancia emitida por un punto x en una dirección será igual a la radiancia autoemitida en ese punto y en esa dirección, más la radiancia incidente desde el hemisferio de iluminación y reflejada en x hacia la dirección 1.7 hace una representación gráfica de los componentes de esta ecuación. Ω x Θ r Θ r Θ r. La Figura Lx ( Θ) n x Lx ( ) Θ r Dominio de Integración Lx ( Θ) Le( x ) Θ r Lx ( Θ) Figura 1.7 Transporte de la radiancia según la ecuación (1.19). La ecuación de representación (rendering) suma las contribuciones de todas las direcciones incidentes sobre el hemisferio de iluminación. Sin embargo, en algunos casos es más conveniente integrar sobre todas las áreas de las superficies visibles de la escena, transformando el diferencial de ángulo sólido dω Θ en un diferencial de área de superficie da z, donde z son los puntos visibles más cercanos a x. En la Figura 1.8 se muestra una representación gráfica de esta transformación. 13

28 Radiosidad en Multiprocesadores z n z da z n x Θ r xz Θ dω Θ x Figura 1.8 Transformación del hemisferio en una superficie se integración. como: Sustituyendo entonces cos( n z, Θ)dA z dω Θ = r xz en la ecuación (1.19), ésta se reescribe Lx ( y) = Le( x y) + da z Lx ( z)fr( x, z y)gxz (, ) A x (1.20) donde Gxz (, ) = cos( n x, Θ) cos( n z, Θ)Vxz (, ) r xz (1.21) siendo la distancia entre los puntos x y z. Gxz (, ) es, pues, una función geométrica, que r xz expresa la capacidad de dos puntos en dos superficies (distintas) de intercambiar energía; con este fin se incluye la función de visibilidad Vxz (, ). Todas las ecuaciones que describen el transporte de radiancia son ecuaciones integrales recursivas [Gla95], con un dominio de integración fijo. Estas ecuaciones son llamadas ecuaciones de Fredholm de segundo orden, para las cuales generalmente no existe una solución analítica, por lo que deben ser resueltas numéricamente. En las ecuaciones (1.19) y (1.20) aparecen dos términos diferentes, la radiancia de salida y la radiancia incidente. Dado que la radiancia permanece constante durante su trayectoria se puede transformar la radiancia incidente en radiancia de salida, y viceversa. De esta forma es posible escribir la ecuación de representación con solo un término. Es posible obtener también para la ecuación de radiancia dos formulaciones, matemáticamente equivalentes, aunque presentan importantes diferencias en los algoritmos utilizados 14

29 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad para su solución. A continuación describiremos estas dos formulaciones, y sus formas de integración. 1 ) Radiancia de salida. Integración sobre el hemisferio. Podemos reemplazar la radiancia incidente en la ecuación (1.19) utilizando la propiedad de invariabilidad de la radiancia sobre todo su camino, e introducir una ecuación de ray-casting en dicha ecuación, como se indica en la Figura 1.9. Lx ( ) Θ r y 2 Ly ( 2 Θ) Dominio de integración y 1 Le( x ) Θ r Ly ( 1 Θ) y 3 x Ly ( 3 Θ) Figura 1.9 Transporte de la radiancia de salida. Integrando sobre el hemisferio. Lx ( Θ r ) = Le( x Θ r ) + dω Θ Ly ( Θ)fr( x, Θ Θ r ) cos( n x, Θ) (1.22) 2 donde y = r( x, Θ) es un punto en la dirección Θ a partir de x. 2 ) Radiancia de salida. Integración sobre las superficies. Se puede expresar la ecuación (1.22) integrando sobre todos los puntos de las superficies. En la Figura 1.10 se muestra gráficamente esta posibilidad. Ω x z Lz ( x) z Lz ( x) Lx ( y) Le( x y) z Dominio de integración x Lz ( x) Figura 1.10 Transporte de radiancia de salida. Integración sobre las superficies. 15

30 Radiosidad en Multiprocesadores La ecuación resultante es: Lx ( y) = Le( x y) + da z Lz ( x)fr( x, z y) G( x, z) A (1.23) donde A representa el conjunto de todas las superficies de la escena tridimensional. 3 ) Radiancia incidente. Integración sobre el hemisferio. También se puede transformar la ecuación (1.19) en una función que sólo dependa de la radiancia incidente, para lo cual debemos escribir la radiancia autoemitida por la superficie como radiancia incidente. Es fácil imaginar la radiancia incidente sobre una superficie, pero no la radiancia incidente proveniente de una fuente de luz. La Figura 1.11 a) muestra como la radiancia emitida por la fuente de luz es igual a la radiancia incidente sobre las demás superficies (Figura 1.11 b)). Fuente de Luz Fuente de Luz Lx ( Θ) Lx ( Θ) a) b) Figura 1.11 a) Radiancia emitida por la fuente de luz. b) Radiancia incidente sobre las demás superficies. LrxΘ ( (, i ) Θ) Lx ( ) Θ i Dominio de integración Le( x ) Θ i LrxΘ ( (, i ) Θ) LrxΘ ( (, i ) Θ) rxθ (, i ) Figura 1.12 Representación de la radiancia incidente. Integración sobre el hemisferio. 16

31 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad La ecuación transformada de esta forma y representada en la Figura 1.12 es: Lx ( Θ i ) = Le( x Θ i ) + dω Θ Ly ( Θ)fr( y, Θ i Θ) cos( n y, Θ) Ω y (1.24) donde y = r( x, Θ i ), es un punto en la dirección Θ i. 4 ) Radiancia incidente. Integración sobre las superficies. Aplicando las transformaciones de coordenadas para convertir el ángulo sólido sobre los puntos de las superficies emisoras, podemos obtener una ecuación que integra la radiancia incidente sobre todos los puntos de las superficies, que se muestra gráficamente en la Figura Lx ( y) z z Ly ( z) x Le( x y) Dominio de integración Ly ( z) z y Ly ( z) Figura 1.13 Transporte de radiancia incidente. Integración sobre las superficies. La ecuación resultante es: Lx ( y) = Le( x y) + da z Ly ( z)fr( y, z x)gyz (, ) A (1.25) Flujo Radiante. La solución ideal del problema de la iluminación global es poder encontrar todos los valores de la función de radiancia para todas las superficies en todas las direcciones relativas a todos sus puntos. Esto es imposible de lograr en la práctica, por lo que muchos algoritmos calculan el promedio de radiancia sobre un grupo específico de puntos y direcciones. Una posible forma de calcular esto es calcular el flujo radiante sobre dicho grupo. Así, los algoritmos de ray-tracing utilizan esta técnica para calcular el flujo de un determinado grupo a 17

32 Radiosidad en Multiprocesadores través de un pixel de la pantalla. Por su parte, es usual en los algoritmos de radiosidad calcular, sobre todo el hemisferio, el flujo que abandona la superficie de todo un elemento o patch. Si escribimos el conjunto de todos las superficies de la escena A y de todas las direcciones de un hemisferio de salida arbitrario Ω como el producto cartesiano A Ω, el problema de la iluminación global puede definirse como el cálculo del flujo radiante para un cierto conjunto continuo definido sobre A Ω. Podemos expresar el flujo radiante para todos los puntos de las superficies en términos de la radiancia, integrando la distribución de radiancia sobre todos los puntos visibles de la superficie y sobre las direcciones para las cuales dichos puntos son visibles,. De esta forma, S = A s Ω s A Ω representa el grupo de puntos y direcciones de interés, y el flujo radiante se puede expresar como: A s Ω s Φ( s) = da x dω Θ Lx ( Θ) cos( n x, Θ) A s Ω s (1.26) Introduciendo la función de visibilidad g = g( x, Θ), tal que: gxθ (, ) = 1, si (x,θ) S y VxrxΘ (, (, )) = 1 0, si (x,θ) S o VxrxΘ (, (, )) = 0 (1.27) Podemos eliminar la dependencia del dominio de integración con el grupo de puntos seleccionado, y obtener una expresión más general: Φ( s) = da x dω Θ Lx ( Θ)gxΘ (, ) cos( n x, Θ) A Ω (1.28) El promedio de radiancia asociado al grupo de puntos seleccionado se puede calcular con la ecuación (1.29): da x dω Θ Lx ( Θ) cos( n x, Θ) A Ω L s s promedio = da x dω Θ cos( n x, Θ) A s Ω s (1.29) En ocasiones, dependiendo de la geometría del conjunto S, el denominador de esta expresión puede calcularse analíticamente. En particular, este es el caso de los algoritmos de radiosidad. 18

33 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Operadores lineales de Transporte. En las secciones anteriores se han descrito las ecuaciones de transporte para la radiancia incidente y de salida, y las expresiones para el flujo, integradas sobre el hemisferio o sobre todas las posibles superficies de la escena. Las ecuaciones integrales recursivas que describen el transporte pueden escribirse de forma más concisa utilizando operadores lineales. La ecuación de reflectancia puede considerarse como un operador lineal que transforma una cierta distribución de radiancia incidente sobre todos los puntos y direcciones de las superficies en otra distribución, que nos da la radiancia reflejada después de la reflexión. Esta nueva distribución es, de nuevo, una función de radiancia definida sobre todo el entorno. Llamando L a la radiancia definida en el entorno A Ω y T al operador lineal de reflexión. T L es una nueva función definida sobre A Ω, que puede ser evaluada en ( x, Θ) como: T L( x Θ r ) = Ω x dw Θ LrxΘ ( (, ) Θ)fr( x, Θ Θ r ) cos( n x, Θ) (1.30) De esta forma la ecuación de reflexión se escribe: Lx ( Θ r ) = Le( x Θ r ) + T L( x Θ r ) (1.31) Mediante un cambio de variable es posible transformar el dominio de integración de la ecuación (1.30) en el conjunto A de todas las superficies. Haciendo esto, el operador T se define como: T L( x y) = da z Lz ( x)fr( x y)gxz (, ) A (1.32) y la ecuación de reflexión será: Lx ( y) = Le( x y) + TL( x y) (1.33) 19

34 Radiosidad en Multiprocesadores 1.3. Radiosidad. La radiosidad es un algoritmo de iluminación global, en el que se realizan las siguientes hipótesis sobre el entorno tridimensional y las superficies que lo forman[gor85]. 1 ) Todas las fuentes de luz son consideradas emisores difusos, y todas las superficies reflectores difusos. Estas dos consideraciones implican que los valores de radiancia de salida son independientes de las direcciones de salida, ya que la BRDF es constante para cada uno de los puntos de la superficie. Los datos a calcular son, por tanto, los valores de radiancia integrados sobre todo el hemisferio. 2 ) La integración es transformada en un problema de elementos finitos. El entorno entero es subdividido en patches (elementos de superficies), y se supone que todos los puntos que pertenecen a un mismo patch tienen la misma BRDF. De esta forma, el conjunto de todas las superficies de una escena puede escribirse como la unión de todos sus patches disjuntos, es decir: A = A i / ( i, j), A i A j = φ si i j i Transformación de la ecuación de radiosidad en un sistema de ecuaciones. La ecuación de radiosidad se deriva de la ecuación general de transporte de radiancia (ecuación (1.31)), donde Lx ( Θ) es una función definida en A Ω. Necesitamos por tanto obtener un sistema de ecuaciones lineales que facilite la computación; para ello es necesario proyectar sobre una base ortonormal del espacio A Ω [CW93]: Lx ( Θ) = Le( x Θ) + da z Lz ( x)fr( x)gxz (, ) A (1.34) En las siguientes subsecciones se describen en detalle tanto las funciones base como la deducción de la ecuación de radiosidad. 20

35 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Funciones base Las funciones base, denotadas por aproximar L( x Θ) y Le( x Θ) de la siguiente forma: donde n es el número total de funciones de base utilizadas. Ni( x, Θ), son un conjunto de funciones usadas para Lx ( Θ) L j N j ( x, Θ) 3 j = n1 (1.35) Aunque se pueden construir muchas bases distintas, las funciones de base más usadas son polinomios de bajo orden. Una solución utilizada frecuentemente es considerar constante la radiosidad sobre todo el patch. Un ejemplo son las bases constantes, que se definen como: n Le( x Θ) Le j N j ( x, Θ) j = 1 N i ( x, Θ) = 0 si x A i 1 si x A i (1.36) Donde la superficie de los patches está limitada por el área de los patches, para la que se calcula un solo valor de radiosidad. Es de destacar que las funciones de base no dependen de la dirección Θ, ya que estas funciones tienen simetría esférica (tienen el mismo valor independientemente de la dirección), y la siguiente propiedad de ortogonalidad: A d A x Ω Θ dω Θ N i ( x, Θ)N j ( x, Θ) cos( Θ, n x ) = πa i si i j 0 si i = j (1.37) Ecuación de radiosidad Si descomponemos la ecuación (1.34) utilizando cada una de las funciones de base 21

36 Radiosidad en Multiprocesadores Ni( x, Θ), se obtiene: A da x dω Θ Lx ( Θ)N i ( x, Θ) cos( Θ, n x ) Ω x = A da x dω Θ Le( x Θ)N i ( x, Θ) cos( Θ, n x ) Ω x + da x dω Θ da z Lz ( x)fr( x)gxz (, ) Ni ( x, Θ) cos( Θ, n x ), i. A Ω x A Sustituyendo Lx ( Θ) y Le( x Θ) igualdad anterior queda: por las aproximaciones de la ecuación (1.35), la A da x ω Θ L j N j ( x, Θ) d = A Ω x j = 1 Considerando las funciones base constante, esta expresión se puede simplificar si notamos que todas son cero, excepto sobre sus respectivos patches de superficies. Aplicando la condición (1.36) la igualdad se simplifica a: n n N i x, Θ da x ω Θ L ej N j ( x, Θ) d Ω x j = 1 n ( ) cos( Θ, n x ) N i x, Θ ( ) cos( Θ, n x ) + A x ω Θ A z L j N j ( z, zx) d fr( x)gxz (, ) d d A A Ω x j = 1 N i x, Θ ( ) cos( Θ, n x ), i Ai d A x Ω x dω Θ ( L i N i ( x, Θ) )N i ( x, Θ) cos( Θ, n x ) = A d A x Ω x dω Θ L ei N i ( x, Θ)N i ( x, Θ) cos( Θ, n x ) n + da x dω Θ da z L j N j ( z, zx)fr( x)gxz (, ) N i ( x, Θ) cos( Θ, n x ), i. j = 1 A i Ω x Aj 22

37 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Aplicando la propiedad de ortogonalidad en la ecuación (1.34), nos quedará: f ri (1.38) donde es igual a la BRDF (de tipo difuso) para el patch i, denotada por, y obtenida integrando la BRDF sobre todo el hemisferio, tal que: L ei es la radiosidad autoemitida por el patch i, y que puede ser calculada con la siguiente ecuación: n A i πl i = πa i L ei + πfr i L j da x da z Gxz (, ), i ρ i Ω x j = 1 = dω Θ fr i ( x) cos( Θ, n x ) = πfr i A i A j ρ i da x dω Θ L e ( x Θ)N i ( x, Θ) cos( Θ, n x ) A Ω L x ei = A i π (1.39) Dividiendo la ecuación (1.38) por πa i, obtenemos que: Definiendo F ij n da x da z Gxz (, ) A A L i = L ei + ρ i L i j j A i π j = 1, llamado factor de forma entre la superficie de los patches i y j, como: (1.40) da x da z Gxz (, ) A A F i j ij = A i π (1.41) la expresión (1.40) se escribirá: L i = L ei + ρ i L j F ij 3 (1.42) El cálculo de los factores de forma es el núcleo de cualquier algoritmo de radiosidad. El factor de forma, especifica la fracción de energía transferida del patch i al patch j; y es una constante adimensional, que depende solamente de la geometría de la escena [CW93]. La ecuación (1.42) es la ecuación de transporte de radiancia discretizada. Usando los operadores lineales, podemos introducir una notación abreviada, en la que: n j = 1 23

38 Radiosidad en Multiprocesadores donde T d n L i = L ei + ρ i L j F ij = L ei + T d L i j = 1 (1.43) es el operador lineal de transporte que trabaja sobre una distribución completa de coeficientes Li. De esta forma todo el problema de la radiosidad puede ser escrito como un sistema lineal de ecuaciones escribiendo la ecuación (1.43) para cada una de las i funciones de base, tal que: 1 ρ 1 F 12 ρ 1 F 1n L 1 L e 1 ρ 2 F 21 1 ρ 2 F 2n ρ 1n F n1 ρ n F n2 1 L 2 L n = L e 2 L e n (1.44) Para mantener la coherencia con la terminologia empleada con más frecuencia en la bibliografía sobre el método de radiosidad, realizaremos un cambio en la nomenclatura. La radiancia inicial L i (energía luminosa inicial de la escena) será denotada por E, y toma valores distintos de cero sólo para las superficies que actúan como fuente de luz. La radiancia reflejada por cada patch L (radiosidad) será denotada por R. Con esta notación podemos reescribir la ecuación (1.44) como: 1 ρ 1 F 12 ρ 1 F 1n R 1 E 1 ρ 2 F 21 1 ρ 2 F 2n ρ 1n F n1 ρ n F n2 1 R 2 R n = E 2 E n (1.45) Este sistema de ecuaciones necesita ser resuelto numéricamente; en secciones posteriores analizaremos las técnicas más utilizadas Cálculo de los Factores de Forma. Una vez realizada la formulación matemática del problema de la iluminación global y del método de radiosidad para la solución del mismo, nos centraremos en el estudio de diversos métodos para calcular los factores de forma. 24

39 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Los métodos desarrollados para calcular los factores de forma se pueden agrupar en tres grupos: los métodos analíticos, los métodos de proyección y los métodos de ray-casting. En esta sección describiremos su fundamento matemático y haremos un análisis comparativo de ellos Métodos analíticos. Sustituyendo la ecuación (1.21) en la expresión del factor de forma (1.41), y considerando que la radiosidad es constante sobre todo el patch y en todas direcciones, podemos obtener la siguiente expresión simplificada para dos patches i,j cualesquiera dentro de la escena tridimensional: F Ai, A j = A i A i A j θ i cos( ) cos( θ j ) πr 2 Vij (, )da j da i. (1.46) La ecuación del factor de forma cambia si consideramos patches de área finita o de área diferencial. Además, para dos patches i,j existe una relación de reciprocidad que tiene en cuenta si la transferencia es de i a j ó de j a i. En la Tabla 1.1 se resumen las distintas expresiones que puede tomar el factor de forma, y las relaciones de reciprocidad asociadas a las mismas. Patches diferencial a diferencial diferencial a finito finito a finito F Ai, A j Ecuación del Factor de forma F daj, da i F dai, A j = 1 = ---- A i A j A i A j cos( θ i ) cos( θ j ) = da πr 2 i cos( θ i ) cos( θ j ) πr 2 Vij (, )da j θ i cos( ) cos( θ j ) πr 2 Vij (, )da j da i F dai da j Relación de reciprocidad, da i = F daj, da da i j. da i F dai, A = A j j F Aj da i,. A i F Ai, A = A j j F Aj, A i Tabla 1.1 Factores de forma y relaciones de reciprocidad. Integral de contorno. La integral (1.46) puede expresarse en una forma más conveniente. Sparrow [Spa63a] 25

40 Radiosidad en Multiprocesadores observó que, aplicando el teorema de Stokes, se podía transformar la doble integral de área en una doble integral de contorno, bajo la restricción de que los patches que intervienen en el factor de forma sean totalmente visibles. Supongamos un infinitesimal de área da i localizado en ( x i, y i, z i ), tal que ( l i, m i, n i ) es el vector normal a ese punto y queremos calcular el factor de forma respecto a un patch de A j área finita. Si ( x j, y j, z j ) representa cualquier punto en el contorno C j de A j, y r es la distancia desde da i a este punto, Sparrow demostró que este factor de forma se podía escribir como: ( z j z i )dy j ( y j y i )dz j F dai, A j = l i πr 2 C z ( x j x i )dz j ( z j z i )dx j + m i πr 2 C z ( y j yz i )dx j ( x j x i )dy j + n i πr 2. C z Para dos elementos finitos A i y A j con sus respectivos contornos C i y C j el resultado es bastante más simple: F AA, j = ln( r)dx 2πA i dx j + ln( r)dy i dy j + ln( r)dz i dz j i C i C j (1.47) donde r es la distancia entre los puntos de cada contorno. La ecuación (1.47) es la base de los cálculos de factores de forma hecho por Goral [Gor85], y fue también utilizada por Nishita y Nakamae [NN85]. Si consideramos la transferencia de energía desde un diferencial de área a un polígono de área finita, la ecuación (1.47) adopta una forma más simple. Supongamos un polígono de n lados, con n vértices, V i, V ( i + 1),, V n. Llamemos T i al triángulo formado por da i, V i, V ( i + 1)mod( n), con normal S i (calculada como el producto escalar de dos de los lados del triángulo). La figura Figura 1.14 muestra esta geometría. 26

41 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad V ( i + 1) V i β i S i α i da i Figura 1.14 Geometría para calcular el factor de forma entre un diferencial de área y un polígono. Definimos entonces α i como el ángulo entre S i y el plano da i, y β i como el ángulo más cercano a da i del triángulo T i. El factor de forma viene entonces dado por la siguiente expresión: F dai, A j (1.48) En el caso que los patches no sean totalmente visibles, por existir un tercer patch intermedio que los oculta parcialmente, el anterior desarrollo deja de ser válido. Sin embargo, una solución es dividir sucesivas veces la superficie inicial, hasta que cada uno de los patches resultantes sea totalmente visible, o invisible, desde el diferencial de superficie. La Figura 1.15 muestra como se calcularía este caso. n 1 = β 2π i cosα i. i = 1 A j1 A j2 F dai, A j = F dai, A j1 + F dai, A j2 da i Figura 1.15 Solución para patches parcial o totalmente ocultos. 27

42 Radiosidad en Multiprocesadores Analogía de Nusselt. La analogía de Nusselt [Nus28] supone una semiesfera de radio unitario cuya base se encuentra centrada en da i, tal como se muestra en la Figura Trazando líneas desde da i A j hasta se puede proyectar el contorno de sobre la superficie de la semiesfera. Trazando paralelas a la normal n desde la proyección a la base de la semiesfera podemos hallar la proyección de j sobre dicha base. Si llamamos Ap al área de dicha proyección, el factor de forma se expresa como: A j F dai A j = Ap π (1.49) n j da j da i radio = 1 i Ap Figura 1.16 Geometría para la analogía de Nusselt. Para calcular el área Ap, supongamos que el patch es un diferencial, lo cual es válido si consideramos que el patch i es mucho más pequeño que el patch j. El ángulo sólido sustentado por da j visto desde da i será: dω = cosθ j da j r 2 i El ángulo sólido es igual al área de la proyección de da j proyección de esta área sobre la base de la semiesfera da: sobre la semiesfera unitaria. La dap = cosθ i dω = θ i cos cosθ j da j r 2 (1.50) Se puede obtener el área finita Ap integrando la ecuación (1.50) sobre el área finita que: A j, tal 28

43 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad finita A diferencia de la integral de contorno, la analogía de Nusselt no necesita que el área A j sea un polígono. Ap= A j θ i cos( ) cos( θ j ) πr 2 da j En el pasado, los ingenieros en iluminación [OB64], realizaban estas proyecciones y medían los valores del factor de forma para objetos de la vida real como ventanas, edificaciones, etc. Más recientemente Bian [Bia 92] mostraba como proyectar polígonos de n lados sobre la superficie de una semiesfera y calcular analíticamente su factor de forma. Sin embargo como se puede ver, las soluciones analíticas requieren complicados algoritmos de ocultamiento de superficies para determinar el factor de forma en entornos complejos, por lo que rápidamente se impusieron los algoritmos de integración numérica, los cuales se detallan a continuación Métodos de Proyección. Como hemos visto en la analogía de Nusselt, el factor de forma entre un área diferencial y un patch finito tienen mucho en común con el ángulo sólido. La idea básica de los métodos de proyección es construir una biblioteca de ángulo sólidos forma F dai Γ k, y precalcular los factores de asociados con cada ángulo sólido k. De esta forma, dado que para cualquier patch j podemos aproximar su ángulo sólido Γ j respecto a da i, y como los ángulos sólidos no se solapan, podemos unir elementos de la biblioteca, y sumar los factores de forma correspondientes a dichos elementos, de forma que: Γ B = Γ 1 Γ 2 Γ n F dai, B = F dai Γ 1 + F dai Γ F dai Γ n Dado que el ángulo sólido sustentado por el patch j respecto al i es el mismo para cualquier superficie de proyección, independientemente de la forma de dicha superficie, tal como se muestra en la Figura 1.17, los diversos métodos de proyección seleccionan superficies de proyección para las cuales se conozcan algoritmos de proyección eficientes. Γ k 29

44 Radiosidad en Multiprocesadores j A B C da i D Figura 1.17 Ángulo sólido de la superficie j para diferentes superficies de proyección (A,B,C). Para construir la biblioteca de factores de forma, usualmente llamada factores de forma delta; la superficie de proyección es inicialmente situada sobre una superficie diferencial imaginaria da i, y subdividida en n elementos disjuntos, tras lo cual se calcula el factor de forma para cada uno de estos elementos. Una vez creada esta biblioteca, para calcular el factor de forma de un determinado patch se proyecta sobre la superficie, se determinan los elementos cubiertos por la proyección, y se suman los factores de forma delta correspondientes. En las siguientes secciones se estudian los métodos de proyección más representativos: el método del hemicubo, y el método del tetraedro cúbico. Método del hemicubo. El método del hemicubo fue el primer método de proyección usado para generar gráficos por computador fotorrealistas. Desarrollado por Cohen y Greenbenrg [Coh85], rodea al patch diferencial con la mitad de un cubo, colocando la cara de mayor dimensiones sobre el patch diferencial, y las cuatro medias caras restantes a su alrededor. La Figura 1.18 muestra esta disposición 30

45 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Figura 1.18 Geometría de proyección para el método del hemicubo. El método del hemicubo es un ejemplo clásico de una técnica de integración numérica llamada cuadratura numérica. En ella la función (llamada kernel de la integral), que evalúa la función en los n elementos ( x 0,..., x n ) de la superficie de proyección, es integrada sobre un intervalo[,] ab de tal forma que: fx ( ) b a fx ( ) dx = n 1 j = 0 w j fx ( j ) (1.51) donde w i determina el intervalo en el cual se evalúan dichos puntos. Sustituyendo la ecuación (1.50) en la ecuación (1.49), y aproximando el diferencial de área daj por Aj, podemos obtener la siguiente expresión general para calcular los factores de forma delta: F dai, A j = θ i cos cosθ j πr 2 A j (1.52) A j donde ahora se refiere a los elementos del hemicubo y es una fracción finita del área de la cara del hemicubo. Una vez calculado estos factores de forma delta, son almacenados en una tabla para su posterior utilización [SP94]. A j Cálculo de los factores de forma delta. El cálculo de los factores de forma delta para el hemicubo es fácil. Consideremos por ejemplo un elemento situado en la cara superior del hemicubo, tal como se muestra en la Figura Tomando la altura del hemicubo igual a uno, para facilitar los cálculos, tenemos 31

46 Radiosidad en Multiprocesadores que: r = u 2 + v cosθ i = cos = n θ j r A θ j 1 θ i r U da i u v V Figura 1.19 Geometría para el cálculo de los factores de forma delta para la cara superior. Partiendo de la ecuación (1.52): F superior θ i cos cosθ j = πr 2 A superior = A superior π( u 2 + v 2 + 1) 2 (1.53) donde es el área del elemento de la cara superior del hemicubo. Si consideramos un elemento situado en las caras laterales del hemicubo, como se muestra en la Figura 1.20, tenemos que y: A superior v = ± 1 por lo que: r = u 2 + n n cosθ i = --, cosθ r j = 1 --, r F cara θ i cos cosθ j = πr 2 A cara = n A cara π( u 2 + n 2 + 1) 2. (1.54) n A θ j 1 r U 1 θ i u da i V Figura 1.20 Geometría para el cálculo de los factores de forma de las caras laterales. 32

47 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Análogamente, el factor de forma delta para las caras en las que (1.54), simplemente cambiando u por v. u = ± 1 viene dado por El número de factores de forma delta a almacenar puede reducirse considerablemente aprovechando simetrías. Usando que la cara superior del hemicubo tiene simetría en ocho 3n 2 octantes, y las caras laterales en dos, sólo es necesario almacenar factores de forma delta 8 para un hemicubo de resolución nxn Cálculo del factor de forma. Una vez calculados los factores de forma delta, para determinar el factor de forma de dos patches arbitrarios debemos poner el hemicubo sobre uno de ellos y calcular la proyección del otro sobre las caras del hemicubo. Supongamos por ejemplo que queremos calcular el factor de forma desde el patch i a un patch arbitrario j en el entorno. Para ello, colocaremos el hemicubo sobre el patch i, y llamaremos ( O x, O y, O z ) a las coordenadas del punto central de la base del hemicubo. Con el fin de realizar la proyección, se determina para cada una de las caras del hemicubo un campo de visión y un sistema de coordenadas, como se muestra (respectivamente) en la Figura 1.21 (a y b). Para la proyección de un patch arbitrario j es necesario transformar sus coordenadas tomando como origen el punto (Ox,Oy,Oz), utilizando la matriz de transformación M dada por: u x u y u z t x F ij M= v x v y v z t y n x n y n z t z tx = tx = tx = O x u x O x u y O x u z O x v x O x v y O x v z O x v x O x v y O x v z 33

48 Radiosidad en Multiprocesadores n Cara del hemicubo u (a) Punto de vista (Ox,Oy,Oz) (b) v Figura 1.21 (a) Volumen de visión (b) Sistema de Coordenadas para el hemicubo. En entornos complejos se utiliza la técnica del z-buffer para eliminar superficies ocultas, y técnicas de recorte de polígono para establecer qué porciones de los polígonos están dentro del volumen de visión establecido por cada cara del hemicubo. Una vez que se tiene la proyección sobre las caras del hemicubo, el factor de forma se puede expresar como la suma de los factores de forma delta de los elementos que cubre dicha proyección. Se puede encontrar una descripción más detalla sobre las técnica de z-buffer y recorte de polígonos aplicados al cálculo de los factores de forma, en [GK93], [Hai91], [RBH90], [Max95]. El algoritmo del hemicubo ha sido el método más empleado para calcular el factor de forma en radiosidad ([EJLA91], [Gat91], [RBH91], [Nec97], [MT93]). Sin embargo, los métodos de ray-casting (que se describirán en la sección ) son mucho más eficientes, por lo que hoy en día el método del hemicubo ha caído en desuso. Método del tetraedro cúbico. Frente a la semiesfera de Nusselt, el hemicubo de Cohen proporciona una geometría más simple para proyectar los polígonos y calcular los factores de forma. Sin embargo, la cara superior y las caras laterales tienen diferentes geometrías, y requieren por tanto distintas ecuaciones para calcular los factores de forma, por lo que es necesario proyectar cada polígono por separado sobre las cinco caras. Una solución a este problema es utilizar otra figura geométrica más simple sobre la que realizar la proyección. Beran-Koehm y Pavicic [BKP91][BKP92] observaron que el hemicubo no es más que un cubo biseccionado por el plano sobre el que descansa. Si se rota el cubo y su sistema de coordenadas sobre este plano (de forma que el plano corte tres de los vértices del cubo) se 34

49 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad obtiene otro objeto geométrico, denominado tetraedro cúbico. La Figura 1.22 se muestra como se obtiene el tetraedro a partir del hemicubo. Figura 1.22 Geometría para el método del tetraedro cúbico. Como sólo nos interesa el ángulo sólido sustentado por cada elemento de las caras, el tamaño del cubo es indiferente. En consecuencia, es conveniente usar un cubo que tenga tres unidades de arista. Esto coloca los vértices (v0,v1,v2) de la base del tetraedro cúbico en {1, 1, -2}, {1, -2, 1} y {-2, 1, 1}, respectivamente, mientras su vértice superior está exactamente en {1,1,1}, una unidad por encima del centro del tetraedro cúbico. Usando esta figura tendremos tres caras triangulares idénticas sobre las que proyectar el resto de los patches. La homogeneidad de la figura de proyección permite una disminución sustancial en el tiempo de cálculo de los factores de forma. Por supuesto, el cambio de esta figura implica un cambio en los factores de forma delta. Partiendo de la ecuación (1.52), y siguiendo el desarrollo presentado por Beran-Kohen y Pavicic [BKP92], el término cosθ i es igual a: cosθ i S n i = = S S n i r (1.55) donde S es el vector desde el origen hasta el centro del elemento de la cara, y r es su longitud, tal como se muestra en la Figura Expresado en términos del espacio de coordenadas del tetraedro cúbico, la normal al polígono n es el vector 1 i --, 1, por lo que ,

50 Radiosidad en Multiprocesadores cosθ i = S u + S v + S n r 3 A j n i θ i n j S θ j r da i Figura 1.23 Geometría para el cálculo del factor de forma de un pixel. Para los elementos que pertenecen a la cara del tetraedro perpendicular al eje v, el término cosθ j se expresa como: cosθ j S n j = = S S n j r (1.56) donde el elemento n j se describe por el vector ( 0, 1, 0). Como además, la cara cae sobre el plano v = 1, entonces: cosθ j S v = ---- = r 1 -- r (1.57) El mismo resultado es extensible a las otras dos caras. Así, para cualquier elemento del tetraedro, tenemos: E j F dai A j S u + S v + S n = πr 4 A j = x+ y π( x 2 + y 2 + 1) 2 A j 3 (1.58) donde x e y van desde 1 a -2 Aunque la ecuación (1.58) describe los factores de forma delta para los elementos del tetraedro cúbico, no considera los elementos triangulares en la base de cada cara. Beran-Koehn y Pavicevic [BKP92] plantearon dos soluciones posibles para este caso. La primera, si la resolución es lo suficientemente alta, es simplemente ignorar esos elementos (pues su contribución al factor de forma total es despreciable). La segunda, si la resolución no es lo suficientemente alta, consiste en incluirlos, pero suponiendo que sus áreas son la mitad que la de los demás elementos. 36

51 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Gracias a la simetría del tetraedro cúbico, sólo es necesario almacenar los factores de forma delta de una sola cara. En consecuencia para una resolución de n n elementos por cara completa del cubo, se necesita almacenar tan solo ---- valores de coma flotante. Adicionalmente el tetraedro cúbico tiene tan solo 3n elementos. Si consideramos que el hemicubo 2 tiene 3n 2 elementos, y que en él es preciso almacenar 3n valores, resulta evidente la 8 economía conseguida en los cálculos y requerimientos de memoria. Sin embargo, el tetraedro cúbico tiene también algunas desventajas frente al hemicubo. En particular, Beran-Koehn y Pavicic [BKP92] demostraron que un tetraedro cúbico debe tener una resolución de elementos para ser equivalente a un hemicubo de resolución n n elementos. 2n 2n n 2 Condiciones de aplicabilidad de los algoritmos del hemicubo y tetraedro cúbico. En la aplicación de los métodos del hemicubo y del tetraedro cúbico se realizan una serie de consideraciones, que de ser violadas reducen la precisión del algoritmo. Si suponemos un hemicubo centrado sobre un patch i se deben verificar las siguientes condiciones para la utilización correcta del método del hemicubo: 1) Condición de Proximidad: La distancia entre el patch i y cualquiera de los restantes patches j que forman el entorno debe ser mayor que el tamaño de i. 2) Condición de Visibilidad: La visibilidad de i no debe variar a lo largo de toda la superficie de j. 3) Condición de Aliasing: El muestreo periódico de los elementos de las caras del hemicubo debe ser suficiente para obtener una buena calidad en la proyección de j. A continuación discutiremos como influye la violación de cada una de estas consideraciones en la precisión de los cálculos. 1 ) Condición de Proximidad: Supóngase dos patches como los que se muestran en la Figura Si calculamos los factores de forma suponiendo que el hemicubo se coloca en los centros de cada patch y los comparamos con los resultados de la solución analítica, 37

52 Radiosidad en Multiprocesadores obtendremos los resultados de la Tabla 1.2 Factor de Forma Método Analítico Método del Hemicubo Fj,i Fi,j Tabla 1.2 Error por proximidad. p j 1 1 p i 5 Podemos observar que los valores pero los valores Figura 1.24 Condición de proximidad. son prácticamente iguales para ambos métodos, difieren considerablemente. Esto es debido a que en el método del hemicubo sólo se tiene en cuenta un punto situado en el centro del patch. En efecto, la distancia de cualquier punto de a un punto fijo de es prácticamente constante, mientras la distancia entre un punto fijo de y cualquier punto de puede variar ampliamente. En consecuencia el ángulo sólido sustentado por hacia cualquier punto de es constante, pero el ángulo sólido sustentado por hacia cualquier punto de p i varía. p j F ij, F ji, Ya se ha comprobado anteriormente la estrecha relación existente entre ángulo sólido y factor de forma, por lo que esta variación del ángulo sólido provocará, inevitablemente, variaciones en los valores de los factores de forma. 2 ) Condición de visibilidad: En el método del hemicubo sólo se utiliza la información de visibilidad desde el punto central del patch, asumiendo como hipótesis simplificadora que esta información es válida para el resto del patch. Pero si un patch ocluye otros dos de forma tal que la línea que une los centros de los mismos sigue siendo visible, el método del hemicubo considera que estos patches son totalmente visibles entre sí, cuando en realidad solo lo son parcialmente (Figura 1.25). Análogamente se puede dar el caso que los patches se consideren totalmente ocultos, cuando en realidad sólo lo están p j p j p j p i p i p i 38

53 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad parcialmente. superficie 2 superficie 3 oculta superficie 1 Figura 1.25 Violación de la condición de visibilidad. La Figura 1.26 muestra el efecto que produce la violación de la condición de visibilidad sobre la iluminación de la escena. En (a) se puede apreciar cómo, si consideramos un solo patch para representar el polígono inferior, el hemicubo centrado en este patch se considera totalmente visible respecto a la fuente (patch superior), esto hace que el patch inferior aparezca totalmente iluminado (gris) cuando en realidad no es así, dado que el patch intermedio oculta parcialmente al patch inferior. La Figura 1.26 (b) muestra como sera la iluminación sobre el patch inferior si la condición de visibilidad no se viola. (a) (b) Figura 1.26 Efecto de la violación de la condición de visibilidad en la iluminación. 3 ) Condición de aliasing: El fenómeno de aliasing se produce debido a la interacción del muestreo periódico y la resolución finita del método del hemicubo. La Figura 1.27 muestra cómo es posible sobreestimar o subestimar el valor de los factores de forma, debido a la resolución periódica y limitada. Una consecuencia de este fenómeno es que un patch grande y distante respecto a una fuente de luz puede no ser tenido en cuenta en absoluto cuando utilizamos el método del hemicubo. 39

54 Radiosidad en Multiprocesadores Proyección de la superficie Elementos cubiertos por la proyección SOBRESTIMADO SUBESTIMADO Figura 1.27 Violación de la condición de aliasing. La Figura 1.28 muestra con un sencillo ejemplo sencillo el patrón de sombra que se forma debido del muestreo periódico. El patch i actúa como una fuente de luz sobre la cual se ubica el hemicubo. En la Figura 1.29 (a) se muestra un ejemplo donde se manifiesta este efecto de aliasing. i Cara del hemicubo Figura 1.28 Violación de la condición de aliasing por el muestreo uniforme. El error producido por la resolución finita del hemicubo se puede minimizar aumentando la resolución del mismo, aunque siempre teniendo en cuenta que duplicar la resolución implica aumentar al cuadrado la complejidad del algoritmo. La Figura 1.29 (b, c) muestra como disminuye el aliasing al aumentar la resolución del hemicubo. Por otra parte, el error producido por el muestreo uniforme se puede eliminar rotando de forma aleatoria el hemicubo sobre su eje. 40

55 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad (a) (b) (c) Figura 1.29 Efecto de aliasing en la iluminación de la escena Algoritmo de ray-casting para el cálculo de los factores de forma. Los algoritmos de ray-casting también se han utilizado para calcular el factor de forma [Mal88], [MBG86], [Pel97]. En estos trabajos se calcula el factor de forma entre una superficie i y una o más superficies j trazando rayos de forma aleatoria sobre la semiesfera ubicada sobre la superficie i. Estos algoritmos que se basan en el método de Montecarlo para calcular los factores de forma son llamados comúnmente en la literatura métodos de ray-casting estocástico. Si bien permiten representar superficies curvas de mejor forma y reducen el coste computacional, la propia naturaleza aleatoria del método no garantiza una buena precisión en los cálculos. Wallace [WEH89][WEH94] propuso un método llamado ray-casting determinístico, que en vez de suponer el polígono emisor como una fuente de área finita y determinar el factor de forma visto desde cada vértice de los polígonos receptores del entorno; subdivide la fuente de manera que su tamaño sea mucho más pequeño que la distancia al vértice. Posteriormente se calcula el factor de forma delta para cada uno, expresando factor de forma vértice - superficie como la suma de todos ellos. Aunque se puede utilizar el método de la integración de contorno para calcular cada uno de estos factores de forma delta, es muy costoso computacionalmente, y además existe el problema de la eliminación de superficies ocultas. Wallace propuso como solución a este problema aproximar cada uno de los pequeños polígonos de la fuente por un disco orientado arbitrariamente. 41

56 Radiosidad en Multiprocesadores De este trabajo (y del análisis realizado por Siegel y Howell [SH92]), el factor de forma analítico de un diferencial de área da j paralelo a un disco finito A i de radio a y a una distancia r de este (Figura 1.30 a,b) sería: F daj, A i = a ( r 2 + a 2 ) (1.59) a A i a A i θ i r θ j r da j (a) (b) da j Figura 1.30 Cálculo del factor de forma entre un disco arbitrario a un diferencial de área. Si consideramos la geometría de la Figura 1.30 (a) donde θ i = θ j = 0, y utilizando la propiedad de reciprocidad correspondiente para el factor de forma (Tabla 1.1) tendremos: F Ai, da j = da j ( πr 2 + ) A i (1.60) donde da j es el área de un elemento diferencial j que rodea el vértice, y A i es el área aproximada del polígono fuente i. Podemos generalizar este resultado incluyendo los cosenos de los ángulos entre las superficies normales y la dirección entre da j y A i Figura 1.30 (b). Esto es sólo una aproximación, pero nos resultara muy útil para expresar el factor de forma como: Si dividimos el polígono fuente lo bastante fino (en k subdivisiones), podemos modelar cada A k como un diferencial de área, y trazar una sola recta desde el vértice del receptor da j. Si la recta corta cualquiera de los polígonos, entonces esa porción de la fuente está oculta. Asumiendo un polígono fuente plano que ha sido subdividido, Figura 1.31, su factor de forma desde el vértice j es: F Ai, A j F Ai, da j = da j cosθ j cosθ i = ( πr 2 + ) n A i da j cosθ jk cosθ ik VIS n k A i k = 1 πr k n 42

57 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad donde: n es el número de polígonos subdivididos y VIS k es la función de visibilidad, que vale uno si el k- esimo polígono fuente es visible para el vértice; y cero en caso contrario. A k daj vértice j Figura 1.31 Cálculo de los factores de forma por el método de Ray - Casting. Usando la relación de reciprocidad tenemos que: F Aj, A i = n A i A i cosθ jk cosθ ik F da Ai, A j = ---- VIS j n k A i k = 1 πr k n (1.61) Es importante hacer notar que la ecuación (1.61) asume que el polígono de origen se puede modelar como un disco circular. Esta aproximación es válida para triángulos equiláteros y para polígonos cuadrados, pero no modela con precisión polígonos alargados. El ray-casting determinístico, es computacionalmente más costoso que el ray casting estocástico, pero garantiza una mayor precisión en los cálculos [Kwo92]. Las diversas implementaciones de algoritmos de radiosidad que hemos desarrollado, y que se exponen en esta misma memoria, utilizan únicamente el método de ray-casting determinístico para la determinación de los factores de forma. En consecuencia, y para simplificar la terminología, cualquier mención hecha en el resto de la memoria al método de ray-casting para el cálculo de los factores de forma se referirá al método determinístico. Distribución de los puntos de muestreo en el polígono fuente. La precisión del método de ray-casting esta íntimamente ligado al número de rectas que se trazan desde el vértice a la fuente. El problema básico será, por lo tanto, elegir la cantidad y posición de puntos en la fuente. Una aproximación es usar los vértices del elemento que 43

58 Radiosidad en Multiprocesadores definen el patch fuente. Sin embargo, dependiendo de la distancia desde el origen hasta el receptor, la resolución obtenida puede o no ser adecuada. Por otra parte, el espaciado uniforme de los vértices de los elementos pueden causar problemas de aliasing. Wallace [WEH89] demostró que cualquier fenómeno de aliasing será particularmente ostensible en los límites de sombra, dándoles apariencia de escalera. Una segunda aproximación es calcular la radiosidad de los vértices, y luego promediarlos con la de sus vecinos más cercanos. Sin embargo, la mejor aproximación consiste en elegir un conjunto de puntos aleatorios del polígono de fuente. Cuantas más rectas se tracen desde el receptor, mejor será el resultado obtenido, de forma que las direcciones aleatorias de los rayos minimizarán los efectos de aliasing. En nuestra implementación se ha utilizado una técnica simple desarrollada por Turk para la elección de puntos aleatorios en triángulos y polígonos convexos. Para determinar el número de rayos a disparar, Wallace [WEH89] realizó una subdivisión adaptativa del polígono fuente, de manera que cada área subdividida tenga, aproximadamente, el mismo factor de forma visto desde el vértice del receptor. De esta forma se obtienen excelentes resultados disparando entre 4 o 16 rayos por cada vértice del receptor. La función de visibilidad (VIS). Intersecciones polígono - rayo. Un factor de gran importancia en la eficiencia de los algoritmos de ray-casting es la rapidez con que se detecte la presencia de oclusiones. Badouel [Bad90] desarrolló un algoritmo para resolver de forma eficiente el problema de la intersección con polígonos. Sea S un vértice de patch receptor, y E un punto (arbitrario) en el polígono de origen. El primer paso del algoritmo es definir una recta, cuyo origen es S, y cuya dirección viene dada por el vector r = E S (tal como se muestra en la Figura 1.32) n E r S Figura 1.32 Intercepción Rayo -Polígono. 44

59 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Expresado de forma paramétrica la ecuación de la recta es: pt () = S + tr. (1.62) donde pt () describe un punto en la dirección de r, y valores 0 t 1, describen puntos a lo largo del rayo entre S y E. Se desea determinar si la recta corta un polígono arbitrario entre S y E. Como los vértices de este polígono definen un plano, es posible averiguar es si el rayo corta a este plano mediante la ecuación: t = d n S n r (1.63) donde n es la normal al polígono, r es el vector desde el origen del espacio de nuestro mundo virtual al vértice receptor S, y d hasta el punto más cercano del plano. Se verifica que: es la distancia desde el origen del mundo virtual donde p es el vector desde el origen del mundo virtual hasta cualquier punto del plano; por conveniencia, usaremos el primer vértice del polígono. El denominador de la ecuación (1.63) se evaluará primero, para evitar un error de división por cero; si fuera igual a cero, el rayo es paralelo al polígono, y por lo tanto no lo corta. A continuación se evaluará la ecuación (1.63) para hallar t. Si t < 0, el plano está antes del vértice receptor S. Si t > 1, el plano está por detrás del punto fuente E. En otro caso, el rayo corta al polígono entre S y E. En este último caso, es necesario determinar si el polígono intermedio corta realmente, o no, a la recta pt (). Supongamos que el polígono es un triángulo de vértices p0, p1, p2, y que Q representa el punto de corte rayo - polígono. Si definimos Q como el vector que va desde p0 hasta Q, v1 como el vector desde p0 hasta p1 y v2 el vector desde p0 hasta p2 (Figura 1.33), el vector suma será: d = n p Q = αv1 + βv2 (1.64) 45

60 Radiosidad en Multiprocesadores p1 Q v1 βv2 αv1 p0 p2 v2 Figura 1.33 Determinación del punto de intercepción dentro del polígono. donde α y β son constantes. El punto de intersección Q estará dentro del polígono si, y solamente si, α 0, β 0, α+ β 1. Expresando la ecuación (1.64) en los componentes de los ejes del mundo virtual, tenemos: x Q x 0 = α( x 1 x 0 ) + β( x 2 x 0 ) y Q y 0 = α( y 1 y 0 ) + β( y 2 y 0 ) z Q z 0 = α( z 1 z 0 ) + β( z 2 z 0 ) (1.65) Hemos de resolver la ecuación para obtener los valores de α y β. Para ello proyectaremos el triángulo y los vectores de la figura sobre el plano x y, x z o y z, de forma que sólo necesitaremos dos de las tres ecuaciones anteriores. Para realizar esta proyección debemos asegurarnos de que el polígono no es perpendicular al plano, de otra manera la proyección será sólo una línea recta. Por ello, necesitamos encontrar el eje dominante de la normal del polígono (por ejemplo, la componente que tenga la mayor magnitud) y elegir un plano perpendicular a éste; dada la normal del polígono n = ( n x, n y, n z ), elegiremos un eje q de la forma: x si n x = max( n x, n y, n z ) q = y si n y = max( n x, n y, n z ). z si n z = max( n x, n y, n z ) Entonces proyectando sobre el plano perpendicular a este eje, y definiendo los ejes de este plano como s y t, tendremos: s 0 = Q s p0 s, t 0 = Q t p0 t s 1 = p2 s p0 s, t 1 = p1 t p0 t s 2 = p2 s p0 s, t 2 = p2 t p0 t. 46

61 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad Substituyéndolo estas expresiones en la ecuación (1.65), tenemos: O, expresado en forma matricial s 0 = αs 1 + βs 2 t 0 = αt 1 + βt 2 s 1 s 2 t 1 t 2 α β = s 0 t 0 Usando la regla de Cramer, la solución de esta ecuación es: α det s 0 s 2 t 0 t 2 = = det s 1 s 2 t 1 t 2 s 0 t 1 s 2 t s 1 t 2 s 2 t 1 β det s 1 s 0 t 1 t 0 = = det s 1 s 2 t 1 t 2 s 1 t 0 s 0 t s 1 t 2 s 2 t 1 La resolución de esta ecuación, nos permite determinar si la recta corta al polígono triangular. Este resultado puede ser extendido a cualquier polígono convexo si lo dividimos en triángulos. Regla de las cinco veces. Tanto para la aproximación simplificada de la solución analítica para polígonos planos convexos como para el método de ray-casting hemos considerado el patch emisor como una fuente puntual, sin haber especificado bajo qué condiciones esta aproximación es cierta. Si un polígono pequeño (pero finito) se coloca paralelamente a un gran emisor, pero a una distancia infinitesimal, interceptará sólo una pequeña porción del flujo emitido. Sin embargo, modelar el emisor como una fuente puntual nos llevaría a la conclusión de que se intercepta casi todo el flujo de luz emitido, lo cual es erróneo. Es necesario, pues, determinar cuándo es posible justificar esta aproximación. 47

62 Radiosidad en Multiprocesadores Murdoch [Mur81] demostró que, en una predicción de la iluminación usando la ley del cuadrado inverso, un rectángulo luminoso lambertiano considerado como un punto luminoso da, en el peor de los casos, un error en la predicción menor que ±1 % siempre que la distancia desde el punto iluminado al rectángulo sea de al menos, cinco veces su anchura. En otras palabras, el rectángulo luminoso debería sustentar un ángulo menor que 0,2 radianes (11,5 grados, aproximadamente) vistos desde el punto iluminado tal como se ilustra en la Figura Emisor 1 < 11, 5º Superficie Receptora > 5 Figura 1.34 Geometría para la regla de las cinco veces. Esta regla de las cinco veces ha sido confirmada por algunos otros estudios detallados de los errores en el cálculo del factor de forma, como son las realizados Saraiji y Mistrick [SM92a], Emery et. al. [EJLA91], Baum [BRW89], Max y Troutman [TM93], y Sbert [Sbe93]. Es conveniente destacar que, si la regla de las cinco veces es violada por dos patches cualquiera, siempre es posible subdividir el patch emisor hasta que la regla sea satisfecha para cada nuevo subpatch. Como en algunas disposiciones geométricas no se satisface nunca la regla, es necesario el uso de una norma heurística que evite posteriores subdivisiones cuando los patches fuesen demasiado pequeños para resultar significativos. Ventajas del algoritmo de ray-casting. El método de ray-casting ofrece numerosas ventajas respecto al método del hemicubo y tetraedro cúbico para el cálculo del factor de forma.en este apartado analizaremos algunas de estas ventajas. La primera es la eficiencia en el muestreo del entorno tridimensional. El método de raycasting realiza el muestreo desde la fuente a cada uno de los vértices que forman el entorno tridimensional, lo que nos permite modelar figuras más complejas. También se elimina el efecto de aliasing que se produce en el hemicubo por el muestreo uniforme. 48

63 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad El método de ray-casting considera todas las fuentes, independientemente de su tamaño; por el contrario, en el método del hemicubo existe la posibilidad de que fuentes pequeñas y lejanas no sean tenidas en cuenta. Esta característica permite el uso de fuentes puntuales (spot light) en la descripción de la escena, lo cual resulta especialmente interesante, pues estas fuentes luminosas son unas de las mas utilizadas en los programas de CAD para la generación de entornos tridimensionales. Otra ventaja del método de ray-casting está relacionada con el sombreado, a la hora de la renderización. La última etapa de todo algoritmo de renderizado de imágenes, usando el algoritmo de radiosidad, es realizar el sombreado de Goraud para todos los patches visibles en la escena. Este algoritmo requiere conocer la radiosidad en los vértices de los patches; sin embargo, el método del hemicubo calcula el factor de forma sólo en el centro de los patches, por lo que es necesario calcular la radiosidad en los vértices mediante interpolación lineal de la radiosidad en los centros de los patches. En cambio, el método de ray-casting calcula la radiosidad directamente en los vértices de los patches, evitando la necesidad de interpolar. Otra ventaja es que, utilizando el método de ray-casting, las superficies que forman la escena se pueden describir como mallas de patches y elementos, lo cual no es posible usando el método del hemicubo. Así por ejemplo, Wallace [WEH91] utilizó un spline cuadrático para modelar superficies complejas curvas. Esta superficie se representaba como una malla de 1176 elementos para realizar los cálculos de radiosidad y renderizado; pero con la ventaja de que, para el cálculo de la función de visibilidad, se utilizaba la ecuación implícita de la spline cuadrática. Finalmente, en el método de ray-casting los factores de forma se calculan bajo demanda, a diferencia del método del hemicubo, que necesita tener almacenado un grupo de factores de forma para cada patch del entorno. Sin embargo, el método de ray- casting tiene algunas desventajas. Por ejemplo, el método del hemicubo procesa cada elemento del entorno una sóla vez para cada patch. Dado m patches y n elementos, se puede plantear que de forma general la complejidad del algoritmo es de Omxn ( ). Por el contrario, como en el método de ray-casting se procesa cada patch del entorno una vez para cada vértice, y este procesamiento incluye comprobar oclusiones con cada elemento del entorno, la complejidad computacional es de Om ( 2 xn). En general, las ventajas del método de ray-casting compensan ampliamente las desventajas del mismo. 49

64 Radiosidad en Multiprocesadores 1.5. Solución numérica del sistema de ecuaciones de radiosidad. En secciones anteriores se llegó a un sistema de ecuaciones (1.45) de la forma A R = R 0, donde R 0 representa la emisión inicial de los patches. La matriz A se construye a partir de las funciones de base y de los factores de forma, y R es el vector que representa la radiosidad sobre los patches. Existen diversos métodos para resolver numéricamente este sistema de ecuaciones; en este apartado describiremos los métodos más empleados Métodos directos El sistema de ecuaciones, para una matriz A cuadrada no singular, se puede escribir como R 0 R = A 1. Esta forma de calcular el vector de las incógnitas R no es práctico, puesto que el tamaño de la matriz A genera problemas de almacenamiento y tiempos de procesamiento. Así, si duplicamos el número de patches en los que se subdivide la escena, el tamaño de la matriz A se cuadruplica. Si, además, tenemos en cuenta que las técnicas Gausianas para la inversión tienen una complejidad computacional de orden On ( 3 ), siendo n el tamaño de la matriz, el aumento del tamaño de A haría prohibitiva esta inversión Métodos iterativos Para evitar invertir de forma explícita la matriz, se aplican un grupo de técnicas iterativas que, partiendo de unas determinadas condiciones iniciales para el vector R, van refinando la solución hasta alcanzar la solución final, bajo un determinado margen de error. Estas formas iterativas de resolver el problema de la radiosidad son llamadas comúnmente métodos de relajación. Existen numerosos métodos en la literatura para resolver iterativamente sistemas de ecuaciones; pero en el caso particular de la radiosidad los más utilizados son la iteración de Jacobi y la iteración de Gaus- Seidel. A continuación realizaremos un análisis de estos métodos, suponiendo que A es una 50

65 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad matriz n x n elementos (cada elemento de la matriz A está asociado a un patch del entorno), y R y R 0 son vectores columna de n elementos. Se puede generar entonces una serie de soluciones aproximadas de R e intentar converger hacia la solución real, asumiendo que la solución siempre existe. Si escribimos la solución aproximada después del paso g como, podemos definir entonces el error en la g-ésima aproximación por: e ( g) R R ( g) el residuo en la g-ésima aproximación se define como: ( ) R AR g 0 podemos decir que: Los métodos de relajación utilizan el residuo para refinar la solución y generar su sucesora. De forma general la idea es que para un determinado valor del vector residuo correspondiente al elemento i, debemos aplicar transformaciones al correspondiente ( g) R i tal que tienda a cero. Esto puede provocar que el valor de r para otro elemento cambie, y quizás hasta se incremente, aunque siempre se espera que la tendencia general sea que los valores del vector r disminuyan para todos los elementos. Un análisis mas detallado sobre la estabilidad y convergencia puede encontrarse en la bibliografía especializada sobre métodos numéricos, como por ejemplo Press [PVTF92] y Ralston [RR78]. r g r ( g) Ae ( g) = ( ) R ( g) R ( g + 1) ( g) r i ( g) r i R ( g) Iteración de Jacobi. El método de Jacobi parte de una matriz A (n x n) y la descompone en una matriz diagonal D, una matriz estrictamente diagonal inferior -l, y una matriz estrictamente diagonal superior -U con lo que nos queda: 51

66 Radiosidad en Multiprocesadores a 11 a 12 a 1n A = a 21 a 22 a 2n = a n1 a n2 a nn D l U = a a a nn a a n1 a n2 0 0 a 12 a 1n 0 0 a 2n El sistema de ecuaciones se puede escribir como: AR = ( D l U)R = R 0 y se puede transformar en: DR = ( l + UR + R 0 ) R = ( l + U) R R D D el método de Jacobi plantea que: R ( g) = ( R l + U) g 1 D o expresado de otra forma: ( ) R D R i g = n j = 1, j i ( g 1) ( a ij R j ) + R 0 i a ii (1.66) Interpretación física del método de Jacobi. Cuando utilizamos el método de Jacobi para el cálculo de la ecuación de radiosidad discretizada, podemos interpretar que cada ejecución de la ecuación (1.64) es un paso en la solución y se necesitan n pasos para completar una iteración del método. En cada paso actualizamos la emisión estimada de cada patch procesando una fila de la ecuación de radi- 52

67 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad osidad. Así, para el método de Jacobi obtenemos: ( g) R i que, expresado de forma matricial, seria: n ( g 1) = R 0i + ρ i F ij R j, i = 1,, n. j = 1. ( g) R i.. =. R 0i ( g 1) g 1 F i1 R 1 Fin R n ( ) Este proceso puede tener la siguiente interpretación física: si sumamos la contribución de flujo de todos los demás elementos del entorno a la emisión del elemento actual, como cada elemento j tiene una radiosidad R j y un área A j, la porción de flujo emitida por j y recibida por i será: Φ ij = R j A j F ji Con lo que el incremento en la radiosidad del elemento i será: R i ρ i Φ ji = = A i ρ i R j A j F ji A i Conociendo que: A i F ij = A j F ji, obtenemos que: R i = ρ i R j F ij Por tanto, es como si el patch i adquiriera (gather) la emisión de todos los elementos j del entorno para determinar su emisión. El término R 0i es la emisión inicial de i, y sólo será distinto de cero si éste es una fuente de luz. En la Figura 1.35 se hace una representación de esta interpretación física. Aj Aj Aj Aj Aj Ai Figura 1.35 Interpretación física del método de Jaccobi (gathering energy). Esta aproximación tiene el problema que puede ser muy lenta. Considerando un entorno 53

68 Radiosidad en Multiprocesadores de elementos, por ejemplo, tendremos que hacer una iteración completa antes de obtener una imagen inicial, lo que significa ejecutar la ecuación (1.64) veces, calculando y almacenando en cada una el factor de forma F ij, para cada uno de los elementos. Iteración de Gauss - Seidel Frente al método de Jacobi, el método iterativo de Gauss - Seidel adopta una simple, pero efectiva, aproximación que acelera considerablemente la convergencia. En la ecuación (1.64) vimos que el método de Jacobi calcula el valor de la radiosidad de cada elemento, secuencialmente usando los valores de los otros elementos proporcionados por. Dado que los elementos R j g (donde j<i) ya se han calculado, y son presumiblemente aproximaciones más cercanas a los valores finales de la solución que sus contrapartidas, por qué no usar esos valores cuando vayamos a calcular. Esto es exactamente lo que hace el método de Gauss - Seidel. Su ecuación iterativa es: R i g R i g R ( g 1) ( g 1) R j o, expresado de otra forma: ( g) R i i 1 j = 1 R ( g) = U ( D l) R g 1 n ( ) R 0 ( g) ( g 1) a ij R j + a ij R j + R 0 i j = i a ii + ( D l), ( g > 0 ) = , i = 1,, n En otras palabras en el método de Jaccobi se espera hasta el final de cada iteración para actualizar los valores de radiosidad de la imagen, mientras en el método de Gauss-Seidel esta actualización se produce inmediatamente al final de cada paso de la iteración. Iteración de Southwell. Como en el método de Gaus - Seidel, la iteración de Southwell utiliza el último valor calculado para actualizar inmediatamente el patch correspondiente. Sin embargo, el método de Gauss-Seidel siempre actualiza los valores siguiendo un orden fijo, independientemente del valor de los residuos. La iteración de Sauthwell, por el contrario, no procesa los elementos siguiendo un orden 54

69 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad fijo, sino que, por el contrario, establece un criterio de relajar siempre el elemento con mayor residuo, hasta alcanzar la convergencia. Esto significa que un mismo elemento puede ser ajustado repetidamente sin necesidad de actualizar antes los demás. Dado que la relajación se realiza siempre en el elemento de mayor residuo, es imprescindible actualizar el vector de los residuos después de cada ajuste. Sin embargo, esta actualización no implica una penalización excesiva. Si el cambio en el vector R de las incógnitas se escribe como:, dado que sólo se actualiza cada vez un elemento del vector incógnita, será cero excepto para la componente i, que será k ii, Podemos entonces actualizar el vector k restando esta cantidad debida al elemento i a cada elemento k, tal que: R ( g + 1) = R ( g) + R ( g) R ( g) ( g + 1) r k = ( g) k k, i ( g) r k r k k ii, El hecho de buscar el elemento con mayor residuo y relajarlo significa, en términos de la radiosidad, encontrar el patch con mayor radiosidad sin distribuir y enviarla a todo el entorno. En otras palabras, se busca el patch con mayor radiosidad que aun no se haya tenido en cuenta, y se relaja dicho patch enviando su energía a todo el entorno. Este proceso es llamado comúnmente en la literatura disparo de energía (shooting), para distinguirlo del proceso de captura energía (Gather) que ocurre en las iteraciones de Jacobi y Gauss-Seidel ( g) r i Desventajas de los algoritmos de matriz completa. Todos los algoritmos iterativos descritos hasta aquí, para la solución del sistema de ecuaciones de la radiosidad, tienen como característica común que no pueden dar una solución parcial del sistema de ecuaciones hasta no calcular los n pasos necesarios para completar una iteración. Estos algoritmos son denominados comúnmente en la literatura algoritmos de matriz completa o de radiosidad completa [Coh91]. Estos métodos de matriz completa tienen una complejidad computacional de para cada iteración, lo que implica que, si duplicamos el número de elementos del entorno, se cuadruplica el tiempo necesario de CPU n 2 On 2 ( ) para resolver la ecuación de radiosidad. Otra desventaja es que requiere almacenar en memoria ---- factores de forma, haciendo que el coste de memoria también dependa del cuadrado 2 del número de elementos del entorno. Estos problemas hacen que los algoritmos de radiosidad completa, utilizados inicial- 55

70 Radiosidad en Multiprocesadores mente por Goral [GTGB84] y por Cohen [CG85], hayan quedado en desuso rápidamente. Para tratar de disminuir el alto coste computacional, Cohen [CGIB86] propuso una subestructuración del espacio tridimensional en patches y elementos (subdivisiones dentro de un patch), de forma tal que la complejidad computacional se puede reducir a un orden Omxn ( ), donde m representa el número de patches y n representa el número de elementos, con m<<n. Aun así estos métodos siguen siendo poco eficientes Métodos aproximados. En los últimos años la investigación sobre métodos de radiosidad han estado dirigidas principalmente a buscar nuevas técnicas para eliminar los problemas que presentan los métodos de matriz completa. Como resultado de estas investigaciones han aparecido dos nuevos métodos [CW93] [HSA91], a los que hemos denominados métodos aproximativos. El primero, comúnmente denominado método de radiosidad progresiva, es una variante de la iteración de Southwell y permite disminuir el coste computacional y dar una imagen útil en cada iteración de la solución del algoritmo. El segundo aprovecha los avances alcanzados en la solución del problema de los n cuerpos en la física, y es comúnmente denominado método de radiosidad jerárquica. Este método se basa en realizar una subdivisión adaptativa de la escena tridimensional que garantice que las zonas de la imagen más subdividas sean sólo aquellas que realmente lo necesiten, diminuyendo de esta forma el número de elementos de la matriz a tener en cuenta para la solución. Estos métodos alternativos serán tratados con mayor detalle en los capítulos 3 y 4 de esta memoria, donde además proponemos nuestras soluciones paralelas para estos algoritmos Conclusiones. En este capítulo se han definido los principales términos relacionados con radiometría y la fotometría, y se ha planteado la solución analítica al problema de la iluminación global y el modelo analítico de radiosidad. Se ha visto cómo la solución de radiosidad se puede dividir en dos fases: cálculo de los coeficientes, denominados factores de forma, y resolución del sistema de ecuaciones result- 56

71 Capítulo 1: Fundamentos Físicos y Matemáticos de la Radiosidad ante de la discretización de esta ecuación. En el capítulo se ha realizado también un estudio de los principales métodos de cálculo de los factores de forma, así como un análisis comparativo de los mismos, en base a la precisión obtenida en los cálculos, la complejidad computacional asociada y el consumo de memoria. En este capítulo se han descrito también los métodos clásicos para resolver el sistema de ecuaciones de radiosidad, pero se ha visto como sus requerimientos de almacenamiento los hacen poco adecuado para su uso práctico. En consecuencia se hace necesario aplicar métodos aproximados, que reduzcan los tiempos de procesamiento y requerimientos de memoria; estos métodos son el método progresivo y el método jerárquico, los cuales son tratados con más detalle en los capítulos 3 y 4, respectivamente. 57

72 Radiosidad en Multiprocesadores 58

73 Capítulo 2: Computación Paralela CAPÍTULO 2. COMPUTACIÓN PARALELA Introducción En la actualidad existe una demanda creciente de computadores de altas prestaciones (elevado rendimiento) en muchas áreas de aplicaciones científicas y técnicas. El logro de un elevado rendimiento no depende sólo del uso de dispositivos hardware más rápidos y fiables, sino que se apoya también en la obtención de mejoras importantes en la arquitectura de computadores y en las técnicas de procesamiento. Las arquitecturas avanzadas de computadores (arquitecturas paralelas) se centran alrededor del concepto de procesamiento paralelo. El desarrollo y aplicación de estos sistemas 59

74 Radiosidad en Multiprocesadores paralelos requiere un amplio conocimiento de las estructuras hardware y software subyacentes y de las estrechas interacciones que existen entre los algoritmos de computación paralela y la asignación óptima de los recursos de la máquina. Los computadores de procesamiento paralelo proporcionan unos medios, de adecuada relación coste-efectividad, para lograr elevados rendimientos en un sistema, mediante la realización concurrente de actividades. Definiremos el paralelismo o computación paralela como el procesamiento de la información que favorece la explotación de los recursos concurrentemente, en el proceso de computación. Los computadores paralelos son las máquinas capacitadas para efectuar computación paralela. La combinación de un determinado algoritmo paralelo y el computador sobre el que se ejecuta se conoce como sistema paralelo. Son muchos los campos en los que se aplican los sistemas paralelos, ha continuación resumimos los más significativos: Modelación predictiva y simulaciones: Previsión meteorológica numérica, oceanografía y astrofísica, análisis predictivo del clima, administración de la industria pesquera, explotación de recursos oceánicos, dinámica costera y mareas, socioeconomía, etc. Diseño y automatización de proyectos de ingeniería: Análisis de elementos finitos, aerodinámica computacional, inteligencia artificial y automatización, aplicaciones CAD, etc. Explotación de recursos energéticos: Explotación sísmica, modelación de yacimientos, energía de fusión de plasma, etc. Investigación médica, militar y básica: Tomografía asistida por computador, ingeniería genética, investigación de armamentos, defensa, etc Sistemas Paralelos: Organización y Arquitectura Clasificación clásica. Los computadores paralelos se pueden dividir en tres configuraciones arquitectónicas: - Computadores de segmentación encauzada: Efectúan computaciones solapadas 60

75 Capítulo 2: Computación Paralela para explotar el paralelismo temporal. - Computadores matriciales: Emplean múltiples unidades aritmético-lógicas sincronizadas para lograr paralelismo espacial. - Sistemas multiprocesadores: alcanzan paralelismo asíncrono gracias a un conjunto de procesadores interactivos que disponen de recursos compartidos (memorias, discos, etc). Computadores de segmentación encauzada. La ejecución de una instrucción en un computador digital implica, en general, cuatro pasos principales: 1.Búsqueda de la instrucción (BI) desde la memoria principal. 2.Decodificación de la instrucción (DI), para identificar la operación a efectuar. 3.Búsqueda del operando (BO), si es preciso. 4.Ejecución (EJ) de la operación aritmético-lógica decodificada. En un computador no encauzado, estos cuatro pasos deben finalizar antes de que se procese la instrucción siguiente. En un computador encauzado las instrucciones sucesivas se ejecutan en modo solapado. Debido al solapamiento de estas instrucciones, la segmentación encauzada está muy bien ajustada para efectuar repetidamente las mismas operaciones a través del cauce. Computadores matriciales. Un procesador matricial es un computador paralelo síncrono con múltiples unidades aritmético-lógicas, llamadas elementos de proceso (EP), que pueden operar en paralelo de la forma paso-bloqueo. Los EP están sincronizados para efectuar todos la misma función al mismo tiempo. Cada elemento de proceso consta de una ALU con registros y una memoria local. La estructura de interconexión entre EP, establecida para un cálculo específico, está controlada por programa desde la unidad de control. Las instrucciones vectoriales se transmiten a los EP para su ejecución distribuida sobre diferentes operandos tomados directamente de las memorias locales. La unidad de control es quien realiza la búsqueda de la instrucción. Debemos 61

76 Radiosidad en Multiprocesadores tener en cuenta que los EP son dispositivos pasivos sin capacidad de decodificación de instrucciones. Sistemas multiprocesadores. Este sistema consta de dos o más procesadores de capacidades aproximadamente comparables. Todos los procesadores comparten acceso a grupos comunes de módulos de memoria, canales de E/S y dispositivos periféricos. Y lo que es más importante, el sistema entero debe estar controlado por un único sistema operativo integrado, que facilite las interacciones entre los procesadores y sus programas a diferentes niveles. Además de las memorias y dispositivos de E/S compartidos, cada procesador dispone de su propia memoria local y de dispositivos privados. Las comunicaciones entre procesadores pueden realizarse a través de las memorias compartidas o mediante una red de interrupción Clasificación de acuerdo a la memoria. Los sistemas multiprocesadores se pueden clasificar según como esté estructurada la memoria, de ahí que existan dos grandes grupos: los multiprocesadores de memoria compartida y los multiprocesadores de memoria distribuida. Memoria compartida. La principal característica de los computadores de memoria compartida es que la comunicación se realiza de forma implícita, como resultado de las operaciones de acceso a memoria convencionales. Esta clase de computadores paralelos tiene una larga historia, teniendo al menos dos antecesoras en la década de los 60 y teniendo actualmente un importante papel en la industria de los computadores. En la programación de estas máquinas los procesos son configurados, de manera que una porción de las direcciones se encuentra en un espacio compartido por otros procesos. La cooperación y sincronización entre los procesos es realizada leyendo y escribiendo sobre variables compartidas y sobre punteros al espacio de direcciones compartidas. El hardware para la comunicación es una extensión de los sistemas de memoria encon- 62

77 Capítulo 2: Computación Paralela trados en otros computadores. Normalmente todos los computadores llevan un procesador y un grupo de controladores de entrada salida, para acceder a un grupo de módulos de memoria a través de un hardware de interconexión como se muestra en la Figura 2.1. La capacidad de memoria se incrementa simplemente añadiendo módulos de memoria y la capacidad de entrada salida se incrementa aumentando la cantidad de controladores de entrada salida. Por último la capacidad de procesamiento se incrementa actualizando el tipo de procesador o aumentando el número de unidades de procesamiento. Dispositivos de entrada/salida Memoria Memoria Memoria Memoria Controlador Entrada/Salida Controlador Entrada/Salida Interconexión Proc Proc Figura 2.1 Arquitectura básica de un multiprocesador de memoria compartida. Las máquinas de memoria compartida han tenido una gran proceso evolutivo. Las primeras máquinas eran configuraciones para servidores de altas prestaciones. Desde el punto de vista tecnológico en las primeras máquinas la velocidad de acceso de las memorias era más lenta que la velocidad del procesador, de esta forma era necesario intercambiar datos entre diferentes bancos de memoria para obtener un ancho de banda adecuado. Desde el punto de vista de la aplicación estos sistemas fueron diseñados para soportar un gran número de trabajos, de esta forma necesitaban un gran número de canales de entrada-salida. Como se muestra en la Figura 2.2 (a) estaban organizados con una red de tipo cross-bar que conectaba el procesador y muchos canales de entrada-salida a varios bancos de memoria. La primera forma de expandir estos sistemas fue aumentar el número de procesadores, pero la forma de acceder a una localización de memoria desde el puerto de un procesador en la red de interconexión no cambió. El tamaño y el coste de los procesadores limitaba estos sistemas a un número de procesadores pequeños; además el coste de escalar la red de crossbar también fue un factor limitante. La red cross-bar fue sustituida por una conexión multiestado, mostrada en la Figura 2.2 (b); este cambio significó un aumento en la latencia y una disminución en el ancho de banda por puerto, si todos eran utilizados a la par. El uso del diseño de los computadores de memoria compartida se extendió con el desar- 63

78 Radiosidad en Multiprocesadores rollo de los procesadores de 32 bits de la década de los 80, estos sistemas tienen el procesador, la cache, la unidad de punto flotante, y la memoria en una sola placa [Bel95]. La mayoría de las máquinas de rango medio incluyendo las minicomputadoras, los servidores y las estaciones de trabajo están organizados alrededor de un bus de memoria centralizado, como el que se muestra en la Figura 2.2 (c). Este bus permite que cada procesador acceda a todas las direcciones de memoria en el sistema, todos los procesadores tienen el mismo coste de acceso a una determinada dirección de memoria. Esta configuración es comúnmente llamada también multiprocesador simétrico (SMP). M M M M M M M M M M M M C P C P E/S E/S C P C P E/S E/S C P C P E/S E/S (a) Red cross-bar (b) Red de interconexión multiestado (c) Bus de interconexión Figura 2.2 Esquemas de interconexión en los multiprocesadores de memoria compartida. Los factores que limitan el número de procesadores que puede soportar la organización basada en un bus común son diferentes a los de una organización basada en una red de interconexión, en la cual agregar procesadores es muy costoso, sin embargo el ancho de banda aumenta con el número de puertos. Por el contrario el coste de agregar procesadores a una organización en bus común es muy pequeño, pero el ancho de banda es fijo, siendo dividido entre todos los procesadores y limitando la escalabilidad de la máquina. Afortunadamente, las caches reducen la demanda de ancho de banda de cada procesador, puesto que muchas referencias son resueltas en la cache y no en la memoria. Sin embargo, tener datos replicados en la cache introduce un problema adicional por tener que mantener la consistencia en la misma. La forma más sencilla de escalar una máquina de memoria compartida es manteniendo el acceso uniforme a memoria, Figura 2.1. Cada acceso a memoria es traducido en un mensaje a la red de interconexión o en mensaje sobre el bus para el caso del diseño SMP. La primera desventaja de este sistema es la latencia de la red de interconexión para cada acceso a memoria. 64

79 Capítulo 2: Computación Paralela Un diseño alternativo es conectar totalmente los procesadores cada uno a su memoria local como se muestra en la Figura 2.3. En este diseño el acceso a memoria no es uniforme (NUMA), el controlador local de la memoria determina cuando ejecutar un acceso a la memoria local o cuando transmitir un mensaje a un controlador de memoria remoto. Los accesos a datos privados como el código y la pila se realizan localmente. La demanda de ancho de banda de la red se reduce en este tipo de arquitectura. Red de interconexión escalable M C P M C P... M C P Figura 2.3 Estructura de acceso no uniforme a memoria (NUMA) Actualmente el diseño tipo NUMA esta prevaleciendo, un ejemplo de este estilo de diseño es aplicado en el Cray T3E. La SGI Origin es otra máquina con una estructura similar, pero que permite que un dato de cualquiera de las memorias sea replicado en cualquiera de las caches, suministrando un hardware que mantiene la consistencia de las caches. Memoria distribuida. La segunda clase importante de máquinas multiprocesadoras son las arquitecturas de memoria distribuida (o de paso de mensaje), empleando bloques funcionales que constituyen computadores (incluyen procesadores, memorias, sistemas de entrada-salida y permite la comunicación entre procesadores). El diagrama general para una máquina de paso de mensaje es esencialmente el mismo que para el diseño de una máquina de memoria compartida tipo NUMA Figura 2.3. La diferencia es que la comunicación está integrada en el sistema de entrada salida y no en el sistema de la memoria. Este tipo de diseño tiene también mucho en común con las redes de estaciones de trabajo (clusters), excepto que la red es mucho más eficiente que las redes de área local. Generalmente en el paso de mensaje hay una gran distancia entre el modelo de programación y las operaciones de comunicación en el nivel físico del hardware, dado que las comunicaciones se ejecutan utilizando el sistema operativo o llamadas a bibliotecas. Las 65

80 Radiosidad en Multiprocesadores operaciones más utilizadas en el modelo de paso de mensaje son variantes de enviar y recibir. De una forma simple enviar significa crear un buffer de datos locales que será transmitido y recibido por otro proceso (normalmente remoto). Recibir está relacionado a un proceso de envío y crea un buffer de datos locales en el cual serán almacenados los datos transmitidos. En la mayoría de los sistemas de paso de mensaje se utiliza un identificador unido al mensaje para indicar cual será el procesador destino del mensaje. En el pasado, las máquinas de paso de mensaje tenían rutinas de envío y recepción para la comunicación a nivel de usuario con algunas restricciones. Un nodo podía ser conectado sólo a un grupo restringido de vecinos, siguiendo para ello un patrón regular con uniones punto a punto [Sei85]. Las primeras máquinas eran hipercubos donde cada nodo puede ser conectado a otros n nodos utilizando un bit para formar direcciones binarias hasta un total de 2 n nodos. También se estructuraron en mallas donde los nodos se conectaban a sus vecinos en dos o tres dimensiones. La topología de la red utilizada en estas máquinas era de suma importancia, puesto que solo los vecinos podían ser utilizados para las operaciones de envío y recepción. Estas topologías de las redes de interconexión dominaron los modelos de programación (anillos, mallas o hipercubos [Fox88]). Para hacer estas máquinas más útiles y generales, se diseñaron sistemas que permitían la comunicación entre dos procesadores arbitrarios cualesquiera. Para ello, se diseñó un hardware que permitiera estas funciones de encaminamiento, así cada nodo estaba formado por el procesador, la memoria y una red que permitía la comunicación, llamada router o encaminador. Sin embargo, en estos sistemas el tiempo de envío de un mensaje es proporcional al número de saltos que éste realiza dentro de la red de interconexión, por lo que sigue siendo importante hacer énfasis en la topología utilizada. Este énfasis se reduce con la introducción de redes de propósito general[bcm94, BR89, Dun88, HR93, LADea92, PR94, ECGS92]. En la mayoría de los sistemas actuales de paso de mensaje el tiempo adicional introducido por el encaminador es prácticamente despreciable, no importando cuanto viaje el mensaje por la red de comunicación [Gro92, HR93, HHSI93, PR94]. Esto simplifica bastante el modelo de programación, normalmente los procesadores son analizados como una secuencia lineal con un coste de comunicación uniforme. 66

81 Capítulo 2: Computación Paralela Tendencias actuales Actualmente la evolución tanto en el software y en hardware no permite establecer una frontera clara entre los campos del paso de mensaje y de la memoria compartida. Consideremos las operaciones de comunicación disponibles a nivel de usuario: 1 Las operaciones tradicionales de paso de mensaje (envío y recepción) están disponibles en la mayoría de las máquinas de memoria compartida utilizando buffer de almacenamiento compartidos. El envío implica escribir un dato o un puntero a un dato; recibir implica leer un dato de la memoria común. 2 En una máquina de paso de mensaje se puede construir un espacio global de direcciones a nivel de páginas. Un grupo de procesos pueden tener direcciones compartidas, pero para cada proceso solo la página que es local es accesible. Cuando se accede a una página remota, ocurre un fallo de página y el sistema operativo establece un mensaje que permite transferir la página al espacio local de direcciones. En el nivel de la organización de la máquina también existe una gran convergencia. Las arquitecturas modernas de paso de mensaje son similares al diagrama general del diseño NUMA mostrado en la Figura 2.3. En el caso de la memoria compartida la red de interconexión está integrada con el controlador de la cache o de la memoria, de esta forma cuando el dispositivo detecta un fallo de cache, envía un mensaje para acceder a la memoria en un nodo remoto. En las máquinas de paso de mensaje la interfase de la red de interconexión es un dispositivo de entrada-salida. Actualmente han surgido nuevas redes de interconexión basadas en las redes de área local que incluyen ethernet rápidas, ATM, canales de fibra óptica y muchos otros diseños [Bod95] [Gil96], permitiendo conexiones más escalables y que ayudan también a la convergencia de ambas arquitecturas. En resumen, el paso de mensaje y el uso de direcciones de memoria compartida representan dos modelos de programación bien definidos. Sin embargo, las estructuras de las máquinas que soportan estos modelos, convergen a una estructura representada por un grupo elementos de procesamiento totales, conectados por una red de comunicación. La interconexión de la red de comunicación en el sistema de memoria reduce la latencia de la red y mejora el ancho de banda. 67

82 Radiosidad en Multiprocesadores 2.3. Modelos de programación Tradicionalmente, los computadores también se clasifican, según el paralelismo existente en los flujos de instrucciones y datos, en cuatro grupos fundamentales: SPSD, MPSD, SPMD y MPMD. El modelo de programación se rige también según estas cuatro clasificaciones. El primer modelo SPSD (Simple Procesos sobre Simples Datos) se aplica a aquellos computadores que operan secuencialmente tanto sobre instrucciones como datos, y por tanto no ofrecen paralelismo alguno. El modelo MPSD (Múltiples Procesos sobre Simples Datos) se aplica a aquellos computadores que ejecutan simultáneamente varias instrucciones sobre un mismo conjunto de datos. Algunos autores afirman que no existen auténticos computadores MPSD, aunque la mayoría de las arquitecturas segmentadas responden esencialmente a este esquema. El modelo SPMD (Simple Proceso sobre Múltiples Datos) se aplica a máquinas que poseen una sola unidad de control con diferentes unidades de procesamiento, en las que se ejecuta simultáneamente una misma instrucción. Estas máquinas se caracterizan por tener un número muy elevado de EP y redes de interconexión rápidas. Las arquitecturas matriciales responden a este esquema. El último modelo MPMD (Múltiples Procesos sobre Múltiples Datos), se aplica principalmente a aquellas máquinas en las que cada elemento de procesamiento funciona con sus propias instrucciones y sus propios datos; pueden ser de memoria compartida o distribuida. En la actualidad la mayoría de los computadores tienen esta filosofía de diseño. Los computadores con esta filosofía de diseño también soportan el modelo de programación SPMD. La carencia total de compiladores eficientes que paralelicen automáticamente un código secuencial deja hasta el momento la mayor parte del control del sistema paralelo en manos del programador, teniendo que especificar de forma explícita el código que ejecuta cada elemento de procesamiento, así como el conjunto de datos que debe procesar. Si los datos no se encuentran en la memoria local (en el caso de arquitecturas MPMD de memoria distribuida) el programador debe encargarse de establecer las comunicaciones necesarias con otros elementos de procesamiento mediante el uso del modelo de paso de mensaje. La mayoría de las máquinas facilitan estándares para las bibliotecas de paso de mensaje (PVM y MPI), que a 68

83 Capítulo 2: Computación Paralela costa de eficiencia alejan al programador del hardware. Lo más normal es utilizar una filosofía SPMD basada en ejecutar en todas los procesadores del sistema el mismo programa aplicado a un grupo diferente de datos, sobre una arquitectura de tipo MPMD. En los últimos años han aparecido nuevos compiladores que utilizan un mecanismo de programación intermedio, la programación paralela asistida por el programador. Este nuevo enfoque denominado paralelismo de datos, permite compilar programas secuenciales en máquinas paralelas basándose en criterios de distribución de los datos que el programador decide utilizando lenguajes de paralelismo de datos como por ejemplo el Viena Fortran y el HPF (Hight-Performance-Fortran). Distribuciones de datos De forma general existen dos mecanismos básicos por los cuales se pueden distribuir los datos: La distribución por bloques (BLOCK) en la cual se descompone el dominio por regiones regulares de elementos consecutivos y asociándolos a procesadores en base a criterios de vecindad y en segundo lugar la distribución cíclica (CYCLIC) que asigna bloques vecinos de un determinado tamaño a procesadores vecinos, repitiendo el proceso de forma cíclica hasta distribuir completamente los datos. Estas formas de distribución de los datos son eficaces en la mayoría de los algoritmos para resolver problemas regulares, sin embargo cuando se trabaja con problemas irregulares, como por ejemplo matrices dispersas o el algunos métodos de cálculo de radiosidad, estos métodos son ineficientes. Para esos casos es necesario aplicar nuevos métodos de distribución de los datos que garanticen un reparto equitativo de la carga, o métodos que de forma dinámica logren este objetivo. En los capítulos 3 y 4 se presentan algunos métodos que hemos desarrollado y aplicado al caso particular del cálculo de la radiosidad Computadores utilizados en nuestras aplicaciones. En todas las experiencias realizadas en el trabajo que presenta esta memoria se utilizaron 69

84 Radiosidad en Multiprocesadores dos computadores que admiten tanto los modelos de memoria compartida como distribuida. El primero (CRAY 3TE) se utilizó para los algoritmos para memoria distribuida y el segundo (Origin 2000) se probaron los algoritmos de memoria compartida. A continuación se describen las principales características de cada uno de ellos Multiprocesador CRAY T3E. El multiprocesador CRAY T3E puede llegar a tener hasta 2048 procesadores formando una topología en forma de un toro tridimensional como el que se representa en la Figura 2.4, si bien es de memoria distribuida en los procesadores, provee un espacio de direcciones de memoria compartida. Cada nodo contiene un procesador Alpha 21164, un circuito integrado para el control del sistema, memoria local y un encaminador (router). La lógica del sistema funciona a 75 Mhz y el procesador a múltiplos de ésta (de 300 Mhz a 450 Mhz). La red en forma de toro permite un ancho de banda desde 100 a 480 MB/s dependiendo del tipo de tráfico que se utilice. Alpha Control E Register Memoria Local Router Estructura del nodo Figura 2.4 Arquitectura del CRAY 3TE. El sistema de entrada-salida en un sistema conocido como Giga Ring channel que permite anchos de banda de 267 MB/s en la entrada-salida cada 4 procesadores. El procesador Alpha es capaz de ejecutar 4 instrucciones por cada ciclo de reloj; de las cuales una puede ser una suma o una multiplicación de punto flotante con un pico de 600 Mflops/s para un procesador a 300 MHz y de 900 Mflops/s para un procesador a 450 MHz. Hay dos niveles de memoria cache, un primer nivel de 8 kbyte para instrucciones y datos y un segundo nivel de 96 Kbyte. La memoria local está compuesta además por cuatro circui- 70

85 Capítulo 2: Computación Paralela tos integrados controladores, que directamente controlan 8 bancos de memoria DRAM. Programación Para la programación con el modelo de paso de mensaje esta máquina soporta las bibliotecas estándares PVM y MPI, que están construidas mediante llamadas a procedimientos de una biblioteca de más bajo nivel. Esta biblioteca, con el nombre SHMEM, está diseñada sobre el principio básico de sacrificar la facilidad de uso en aras de una mayor velocidad y flexibilidad. Por tanto, se pueden conseguir mayores anchos de banda utilizando directamente las rutinas de esta biblioteca. En esta biblioteca, disponible para C y Fortran 77, sólo se han implementado un número pequeño de operaciones. Las rutinas básicas de la biblioteca SHMEM se clasifican en: Individuales, es decir, son llamadas por un único procesador, independientemente de cuantos procesadores estén involucrados en la operación. Estas rutinas utilizan las capacidades de la memoria compartida del CRAY para soportar transferencias de datos por medio de un protocolo unilateral (syngle-party protocol). Las dos rutinas principales son shmem_put y shmem_get que escriben y leen, respectivamente, de las memorias remotas, sin ningún tipo de intervención por parte del procesador remoto. Colectivas o globales cuando todos los procesadores involucrados en la operación deben llamar sincrónicamente a la rutina. Estas operaciones permiten realizar operaciones de reducción, barreras, radiaciones, y se ejecutan por un número específicos de procesadores. Como se analizará en capítulos posteriores los problemas que afectan la eficiencia de nuestros algoritmos no son precisamente las penalizaciones por la comunicación. Por ello se prefirió utilizar las bibliotecas de paso de mensaje estándares (PVM), garantizando con ello una mayor portabilidad del código, entre diferentes sistemas multiprocesador y sistemas distribuidos. En el CRAY se pueden utilizar también para la programación lenguajes de paralelismo de datos como Viena-Fortran o HPF Multiprocesador Origin

86 Radiosidad en Multiprocesadores Este computador si bien es de memoria compartida, la memoria se encuentra distribuida físicamente entre los procesadores. El sistema operativo y los mecanismos para mantener la coherencia se encargan de hacer transparente este hecho al usuario. La Figura 2.5 muestra un diagrama de la arquitectura del ORIGIN El procesador utilizado en cada nodo es el MIPS R10000 que es un procesador de 64 bits superescalar que soporta un gran espacio de direcciones de memoria. La memoria total es de 4 Gbytes distribuidos entre todos los procesadores; cada nodo del Origin tiene un banco independiente de memoria de 256 MBytes, común a dos procesadores y la coherencia de memoria es mantenida por hardware. MEM MEM C R10000 R10000 C C R10000 HUB ROUTER HIPERCUBO HUB R10000 C CONFIGURACIÓN DEL HIPERCUBO PARA 32 PROCESADORES Figura 2.5 Arquitectura de el Origin 2000 La topología utilizada es de un hipercubo entre los nodos, y el ancho de banda entre dos nodos es de hasta 32 Gbytes por segundo. En el esquema, el HUB garantiza las comunicaciones entre los procesadores que comparten la memoria principal y el router garantiza la comunicación entre los nodos, permitiendo crear las distintas configuraciones del hipercubo. Hay una serie de características que hacen al Origin ser diferente a sus antecesoras. A continuación mencionamos las más importantes: 1- Escalabilidad y modularidad: el Origin 2000 es fácil de escalar uniendo nodos sobre una interconexión de fábrica y el ancho de banda del sistema escala linealmente con el incremento del número de procesadores. Otras máquinas, como por ejemplo el Power Challenge, 72

87 Capítulo 2: Computación Paralela solamente pueden escalar en el número de procesadores y la red de interconexión tiene un ancho de banda fijo. Además este sistema no es modular, tiene un número fijo de slops el cual no puede ser modificado. 2- Tiene una memoria compartida distribuida y un sistema de entrada salida también distribuido. 3- La coherencia de memoria se garantiza por hardware. 4- Se utiliza un sistema de migración y réplica de páginas de memoria para disminuir la latencia en los accesos a memoria. Modelo de programación Esta máquina permite que se pueda utilizar un modelo tanto de memoria compartida como de memoria distribuida, aunque está principalmente diseñada para trabajar como memoria compartida. Como memoria distribuida, permite el uso de las bibliotecas de paso de mensaje MPI y PVM, que más se han estandarizado para este tipo de multiprocesadores. Como memoria compartida se ha introducido un compilador tanto para el lenguaje Fortran como para el lenguaje C que soporta la detección automática de paralelismo. Permite además el uso de pragmas para guiar al compilador en la detección automática y soporta un grupo de bibliotecas (MP) para la programación manual. Distribución de datos La política que toma por defecto el Origin es que el proceso que primero utilice un determinado dato, le sea asignada la página de memoria a la que pertenece ese dato. Esta política funciona muy bien cuando los programas se ejecutan secuencialmente, o cuando se utilizan las bibliotecas de paso de mensaje para la ejecución paralela en el Origin, donde todos los accesos e inicializaciones se realizan sobre la memoria local. El problema de esta política de distribución se da por ejemplo en los programas paralelizados con las bibliotecas MP. En este caso, normalmente, el esfuerzo se centra en paralelizar las zonas del programa que más tiempo de ejecución toman y a menudo las inicializaciones como son menos costosa no se paralelizan. Si consideramos la política de distribución 73

88 Radiosidad en Multiprocesadores descrita anteriormente todas las inicializaciones se realizan en el procesador principal que es donde se ejecuta las secciones secuenciales del programa, de esta forma todos los datos quedan concentrados en un solo nodo o en un radio muy pequeño, con lo cual se crea un cuello de botella dado que todos los accesos a memoria son controlados por un solo HUB. Esto limita el ancho de banda de memoria, y este cuello de botella afecta severamente la escalabilidad del programa paralelo. Se pueden utilizar otras políticas de distribución de los datos que resuelven el problema anterior. Una de ellas es conocida como round-robin, de forma que los datos son colocados sobre todos los procesadores, aún si los datos son inicializados secuencialmente. Si bien esta distribución soluciona el problema de escabilidad no garantiza que los datos queden colocados de forma óptima. Para solucionar ésto en la ORIGIN se introduce un novedoso mecanismo para habilitar la migración de páginas de memoria de acuerdo al uso repetido de determinadas localizaciones de memoria por un procesador. Este mecanismo implica un coste adicional de tiempo en cada CPU, por lo cual es un mecanismo que está no habilitado por defecto en el sistema, teniendo que ser invocado explícitamente. Balance de Carga A pesar que la memoria se encuentra físicamente distribuida, se garantiza por parte del sistema el acceso a todos los datos desde cualquier procesador y a diferencia de las máquinas de memoria distribuida, lo que se distribuye no son los datos, sino que lo que se reparte es el trabajo (iteraciones) entre los procesadores. En la práctica se puede encontrar para algunas aplicaciones una correspondencia entre las operaciones y los datos que se utilizan, pero para otros casos no. Existen diversos tipos de distribuciones. Distribución Simple: Por defecto el Origin utiliza una distribución para las iteraciones de tipo simple en la cual cada procesador ejecuta un número constante de iteraciones consecutivas, del bucle paralelizado. En la Figura 2.6 se muestra un esquema de los tiempos de ejecución utilizando esta distribución para cuatro procesadores. T1 T2 T3 T4 Figura 2.6 Distribución Simple. Distribución Interleave. Esta distribución es similar a la distribución cíclica para los 74

89 Capítulo 2: Computación Paralela datos solo que en este caso se asigna de forma consecutiva una iteración del lazo a cada procesador hasta completar el total de iteraciones. En la Figura 2.7 se muestra como quedarían los tiempos de ejecución para cada uno de los procesadores. T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 Figura 2.7 Distribución Interleave. Distribución Dinámica. En los casos que exista una variación muy grande en el número de tareas que se ejecutan dentro de cada iteración del lazo, si se utilizara una distribución cíclica o simple se tendría que esperar siempre por la iteración más lenta. La distribución dinámica (Figura 2.8) elimina este problema, distribuyendo las iteracioes del bucle según la demanda de cada procesador. T1 T2 T3 T4 T2 T1 T4 T3 T1 T4 T2 T3 T2 T4 T1 T3 Figura 2.8 Distribución Dinámica. Distribución GSS (Guided Self-Sheduling). Esta distribución habilita un planificador (sheduling) propio. Funciona muy parecido a la dinámica, solo que no se reparte la carga de forma fija sino que se comienza repartiendo un número grande de iteraciones y se termina repartiendo un valor pequeño. En la Figura 2.9 se muestran los tiempos para cada procesador. T1 T2 T3 T4 T1 T4 T3 T2 T1 T4 T2 T3 Figura 2.9 Distribución GSS. Para obtener más información sobre el Origin 2000 y el Cray T3E ver la siguiente dirección en el web: Medidas de rendimiento en multiprocesadores. A continuación describiremos algunos parámetros que nos permiten caracterizar el comportamiento de un algoritmo paralelo. Uno de los principales objetivos que se busca con el uso de un sistema multiprocesador es disminuir el tiempo de ejecución necesitado por una máquina monoprocesadora, de ahí 75

90 Radiosidad en Multiprocesadores que una de las principales medidas de rendimiento sea la aceleración que se obtiene al utilizar arquitecturas paralelas. Consideremos la dimensión del problema, como el tiempo que requiere el algoritmo secuencial óptimo en resolver un determinado problema para una máquina con un solo procesador. Y definimos el tiempo de ejecución paralelo, como el tiempo necesitado por N procesadores para resolver el problema. Entonces se define la aceleración o speedup ( Sp) de un sistema paralelo, como el cociente entre el tiempo de ejecución en un procesador y el tiempo de ejecución en el multiprocesador ( s) T. Se puede hablar también de la eficiencia ( ) en la utilización del T ( N) E sistema paralelo, que no es mas que la normalización de la aceleración, de tal forma que se puede definir como el cociente entre Sp y N, tomando valores entre 0 y 1. El rendimiento máximo esperado para cualquier sistema multiprocesador es cuando la aceleración sea igual al número de procesadores y la eficiencia sea igual a la unidad, aunque en la práctica estos valores son imposible de obtener para un número de procesadores elevados. Es posible que en algunas ocasiones se pueda alcanzar un speedup superior al perfecto, la causa fundamental es que en ocasiones cada procesador trabaja con un número inferior de datos que el sistema secuencial, siendo la localidad espacial muy alta por lo que la jerarquía de memoria hace que los rendimientos para cada una de las unidades de procesamiento del supercomputador sea superior al obtenido por el sistema secuencial. Existe siempre una parte del código que no puede ser paralelizada y la cual debe ejecutarse en serie. Esto está considerado en la ley de Amdahl, la cual plantea que: Si consideramos como la fracción del programa que siempre se puede ejecutar en paralelo (la cual es siempre menor que 1.0); entonces la parte restante del código n = ( 1 p) debe ejecutarse siempre de forma secuencial. De esta forma el máximo speedup se puede representar por la siguiente expresión. (2.1) Podemos definir también el concepto de escalabilidad del sistema como el buen comportamiento del speedup con al aumento del número de procesadores y cuyo comportamiento está limitado por la ley de Amdahl. p Es fácil comprobar como el comportamiento de speedup no sólo está limitado por la parte T ( s) 1 S p = p -- n + ( 1 p ) T ( N) 76

91 Capítulo 2: Computación Paralela de programa que ha de ejecutarse secuencialmente, sino que se pueden obtener distintos valores de aceleración para distintos tamaños del problema, obteniéndose los mejores valores a medida que la dimensión del problema aumenta. Uno de los aspectos que reducen la aceleración del algoritmo paralelo es el hecho que todos los procesadores no realicen la misma cantidad de procesamiento. Por ello se ha utilizado una medida que represente las penalizaciones por la diferencia en la carga computacional. Podemos definir entonces el %Balance en función de la diferencia que existe en el tiempo de procesamiento del procesador más rápido respecto al más lento según la siguiente expresión: T ( s) ( tmax tmin) %Balance = tmax (2.2) siendo tmax el tiempo de ejecución en el procesador más lento sin considerar las comunicaciones y tmin el tiempo de ejecución en el procesador más rápido, también sin considerar las comunicaciones Conclusión. En este capítulo se han tratado los aspectos generales referentes a las arquitecturas y el procesamiento paralelo, destacando las tendencias actuales en el desarrollo de las arquitecturas paralelas. Se ha detallado además los principales modelos de programación, en especial los que se aplican a los multiprocesadores. Dado que uno de los objetivos fundamentales de nuestro trabajo es la aplicación de las técnicas de procesamiento paralelo para obtener algoritmos que disminuyan el coste computacional en el cálculo de radiosidad, hemos hecho un especial énfasis en los computadores utilizados en nuestros experimentos 77

92 Radiosidad en Multiprocesadores 78

93 Capítulo 3: Radiosidad Progresiva: Paralelización CAPÍTULO 3. RADIOSIDAD PROGRESIVA: PARALELIZACIÓN Introducción En este apartado se describe el método progresivo para la solución de la ecuación de radiosidad y se realiza una revisión de los principales trabajos relacionados con la aplicación de las técnicas de procesamiento paralelo al método progresivo. Tras analizar diferentes variantes para la paralelización de este algoritmo, se expondrá nuestra solución particular a esta paralelización y se mostrarán los resultados de su implementación. 79

94 Radiosidad en Multiprocesadores 3.2. Método Progresivo. El método de refinamiento progresivo para resolver el sistema de ecuaciones de radiosidad, introducido por Cohen en 1988 [CCWG88] como variante de la iteración de Southwell, permite producir una imagen útil en cada iteración [CW93]. Esto hace que el usuario del programa pueda visualizar una aproximación a la solución final tras un cierto número de iteraciones, sin necesidad de esperar al final del proceso. En este algoritmo se han introducido algunos cambios respecto a la iteración de Sauthwell. En particular, si llamamos R i a la radiosidad no disparada en el patch i, el refinamiento progresivo selecciona como disparador el próximo patch que tenga mayor potencia A i R i sin disparar, en lugar del que tenga mayor radiosidad sin disparar, como hace la iteración de Southwell. Desde el punto de vista físico este método se aproxima mejor a la forma como se produce la propagación de energía dentro del entorno, dado que el principal interés se centra en aquellos elementos que emiten o reflejan la mayor cantidad de energía. Disparando energía desde un elemento al resto que forman el entorno, podemos obtener de forma inmediata una estimación inicial de la radiosidad en toda la escena, en lugar de actualizar un único patch como ocurre en los métodos de Jacobi y Gauss-Seidel. Desde el punto de vista práctico una de las mayores ventajas del algoritmo de radiosidad progresiva es que permite obtener soluciones aproximadas en un reducido número de iteraciones; sin embargo, es posible acelerar aún más este proceso. Concretamente, el algoritmo de refinamiento propuesto por Cohen [CCWG88] utiliza una heurística para mejorar la apariencia de estas imágenes intermedias. La idea básica de esta heurística es promediar en toda la escena, con unos pesos adecuados, la radiosidad por disparar. Para ello se cuantifica el promedio de radiosidad sin disparar en la escena, R, sumando toda la radiosidad sin disparar y dividiéndola por el área total de la escena: i = 1 n R i A i Análogamente se calcula el promedio ρ de reflectividad en la escena: n R = i = 1 A i (3.1) 80

95 Capítulo 3: Radiosidad Progresiva: Paralelización (3.2) La estimación del total de radiosidad sin disparar, llamada término ambiente ( ), se calcula entonces como: R R a = (3.3) 1 ρ Conociendo este valor, para generar una imagen intermedia como solución final cada patch i es mostrado con el valor de radiosidad R i + ρ i R a. Otra ventaja significativa de la radiosidad progresiva es que no necesita calcular y almacenar toda la matriz de factores de forma antes de resolver el sistema de ecuaciones, puesto que solamente al seleccionar el patch i como disparador de energía se calcularán todos los factores de forma F ij, necesarios. Esta propiedad es muy importante para el tratamiento de imágenes con un elevado número de polígonos, donde almacenar toda la matriz de factores de forma implica unos requerimientos de memoria elevados. ρ = n i = 1 n i = 1 ρ i A i A i R a Diseño del algoritmo de radiosidad progresiva. En este apartado se presenta un algoritmo que implementa el método de radiosidad progresiva. Para representar la escena tridimensional se ha utilizado un modelo que establece una subdivisión jerárquica en dos niveles[cgib86][gla95]: 1) En patches gruesos como emisores. 2) En elementos finos como receptores. Esta subdivisión jerárquica garantiza, que en lugar de calcular nxn interacciones, siendo n el número de elementos del entorno, sólo es necesario computar mxn iteraciones, siendo m (número de patches) mucho menor que n. Este esquema jerárquico presenta también una ventaja adicional si utilizamos el método de ray casting para calcular los factores de forma; pues la evaluación de la función de visibilidad, se realiza únicamente a nivel de patch, no de elemento; y ésto significa comprobar únicamente m posibles oclusiones por iteración, en lugar de n. En la Figura 3.1 mostramos el pseudocódigo de la implementación secuencial de este algoritmo, calculando los factores de forma por el método del hemicubo o el tetraedro. 81

96 Radiosidad en Multiprocesadores While n i = 1 FOREACH (patch i escena) Selecciona patch con mayor flujo sin disparar R sin_disparar i A i ENDFOR Calcula todos los factores de forma F ik hemicubo( F) /*Calcula el factor de forma para los k elementos de entorno*/ FOREACH (patch j escena, ( j i) ) FOREACH (element ) sin_disparar R j ENDFOR ENDFOR endwhile FOREACH (element k escena ) ENDFOR R sin_disparar i A i ε k j sin_disparar R ρ k F i, k R A i = i A k R k = R k + R sin_disparar R j R A k = sin_disparar R i = 0 R ambiente = calcula_ambiente ("") R k = R k + ρr ambiente Figura 3.1 Algoritmo de radiosidad progresiva (métodos del hemicubo y el tetraedro cúbico). A j El algoritmo comienza seleccionando el patch con mayor flujo sin disparar en el entorno ( patch de disparo o shoot patch ), y se calculan para él los factores de forma con todos los demás elementos de la escena, utilizando el método del hemicubo o el método del tetraedro cúbico. Seguidamente, para cada elemento de cada patch de la escena se actualiza el incremento de radiosidad debido a la radiosidad sin disparar ( sin_disparar R i ) del patch de disparo seleccionado. La actualización de la exitancia en un patch j receptor cualquiera, se hará sumando los incrementos de exitancia de todos sus elementos, ponderados por la relación de áreas elemento/patch Una vez concluido este proceso para todos los patches de la escena, se pone la radiosidad 82

97 sin disparar ( sin_disparar R i Capítulo 3: Radiosidad Progresiva: Paralelización ) del patch de disparo a cero, para evitar que siempre se seleccione el mismo patch de disparo, y se recalcula el término ambiente para las nuevas condiciones de la escena. Todo este proceso se repite mientras no se haya alcanzado la condición de convergencia, según la cual el algoritmo detiene su ejecución cuando la magnitud de la radiosidad que se va a disparar sobre toda la escena no sea ya lo suficientemente grande como para producir un cambio significativo en la iluminación de la misma. El proceso también se puede detener después de un número fijo de iteraciones, lo cual es útil para generar soluciones intermedias. En ambos casos se suma el término ambiente actualizado a la radiosidad de cada uno de los elementos que forman la escena. Si en vez de realizar el cálculo de los factores de forma por el método del hemicubo o el tetraedro cúbico, se utiliza el método de ray-casting, el algoritmo sufre algunos cambios. La Figura 3.2 muestra el pseudocódigo para este caso. While n i = 1 FOREACH (patch i escena) Selecciona patch con mayor flujo sin disparar ENDFOR FOREACH (patch j escena, ( j i) ) FOREACH (element k j) R k = 0 FOREACH ( vertex v k) R v = ENDFOR ENDFOR endwhile FOREACH (element k) FOREACH vertice v ENDFOR ENDFOR R sin_disparar i A i ε sin_disparar ρ j F vi, R i + R v = R v R v R k + R v R k = ENDFOR sin_disparar R j Figura 3.2 Algoritmo de radiosidad progresiva (método de ray-casting). 83 R i sin_disparar A i sin_disparar A k R k = R j A j nº_vert. sin_disparar R i = 0 R ambiente = calcula_ambiente( ) R k = R k + ρr ambiente

98 Radiosidad en Multiprocesadores En este algoritmo no se actualiza la radiosidad en los elementos, sino directamente en los vértices de estos elementos. Además, a diferencia del algoritmo anterior no se necesita calcular y almacenar todos los factores de forma del patch de disparo respecto a todos los elementos de la escena, sino que se calculan cuando el valor sea requerido para calcular la radiosidad. Por supuesto, una vez que se ha alcanzado la convergencia, al igual que en el caso anterior, se actualiza el término ambiente. La Figura 3.3 muestra una secuencia de imágenes, obtenidas con el método progresivo para diferentes números de pasos y sin calcular el término ambiente. Con esta figura se puede entender mejor como se realiza la distribución (disparo de energía) de la energía luminosa con el método progresivo. (1 paso) (2 pasos) (4 pasos) (6 pasos) (10 pasos) (300 pasos) Figura 3.3 Imágenes para diferentes números de pasos con el algoritmo de radiosidad progresiva. 84

99 Capítulo 3: Radiosidad Progresiva: Paralelización Método de sobrerrelajación. Recientemente se han desarrollado varios trabajos analizando la convergencia del algoritmo de radiosidad progresiva. En particular, Shao y Badler [SB93a] observaron que, si bien el algoritmo converge de forma rápida hasta obtener una imagen medianamente atractiva, se necesitan muchas iteraciones para poder apreciar los matices de color de las sombras y la suavidad de las mismas. Este problema está íntimamente ligado con la forma en la que trabaja el algoritmo de radiosidad progresiva. Inicialmente se selecciona el patch con mayor potencia radiante en la escena (fuentes de luz), cuya energía es redisparada por los patches de mayor tamaño (como por ejemplo, las paredes en una habitación). Shao y Badler llamaron a estos últimos patches globales, y patches locales a aquellos patches que, o bien son más pequeños, o sólo reflejan en una sola longitud de onda, y que por tanto no aportan energía hasta que los patches globales hayan terminado de disparar su radiosidad. Esto hace que las áreas pequeñas necesiten muchas iteraciones antes de tener una aportación significativa a la escena. Una estrategia para abordar este problema es disminuir la contribución debida a los patches globales y enfatizar la contribución de los patches locales. Aplicando las técnicas de sobrerrelajación [Nob69] al caso de la radiosidad (overshooting), Shao y Badler obtuvieron un algoritmo de radiosidad progresiva más eficiente. Sus principales modificaciones radican en que, una vez seleccionado el patch con mayor energía, se calcula un factor de overshooting ( R i overshooting ). Este valor se adiciona mas tarde, cuando se calcula el incremento de radiosidad debido al patch de disparo, de forma que: sin_disparar overshooting R = ρ k F ik, R i + R (3.4) i A k Por último, una vez que se haya terminado de disparar la energía del patch de disparo sobre toda la escena, en vez de poner el valor de R i overshooting a cero se iguala a, de esta forma la sobredimensión de los valores de radiosidad en la iteración presente será eliminado en iteraciones posteriores. Los valores de overshooting se pueden calcular con la siguiente expresión: A i R i sin_disparar 85

100 Radiosidad en Multiprocesadores donde: = ρ i Rj R i overshooting n j = 1 sin_disparar F ij, (3.5) sin_disparar Rj = sin_disparar si R j > 0 sin_disparar R j sin_disparar 0 si R j 0 (3.6) Es decir, se suma la cantidad de radiosidad promedio sin disparar que el patch va a reflejar posteriormente, y se añade a su propia radiosidad sin disparar. Como se pueden obtener flujos sin disparar tanto positivos como negativos, el principio de convergencia para el algoritmo progresivo debe ser ahora: n i = 1 R sin_disparar i A i ε (3.7) 3.3. Radiosidad progresiva en multiprocesadores. En secciones anteriores se puede ver como, a pesar que el método progresivo simplifica notablemente la solución de la ecuación de radiosidad respecto a los métodos tradicionales de matriz completa, la obtención de imágenes fotorrealistas sigue siendo computacionalmente muy costosa. Esto hace que su implementación en computadores secuenciales a menudo no sea suficientemente eficiente. En esta sección presentamos los trabajos previos sobre paralelización de este algoritmo, así como nuestra implementación del algoritmo de radiosidad progresiva sobre multiprocesadores, usando el método de ray-casting determinístico para calcular los factores de forma. En esta sección se estudiarán los problemas de distribución de datos, balanceo de carga y localidad, y se presentarán nuestras soluciones a los mismos. En el método progresivo, como en la mayoría de los problemas de valores iniciales, no es posible calcular la solución en una iteración hasta que no se haya terminado la iteración anterior. Esta característica intrínseca del método hace que la paralelización se limite solo al plano funcional o espacial, distribuyendo las computaciones en cada iteración. El modelo de 86

101 Capítulo 3: Radiosidad Progresiva: Paralelización programación más adecuado es el SPMD, siendo necesario distribuir los datos y las computaciones en los elementos de procesamiento del computador Trabajos Previos Los primeros trabajos sobre algoritmos paralelos del método de radiosidad, (Price et. al. [PT89b], Chalmers et. al. [CP89]) estaban basados en métodos de matriz completa para resolver el sistema de ecuaciones, usando la iteración de Gauss Seidel. La distribución de los datos se realizaba entre todos los procesadores, y los factores de forma eran calculados por el método del hemicubo. El inconveniente fundamental de estos trabajos radica en que para obtener la solución final de la imagen es necesario resolver de forma completa un sistema de nxn ecuaciones, siendo n el número de elementos de la escena; además, se necesita almacenar n 2 factores de forma, con el correspondiente coste de memoria. Los primeros trabajos realizados sobre algoritmos paralelos para el método de radiosidad progresiva fueron realizados sobre una red de transputers, (Lepretre et. al. [LRM91a] [LRM91b], Renaud et. al. [Ren91]), y sobre una red de estaciones de trabajo (Chen et. al. [Che89a], Recker et. al. [RGG90]). Estos trabajos tienen en común el que cada nodo calcula la influencia de un determinado patch sobre los demás, y que los datos de la imagen son replicados en todos los procesadores, ocasionando un overhead en el almacenamiento que crece a medida que aumenta la complejidad de la escena. En los algoritmos implementados sobre una red de estaciones de trabajo aparece una limitación adicional en la escalabilidad, asociada a las comunicaciones, debido al limitado ancho de banda de la red de área local. Otros trabajos se basan en la distribución de los datos de la escena sobre la memoria local de los procesadores. Así, Feda et. al. [FP94] propone una solución donde los datos de la escena se distribuían a lo largo de una red de procesadores. Sin embargo, la elección del patch de disparo se realiza de forma centralizada, lo que limita la concurrencia en las comunicaciones y la escalabilidad del algoritmo. Un grupo de implementaciones paralelas se basan en el método del hemicubo para realizar el cálculo de los factores de forma. Así Vilaplana [Vil92], utiliza un sistema de memoria distribuida y calcula en cada procesador un hemicubo diferente, requiriendo comunicaciones 87

102 Radiosidad en Multiprocesadores para evaluar la función de visibilidad (ya que se necesitan datos que están en otros procesadores). El método no escala bien pues, si aumentamos el número de procesadores manteniendo constante la complejidad de la imagen, el tiempo necesario para proyectar patches externos aumenta. Aykanat et. al. [ACO96], utiliza también memoria distribuida y reparte los patches entre los procesadores. En su método los factores de forma calculados localmente son comunicados a los demás procesadores (circulando por todos ellos) para completar los cálculos. En este articulo se obtuvo un speedup de 13.3 para 16 procesadores en un ipsc/2. Otro grupo de trabajos utilizan las técnicas de ray-casting para el cálculo de los factores de forma. Por ejemplo, Guitton [GRS95a] presentó un método paralelo en el cual la escena era dividida espacialmente utilizando diferentes técnicas para la descomposición del entorno, distribuyendo los bloques resultantes en las memorias locales de los procesadores. Cada procesador selecciona un patch de disparo y analiza la aportación en direcciones (rayos) seleccionadas de forma aleatoria (ray-casting estocástico) sobre los patches locales; los rayos que no chocan con ningún patch local son comunicados al procesador vecino. En este trabajo se alcanzó un speedup de 19.2 para 32 procesadores en un Paragon XP/S A4. Una solución similar fue utilizada por Arnaldi et. al. [APRP97] en máquinas de memoria distribuida, consiguiendo un speedup de 21.5 para 28 procesadores en un Paragon XP/5, y por Renambot [RAPP97], para arquitecturas de memoria distribuida-compartida, alcanzando un speedup de 21 para 32 procesadores en una SGI ORIGIN En ambos trabajos se introduce el concepto de interfase virtual para manipular los datos transferidos entre los bloques en los que se ha dividido el entorno tridimensional. Utilizar el método estocástico puede llevar asociado dos problemas: 1) Si la cantidad de rayos que se disparan desde el patch emisor es muy pequeña, pueden existir superficies que, aún siendo visibles desde este patch, no se tengan en cuenta en el cálculo de la radiosidad. 2) Los rayos que no chocan con ningún patch en la escena son analizados sin ninguna necesidad. Guitton [GRS94] propone un algoritmo paralelo para el ray-casting determinístico, para máquinas de memoria distribuida, en el qué la escena es totalmente distribuida en la memoria de los procesadores, que forman una red tipo anillo, y el patch de disparo circula de procesador en procesador para realizar el cálculo de visibilidad sobre el conjunto de datos asignado a cada uno de ellos. Adelene Ng [Ng 94b] presenta una propuesta utilizando una red de est- 88

103 Capítulo 3: Radiosidad Progresiva: Paralelización aciones de trabajo, replicando totalmente la escena en todos los elementos de la red, y con un planificador centralizado que asigna por demanda un patch de disparo distinto a cada elemento de procesamiento; en esta propuesta se consiguió una aceración de 3.4 para 8 procesadores. Creemos interesante destacar el hecho de que, en nuestra búsqueda bibliográfica sobre el tema, no hemos encontrado ninguna implementación paralela sobre máquinas de memoria compartida para el método determinístico de radiosidad progresiva. En las siguientes subsecciones presentamos nuestra implementación del método de radiosidad progresiva con ray casting determinístico, tanto para multiprocesadores de memoria distribuida como para multiprocesadores de memoria compartida Implementación en máquinas de memoria distribuida. El primer problema que se plantea a la hora de desarrollar un algoritmo paralelo es decidir qué computaciones pueden y deben hacerse de forma concurrente, y sobre qué datos deben ser ejecutadas. En el caso del algoritmo de radiosidad progresiva el mayor coste computacional está asociado al bucle que se encarga de actualizar la radiosidad que aporta el patch de disparo sobre los demás patches de la escena. Estas operaciones implican calcular el factor de forma del patch de disparo respecto a todos los elementos de la escena, y se necesita la información global del resto de la escena para el cálculo de visibilidad. Por ello, el mecanismo para mantener la localidad de los datos es en ocasiones sumamente complejo dependiendo de como se realice la distribución de los datos y del tipo de arquitectura paralela que se utilice. Los datos que describen una escena tridimensional están dispuestos formando una estructura jerárquica compuesta (en orden decreciente de la jerarquía) por entidades, superficies, patches, elementos y vértices. Podemos encontrar entonces tres niveles de paralelismo en este algoritmo: 1 ) En un nivel mas grueso, el paralelismo puede ser posible sobre las superficies que forman la escena. Sin embargo, mantener un buen balance de carga en este nivel es prácticamente imposible, pues el gran tamaño de estos polígonos implica que la difer- 89

104 Radiosidad en Multiprocesadores encia en el número de elementos para dos superficies cualesquiera es muy elevado, lo que se traduce en una distribución muy irregular de la carga. 2 ) En un nivel intermedio el paralelismo puede ser también posible sobre los patches en los cuales las superficies son divididas. En este nivel sí es posible garantizar un buen balance de carga. 3 ) Finalmente es posible tener un paralelismo de grano fino sobre los elementos en los cuales se subdividen los patches. Sin embargo dado que los elementos que pertenecen a un mismo patch comparten el mismo valor de radiosidad, la paralelización a nivel de elemento puede introducir una cantidad excesiva de comunicaciones, que penalizan la eficiencia del algoritmo. Descripción del algoritmo paralelo propuesto. El algoritmo propuesto para multiprocesadores de memoria distribuida, cuyo esquema se muestra en la Figura 3.4, tiene una granularidad a nivel de patch con el objetivo de reducir las comunicaciones tanto como sea posible, puediendo ser dividido en los siguientes pasos: 1) Los patches y los elementos de la escena son distribuidos en las memorias locales de los procesadores, y la descripción geométrica de los patches es replicada. 2) Cada procesador busca en su lista de patches locales asignados ( ϒ ) el que tenga una sin_disparar mayor energía sin disparar ( R i ). 3) Se establece entonces una etapa de comunicación global, que permite seleccionar al patch de disparo con mayor energía sin disparar en toda la escena a partir de los candidatos propuestos individualmente por cada procesador. Tras la selección, se almacenan en cada procesador los parámetros ópticos (reflectividad, radiosidad sin disparar, etc.) del patch de disparo elegido. 4) Cada procesador calcula el aporte de energía desde este patch sobre cada uno de los vértices de cada elemento de sus patches locales, lo que requiere calcular el factor de forma entre el patch de disparo y el vértice analizado (método de ray casting). 5) Finalmente se establece otra etapa de comunicación global donde se transmite la radiosidad acumulada en cada procesador para poder mantener un criterio de convergencia global. Si la convergencia (o el número de pasos fijado) no se ha alcanzado regresa al paso 2. 90

105 Capítulo 3: Radiosidad Progresiva: Paralelización While n i = 1 FORALL PROCESADORES FOREACH (patch i ϒ ) unsend Selecciona_el_patch_con_mayor_flujo_sin_disparar ( R i ) ENDFOR Comunicación Global () Selecciona_el_de_mayor_flujo_de_los_candidatos ( global _list) /* ϒ partedelaescena asignada a cada proc.*/ FOREACH(patch j ϒ ) FOREACH (element k j) R k = 0 FOREACH (vertex ) ENDFOR ENDFOR R sin_disparar i A i ε Comunicación Global () ENDFORALL endwhile v k sin_disparar R v = ρ j F vi, R i R v = R v + R v R k = ENDFOR sin_disparar R j R k + R v sin_disparar A k R k = R j A j nº_vert. sin_disparar R i = 0 Figura 3.4 Solución final de la ecuación de radiosidad en paralelo. Las próxima secciones describen en detalle las soluciones propuestas para resolver los problemas de la localidad de los datos, el balance de carga y la coherencia, analizando el impacto de estas sobre el rendimiento del algoritmo paralelo. Localidad de Datos Para cada patch de disparo es necesario evaluar la función de visibilidad contra cada vértice de cada patch de la escena (a excepción del propio patch de disparo). En consecuencia cada procesador debe acceder a la descripción geométrica de todos los patches de la escena. En nuestra solución proponemos replicar esta información en cada procesador, garantizando 91

106 Radiosidad en Multiprocesadores de esta forma que la única información no local son las propiedades ópticas del patch de disparo, que son actualizadas en el paso 3 del algoritmo. En la Figura 3.5 representamos de forma gráfica la distribución de datos propuesta. La representación está hecha para cuatro procesadores con una escena formada por ocho patches (P1 a P8) y un total de 24 elementos. P1 P5 P2 P6 P3 P7 P4 P8 Procesador 1 Procesador 2 Procesador 3 Procesador 4 Información geométrica y óptica de los patches de la escena. Información geométrica de los patches (datos replicados). Información geométrica y óptica de los elementos. Figura 3.5 Distribución de los datos en cada procesador. A pesar que esta replica parcial de los datos produce un overhead de memoria, que puede limitar el tamaño de las imágenes procesables con el algoritmo paralelo propuesto, nuestra experiencia nos permite afirmar que, si no se realiza réplica, el overhead debido a las comunicaciones (necesarias cada vez que se evalúa la función de visibilidad) hace que el speedup del algoritmo disminuya dramáticamente. Adicionalmente en nuestra implementación se reduce el impacto del overhead de memoria no replicando toda la información del patch (óptica y geométrica), sino sólo la geométrica. Balance de carga. Como ya se mencionó antes, la granularidad de este algoritmo es a nivel de patch. La forma más simple de distribuir el conjunto de patches sobre los procesadores es la conocida como distribución por bloques (BLOCK). Como ejemplo la Figura 3.6 muestra una distribución por bloques de la escena para cuatro procesadores, cada uno de los procesadores se encarga de calcular el incremento en el valor de radiosidad producido por el patch de disparo 92

107 Capítulo 3: Radiosidad Progresiva: Paralelización sobre los vértices de los elementos y patches que le han sido asignados. P1 P2 P3 P4 P5 P6 P7 P8 Procesador 1 Procesador 2 Procesador 3 Procesador 4 Información geométrica y óptica de los patches de la escena. Información geométrica de los patches (datos replicados). Información geométrica y óptica de los elementos. Figura 3.6 Ejemplo de distribución por bloques de una escena para cuatro procesadores. Esta distribución presenta el problema de que, si los patches de la escena tienen un número no homogéneo de elementos, se producirán diferencias considerables en la carga computacional asignada a cada procesador. De hecho podemos comprobar experimentalmente que la eficiencia del algoritmo paralelo utilizando la distribución BLOCK es muy pobre. Se optó entonces por utilizar una distribución cíclica de los patches, que garantiza un reparto más uniforme de los patches de similar tamaño. Sin embargo esta distribución sigue presentando problemas cuando se procesan imágenes desbalanceadas, en las que existen patches con números de elementos muy distintos. Por ello se implementó otro tipo de distribución, en el cual, los patches siguen siendo distribuidos cíclicamente, pero se establece un coeficiente ponderador de carga en cada procesador, que tiene en cuenta el número de elementos asignados al mismo. Esta distribución, a la que hemos llamado distribución cíclica ponderada, distribuye inicialmente de forma cíclica los patches, de mayor a menor número de elementos, comprobando en todo momento que no se sobrepase el coeficiente de balance dado por la expresión: donde: Ne asignados Ne Totales P Ne asignados P Coef carga = Ne Totales : Número de elementos ya asignados. : Número total de elementos en la escena. : Número de procesadores utilizados. (3.8) Si el coeficiente de carga es menor que uno, se pueden seguir asignando patches a dicho procesador; si es mayor que uno, significa que el procesador está desbalanceado, mientras 93

108 Radiosidad en Multiprocesadores que si es uno el procesador está muy cerca del balance presumiblemente óptimo. Este mecanismo de control de balance puede hacer que, en esta primera fase de distribución, queden patches sin asignar. En este caso comienza una segunda fase de distribución, en la que se asignan estos patches a los procesadores que tienen un menor coeficiente de carga. Aunque en esta fase el coeficiente de carga de algún procesador puede superar la unidad, este desbalance será mínimo, puesto que el número de elementos de estos patches es muy pequeño comparado con el número total de elementos asignados al procesador. Como ejemplo en la Figura 3.7, se muestra gráficamente el resultado de distribuir entre cuatro procesadores una escena con ocho patches y 24 elementos. P1 P2 P5 P3 P6 P4 P7 P8 Procesador 1 Procesador 2 Procesador 3 Procesador 4 Información geométrica y óptica de los patches de la escena. Información geométrica de los patches (datos replicados). Información geométrica y óptica de los elementos. Figura 3.7 Distribución cíclica ponderada. Esta nueva distribución logra un mejor balance en la cantidad de elementos por procesador, a costa de distribuir de forma no uniforme los patches entre los procesadores. Esto introduce un requerimiento no uniforme de memoria en los procesadores, al variar el número de patches entre ellos. Sin embargo, el equilibrio en el número de elementos hace muy pequeña esta no uniformidad. A cambio, la carga computacional será prácticamente uniforme entre todos los procesadores, excepto si existen en la escena patches grandes de carga anormalmente pequeña, lo cual es poco probable que ocurra. Una última posibilidad es considerar un método dinámico de balanceo de carga, con asignación de patches por demanda dentro de cada iteración. Sin embargo, en arquitecturas de memoria distribuida el uso de un método de balance dinámico no resulta especialmente eficiente, puesto que requiere la migración de patches de un procesador a otro, dando lugar a un excesivo coste de las comunicaciones. 94

109 Capítulo 3: Radiosidad Progresiva: Paralelización Coherencia. En nuestro algoritmo se introduce una barrera de sincronismo al final de cada iteración, que garantiza la coherencia y la actualización completa de la radiosidad de la escena antes de seleccionar un nuevo patch de disparo; sin requerir comunicaciones adicionales. Este valor actualizado de la radiosidad total de la escena permite establecer un criterio global de convergencia, en el que se continua con la próxima iteración solamente si la radiosidad a disparar en dicha iteración es significativa respecto a la radiosidad total de la escena. El hecho de que la asignación de patches sea fija, para evitar penalizaciones por comunicaciones, unido a la presencia de la barrera de sincronismo, hace que el tiempo de ejecución por iteración nunca sea menor que el del procesador mas lento. Mantener un buen balance de carga se convierte entonces en el problema más crítico para arquitecturas de memoria distribuida. Dado la asignación fija de patches a procesadores, resulta también evidente que el uso de múltiples patches de disparo por iteración no es una alternativa válida para mejorar el balanceo de carga. Las razones son dos: 1) Si se emplea la barrera de sincronismo al final de la iteración, el tiempo de cálculo en el procesador más lento sigue siendo, para cada patch, igual o superior al tiempo necesario en el caso de un único disparador. Además, el retardo adicional en la actualización de las radiosidades retarda la convergencia global. 2) Si se elimina la barrera de sincronismo, las comunicaciones necesarias durante la iteración para actualizar el estado del sistema imponen una excesiva penalización al rendimiento. Los resultados experimentales obtenidos para una implementación del algoritmo con disparadores múltiples confirmaron la pobre eficiencia de esta opción. Evaluación de la complejidad del algoritmo. En esta sección se presenta un análisis del coste computacional, el coste de las comunicaciones y del coste de memoria de los algoritmos paralelos propuestos para el método de 95

110 Radiosidad en Multiprocesadores radiosidad progresiva sobre máquinas de memoria distribuida. Complejidad. La complejidad de nuestro algoritmo paralelo es función de la complejidad de la imagen a procesar, de la precisión deseada y del número de unidades de procesamiento. El peor caso para la convergencia es aquel en el que el error permisible y el número de iteraciones obliga a que todos los patches de la escena tengan que ser elegidos como patches de disparo. En este caso la complejidad computacional es: OP ( ( SH+ R F) ) (3.9) donde: P: Es el número de patches en que es subdividida la escena tridimensional. SH: Representa la complejidad del proceso de búsqueda del patch con mayor energía sin disparar entre los N procesadores cada uno de ellos en el subespacio de datos ϒ (patches y sus respectivos elementos) que le ha sido asignado. Por ejemplo, para una distribución por bloques (BLOCK) o cíclica ideal (CICLIC), en la que todos los patches queden P ubicados de forma homogénea en los procesadores, ϒ sería igual a ---. N Para calcular la complejidad SH es necesario tener también en cuenta el tiempo Tc empleado en realizar la comunicación global de los patches seleccionados en todos los procesadores. Esta comunicación global se realiza en dos etapas: una reducción al centro de la malla, seguida de una expansión desde el centro al resto de los procesadores, con el objetivo de solapar la mayor cantidad de comunicaciones posibles. La Figura 3.8 muestra como se realiza este proceso, que tiene una complejidad computacional ON ( ). El coste de buscar el patch de disparo, es pues, SH = O( ϒ + Tc). N0 N1 N3 N4 N5 N6 N7 N8 N9 Figura 3.8 Representación de las comunicaciones realizadas. 96

111 Capítulo 3: Radiosidad Progresiva: Paralelización R F es la parte más costosa del algoritmo, y representa el cálculo y actualización del valor del factor de forma (F) y del valor de radiosidad ( R) en todos los vértices ( v) de los elementos ( e ) que pertenecen al subespacio computacional ( ϒ ) de cada procesador, una vez seleccionado un patch de disparo. Este término viene dado por la siguiente expresión: R F = O( [ 4 { ee ; ϒ} F] + Tc) (3.10) donde: Tc es el tiempo invertido en el proceso de comunicación (similar al descrito anteriormente) necesario para mantener un criterio global de convergencia, y F representa la complejidad del algoritmo que calcula el factor de forma entre las r subdivisiones del patch de disparo y uno de los vértices. Como el cálculo del factor de forma implica evaluar la función de visibilidad para todos los patches de la escena, la complejidad de F será Or ( P) y por tanto: R F = O( [ 4 { ee ; ϒ} r P] + Tc) (3.11) P Suponiendo que el número de patches por procesador es aproximadamente ---, que Tc N depende de una constante de tiempo K en la comunicación y del número de procesadores P ( Tc = K N), y que el número de elementos por patch es n e, entonces ϒ = n e ---, y los N términos de la expresión (3.9) se pueden escribir como: SH = O --- P + Tc N = O P N K N P R F = O 4 n e --- r P+ K N N con lo que coste total del algoritmo paralelo se puede expresar como: O P P P K N + 4 n N e --- r P+ K N N (3.12) A partir de la expresión (3.12) y considerando que K es despreciable respecto al tiempo utilizado cuando sólo se utiliza un solo procesador, se puede concluir que sólo logrando un buen balance de carga ( similar para todos los procesadores) podremos obtener buenos resultados. n e 97

112 Radiosidad en Multiprocesadores Memoria Otro aspecto a tener en cuenta en la evaluación de los algoritmos es el consumo de memoria. En el caso de las distribuciones de datos propuestas el consumo de memoria por procesador viene dado por: Mp ϒ + Me ( e ϒ) + 049Mp, P (3.13) donde Me y Mp representan la cantidad de memoria necesaria para almacenar la estructura de datos correspondiente a un elemento y a un patch, respectivamente. El término 049Mp, P aparece por la necesidad de replicar la información geométrica de los patches, que es el 49% de la información total de cada patch. Como muestra la ecuación (3.13) el consumo de memoria por procesador es igual a una parte constante, debido a la replicación, más una parte (la de los patches asignados) que disminuye conforme aumenta el número de procesadores. Resultados experimentales. Para probar y evaluar la eficiencia de los algoritmos propuestos para máquinas de memoria distribuida se realizaron varios experimentos sobre un Cray T3E, utilizando hasta 32 nodos a 450 Mhz con 128 MB de memoria local. El programa está escrito en lenguaje de programación C, utilizando las librerías PVM de paso de mensaje para implementar el código paralelo, siguiendo un modelo de programación SPMD. En todos los experimentos realizados se han utilizado tres escenas con diferentes complejidades computacionales y distribuciones de las fuentes de luz. La primera (Figura AII.5 del anexo II), a la que hemos llamado IMAG 1 está compuesta por 286 patches y 4561 elementos. Esta es una imagen muy conocida en el entorno de gráficos por computador, llamada imagen de Cornell, puesto que fue con esta imagen con la que en 1985 Cohen probó y validó el método de radiosidad en la universidad de Cornell. De hecho, aun se sigue utilizando esta imagen en esta universidad de Cornell para experimentar con los métodos de radiosidad [Uni]. La segunda escena (IMAG 2) es una representación de una habitación con una mesa, y esta formada por 431 patches y 6191 elementos. Tanto IMAG1 como IMAG2 están bien bal- 98

113 Capítulo 3: Radiosidad Progresiva: Paralelización anceadas, o sea, la diferencia en la cantidad de elementos entre cualesquiera dos patches es muy pequeña. Por último se utilizó para los experimentos una escena (IMAG 3) desbalanceada en la que el número de elementos por patch varía de 1 a 400. Esta escena está constituida por 2056 patches y elementos. En el anexo II Figuras AII.6 y AII.7 se muestra una representación de IMAG2 e IMAG3. Para la ejecución secuencial de las simulaciones se utilizó el propio código paralelo sin la realización de las comunicaciones. De todas formas, las diferencias de tiempos de ejecución entre el programa secuencial y el paralelo sobre un nodo son despreciables (inferiores al 1%). Se probó además que el overhead introducido por las comunicaciones era despreciable respecto al tiempo total de procesamiento, para el peor de los casos (32 procesadores). En la Tabla 3.1 se muestran los tiempos de ejecución para estas escenas utilizando distribuciones cíclica y cíclica ponderada sobre los patches de la misma. CICLICA CICLICA PONDERADA IMAGEN Nº Proc tiempo ejec. % Balance tiempo ejec. % Balance IMAG IMAG IMAG Tabla 3.1 Tiempos de ejecución y balanceo de carga (Distribuciones cíclica y cíclica ponderada). 99

114 Radiosidad en Multiprocesadores Figura 3.9 Aceleraciones (speedup) en memoria distribuida para la imagen IMAG1. Como se muestra de la Figura 3.9 a la Figura 3.11, el máximo speedup obtenido es de 26.1 para 32 procesadores, en la imagen IMAG 2. Se puede observar cómo a medida que aumenta la complejidad de la imagen a procesar aumenta el speedup del algoritmo, lo que demuestra la buena escalabilidad del algoritmo paralelo propuesto. Este aumento se debe, principalmente, a que se obtiene un mejor balance de carga a medida que se dispone de una mayor cantidad de patches a distribuir, dado que con una mayor cantidad de patches se puede reajustar los desbalances imprevisibles a priori debidos a patches que requieren menos computación. En la Figura 3.11 se puede apreciar claramente el impacto negativo, sobre el speedup del algoritmo paralelo, de las imágenes desbalanceadas, es decir imagenes que tienen desequilíbrios grandes en el número de elementos por patch. De los resultados obtenidos se puede concluir además, que el uso de la distribución cíclica ponderada introduce una mejora apreciable (cerca de un incremento de 6 en el speedup) para las imágenes desbalanceadas. 100

115 Capítulo 3: Radiosidad Progresiva: Paralelización Figura 3.10 Aceleración en memoria distribuida para la imagen IMAG2. Figura 3.11 Aceleraciones (speedup) en memoria distribuida para la imagen IMAG3. El overhead de memoria debido a la replicación parcial de la información de los patches 101

116 Radiosidad en Multiprocesadores que forman la escena, se muestra en la Figura Se puede apreciar como su magnitud en cada procesador es muy pequeña y permanece contante con el número de procesadores. Si resulta más significativo el overhhead debido a la replicación de la información geométrica de la escena, que requiere consumir en cada procesador una cantidad de memoria adicional igual al 49% de la memoria total necesaria para almacenar todos los patches de la escena. Sin embargo, es conveniente resaltar que un algoritmo que use replicación completa de la escena necesitaría, para 24 procesadores, 23 veces más memoria que la empleada por el algoritmo secuencial. En cambio nuestro algoritmo, gracias a la replicación parcial y a la distribución de los patches, tan sólo necesitó (en el peor de las pruebas realizadas) aproximadamente el doble de memoria que el algoritmo secuencial. Figura 3.12 Overhead de memoria. 102

117 Capítulo 3: Radiosidad Progresiva: Paralelización Implementación en máquinas de memoria compartida. En el trabajo realizado en la paralelización del algoritmo de radiosidad progresiva también se comprende implementaciones para máquinas de memoria compartida. A continuación se detalla esta implementación. Descripción del algoritmo paralelo propuesto. En máquinas de memoria compartida la réplica y las comunicaciones no son necesarias. Además algunas operaciones que en memoria distribuidas eran realizadas de forma independiente por cada procesador, y que requerían después una comunicación global para la coordinación ahora son realizadas en su totalidad, de forma secuencial, por un procesador, a este procesador le denominaremos procesador maestro. A continuación describimos los pasos para este algoritmo. 1) El procesador maestro selecciona secuencialmente el patch con mayor energía sin disparar en la escena. 2) Entre todos los procesadores se calcula y actualiza la radiosidad en cada uno de los vértices de los elementos para todos los patches que actúan como receptores. 3) Una vez que la radiosidad de todos los patches ha sido actualizada, el procesador maestro comprueba si se ha llegado a alcanzar la convergencia. Si aún no ha sido alcanzada se regresa al paso 1. En la figura 3.13 se muestra el pseudocódigo para este algoritmo; la región definida por la sentencia pragma parallel representa la sección del código realizada en todos los procesadores. 103

118 Radiosidad en Multiprocesadores While n i = 1 R sin_disparar i A i ε FOREACH (patch i escena ) unsend Select_great_unsend_flux_patch ( R i ) endfor pragma parallel pfor (patch j escena ) schedtype (dynamic, interleave, simple) FOREACH (element k j) R k = 0 FOREACH ( vertex v k ) sin_disparar R v = ρ j F v, i R i ENDFOR end pfor end pragma parallel R v = R v + R v = R k + R v R k ENDFOR sin_disparar R j sin_disparar A k R k = R j A j nº_vert. sin_disparar R i = 0 endwhile Figura 3.13 Algoritmo paralelo en memoria compartida. Localidad de datos, balance de carga y coherencia. Como la memoria es compartida por todos los procesadores, no es necesario replicar la información geométrica de los patches para garantizar la localidad de los datos. Por otra parte la propia arquitectura de la máquina se encarga de mantener la coherencia en la memoria de cada procesador. En este tipo de arquitectura existen mecanismos que permiten realizar asignaciones dinámicas de datos, los cuales fueron descritos en el capítulo 2. Utilizando estos mecanismos podemos distribuir los patches que debe calcular cada procesador sin necesidad de establecer comunicaciones. De esta forma, ordenando los patches por número decreciente de elemen- 104

119 Capítulo 3: Radiosidad Progresiva: Paralelización tos, y utilizando una asignación automática por demanda (dynamic), se garantiza un balance uniforme de la carga. Los experimentos realizados nos permiten concluir que con este tipo de asignación se obtienen mejores resultados que con las distribuciones estáticas cíclicas, aún utilizando ponderación. Resultados experimentales. A continuación presentamos los resultados obtenidos al ejecutar nuestra implementación del algoritmo paralelo de radiosidad progresiva sobre el multiprocesador de memoria compartida ORIGIN 2000, utilizando las mismas imágenes que para los experimentos realizados en memoria distribuida. Nuestro primer objetivo al utilizar esta máquina fue comprobar la eficiencia de la detección automática de paralelismo por parte del compilador. Para ésto se probaron todas las opciones de compilación recomendadas por el fabricante [Graa][Grab][Grac], e incluso se probaron una serie de directivas de pragma, que guían al compilador en la detección del paralelismo. Como resultado de estas pruebas se comprobó que, dada la complejidad de los algoritmos secuenciales desarrollados, el compilador era incapaz de generar código eficiente para la ejecución con varios procesadores. De esta forma no quedó otra alternativa que utilizar las bibliotecas que permiten la paralelización manual. También aprovechamos estos experimentos para estudiar el impacto de las diversas técnicas (round-robin o migración de páginas), disponibles en la Origin para realizar los accesos a memoria. Se probó que la diferencia en la eficiencia del algoritmo, de utilizar round-robin a utilizar migración de páginas, era insignificante; se decidió entonces utilizar únicamente la técnica de round-robin. En la Tabla 3.2 se muestra los tiempos de ejecución del algoritmo paralelo para diferentes distribuciones de la lista de patches una vez ordenados por el número de elementos. 105

120 Radiosidad en Multiprocesadores IMAGEN IMAG 1 IMAG 2 IMAG 3 Nº Proc tiempo ejec. BLOQUES CICLICA DINAMICA % Balance tiempo ejec. % Balance tiempo ejec. % Balance , Tabla 3.2 Tiempos de ejecución y balanceo de carga (Distribuciones bloque, cíclica y dinámica). Debido a que en este tipo de arquitectura es imposible distinguir el tiempo invertido en las comunicaciones realizadas internamente, era necesario usar otro parámetro que nos permita medir el balance de carga. Concretamente, se ha utilizado el contador CNT 21 del R10000, que indica el número de operaciones de punto flotante que realiza cada procesador. Así el coeficiente de balance descrito en el capítulo 2, teniendo en cuenta los tiempos de ejecución, se puede definir en función de las operaciones de punto flotante (contador CNT 21) como: ( CNT21( max) CNT21( min) ) %Balance = CNT21( max) De la Figura 3.14 a la Figura 3.16 se muestra la aceleración obtenida para el algoritmo paralelo desarrollado, en las tres escenas de prueba. Se puede comprobar como la aceleración del algoritmo aumenta con la complejidad de la escena, obteniéndose una buena escalabil- 106

121 Capítulo 3: Radiosidad Progresiva: Paralelización idad. Figura 3.14 Aceleración en memoria compartida para la imagen IMAG1. Figura 3.15 Aceleración en memoria compartida para la imagen IMAG2. 107

122 Radiosidad en Multiprocesadores Figura 3.16 Aceleración en memoria compartida para la imagen IMAG3. De forma general, el speedup obtenido en este algoritmo es bueno, siendo muy similar al obtenido para la arquitectura de memoria distribuida hasta 16 procesadores. Los resultados obtenidos cuando se aplica una distribución dinámica son significativamente superiores a cuando se utilizan distribuciones estáticas como la BLOCK (simple) o la CYCLIC (interleave), confirmando la importancia de hacer un reparto uniforme de la carga computacional a nivel de los elementos que forman la escena. La asignación dinámica de los patches, es entonces la mejor opción para garantizar el reparto uniforme de la carga computacional. La poca diferencia en el speedup del algoritmo respecto a la implementación realizada para memoria distribuida, unido al hecho de que en este tipo de arquitectura no hay problemas de overhead, hacen que esta variante de paralelización sea una decisión aceptada. Por último, se probó utilizar una distribución de tipo GSS, pero los resultados no fueron mejores a los obtenidos para la distribución dinámica y, dado que esta distribución implica la ejecución de un planificador propio para cada procesador, no recomendamos que sea utilizada. 108

123 Capítulo 3: Radiosidad Progresiva: Paralelización 3.4. Conclusión. Partiendo de la ecuación de radiosidad discreta obtenida en el capítulo 1, en este capítulo hemos analizado el método progresivo para la solución del sistema de ecuaciones de radiosidad. Tras analizar la secuencia de operación es del algoritmo secuencial, se han descrito las complicaciones que plantea su paralelización, así como las soluciones más interesantes que se han dado, en la bibliografía, para este problema. Se ha presentado también nuestra implementación de nuevos algoritmos paralelos de radiosidad progresiva para arquitecturas SPMD de memoria compartida y distribuida, demostrando su eficiencia frente a otras implementaciones paralelas realizadas con anterioridad. Se han estudiado, en ambos casos, técnicas de distribución de datos, guiadas por criterios de tamaño o número de elementos de los patches, que garantizan buenos balances de carga y buena escalabilidad. Asimismo, el algoritmo de memoria distribuida consigue mantener en un mínimo el coste de comunicaciones, a cambio de aceptar la replicación en cada procesador de la información geométrica de la escena. Sin embargo, los resultados experimentales muestran que el overhead de memoria se mantiene en límites razonables. Por último, se ha podido comprobar la ineficacia de los compiladores actuales para la detección automática de paralelismo, sobre todo en problemas tan irregulares como es el caso de los algoritmos de radiosidad. 109

124 Radiosidad en Multiprocesadores 110

125 Capítulo 4: Método Jerárquico de Solución de la Radiosidad CAPITULO 4 MÉTODO JERÁRQUICO DE SOLUCIÓN DE LA RADIOSIDAD Radiosidad Jerárquica. Como se ha visto en capítulos anteriores, el coste computacional de los programas de radiosidad depende enormemente del número de elementos en que se ha dividido la escena, pues para resolver la ecuación de radiosidad discreta se requiere calcular una interacción entre cada par de elementos. Cada una de esas interacciones implica resolver una doble integral del factor de forma, más el coste adicional de evaluar la función de visibilidad, y puede perfectamente ocurrir que, tras calcular los factores de forma, se compruebe que los elemen- 111

126 Radiosidad en Multiprocesadores tos no tienen un aporte significativo en la iluminación de la escena. Si pudiésemos de algún modo reducir el número de factores de forma que se requieren para propagar la luz a través del entorno, observaríamos un ahorro significativo de tiempo en la computación. En principio, esto no es una tarea trivial, ya que los factores de forma definen interacciones entre los polígonos que componen la escena, y la reducción no debe suponer una reducción de la exactitud en el cálculo de la radiosidad. El método de radiosidad jerárquica consigue reducir el número de factores de forma a calcular, realizando una subdivisión adaptativa de la escena. Para ello utiliza algunas soluciones que han dado buenos resultados al problema de los N cuerpos en la física gravitacional Relación entre la Radiosidad jerárquica y el Problema de los N cuerpos. Considérese un sistema de N objetos independientes en el espacio, donde cada uno ejerce una fuerza gravitacional sobre todos los demás. El movimiento de cada cuerpo requiere una evaluación explícita de n ( n 1) interacciones. Obviamente, simular la evolución de sistemas de tamaño galáctico (que contienen millones de estrellas) tiene un coste computacional prácticamente prohibitivo. Podemos sin embargo hacer una observación que nos permite reducir el coste del problema: normalmente no necesitamos una precisión perfecta en el modelo, pues la precisión en los cálculos está limitada por el hardware y el software empleado en el computador. Consideremos, por ejemplo, un cuerpo que está en el espacio, separado por una gran distancia de un grupo de dos o más cuerpos, los cuales están relativamente cercanos entre si. Dada una determinada precisión, existe una distancia asociada a partir de la cual la magnitud y dirección del campo gravitacional individual de cada uno de los dos cuerpos en el grupo no es distinguible para el cuerpo aislado. A partir de esta distancia, se pueden sustituir los dos campos individuales por uno que sea dos veces más fuerte en la dirección deseada. Esta idea, conocida en la literatura como clustering interactions, se puede aplicar recursivamente a cualquier grupo grande de cuerpos. La idea básica es que si la interacción entre dos cuerpos decrece con la distancia y el tamaño de los cuerpos, habrá entonces siempre una distancia en la que un par de cuerpos podrá ser considerado como un gran cuerpo de un 112

127 Capítulo 4: Método Jerárquico de Solución de la Radiosidad tamaño mayor, y a su vez éste podrá ser combinado con otro, y así sucesivamente. Se ha podido probar que, utilizando esta técnica, se puede obtener un algoritmo que tenga una complejidad computacional de orden On ( ) en vez de orden On ( 2 ) [GR87]. Hanrahan y Salzman [HS90] observaron que el cálculo de los factores de forma tenían mucho en común con el problema de los N cuerpos. En primer lugar, en ambos casos se consideran interacciones entre todos los pares de objetos. Además, tanto la fuerza gravitacional como el factor de forma son proporcionales al tamaño de los objetos e inversamente proporcionales al cuadrado de la distancia entre ellos. Por otra parte los dos problemas no son idénticos, ya que la física gravitacional y la transferencia de energía luminosa son diferentes. Por ejemplo, los algoritmos de los N cuerpos comienzan con n partículas que van siendo reunidas en grandes grupos. Sin embargo, el algoritmo de radiosidad comienza con un número reducido de grandes patches, que son subdivididos en elementos más pequeños. Otra gran diferencia es que, mientras el problema de los N cuerpos se basa en una ecuación diferencial, resolver el problema de la radiosidad requiere dar solución a una ecuación integral. Sin embargo, se ha demostrado que se puede resolver el problema de la radiosidad de forma eficiente utilizando técnicas iterativas, y cada iteración es similar a un paso en el cálculo de la fuerza en el problema de los N cuerpos, aunque en el caso de la radiosidad resolver esta iteración de forma eficiente requiere una estructura de datos mucho más complicada. Finalmente, el algoritmo de los N cuerpos tiene la ventaja de la superposición lineal, mediante la cual el potencial debido a un grupo de partículas es la suma de los potenciales de las partículas individuales. La radiosidad se comporta de forma diferente, puesto que una superficie puede obstaculizar el transporte de energía entre dos patches, lo que hace que el sistema sea no lineal. De esta forma el cálculo de la oclusión introduce un coste computacional adicional en el algoritmo de radiosidad. A pesar de estas diferencias, los aspectos comunes de ambos problemas hacen que se puedan aplicar las ideas generales de los algoritmos de agrupamiento para los N cuerpos al problema del factor de forma en el cálculo de la radiosidad [HS90][Han91]. Desde el punto de vista físico el algoritmo jerárquico de radiosidad se basa en el hecho de que los pequeños detalles no tienen ninguna influencia cuando nos encontramos muy distantes de los mismos. Por ejemplo, tomemos la escena de la Figura 4.1, donde se muestra una 113

128 Radiosidad en Multiprocesadores habitación que contiene una mesa sobre la que se ha puesto un objeto. Aunque la luz reflejada por la parte superior de la mesa influye sobre la iluminación de la pared, se ve de forma intuitiva que el sombreado en la pared no depende de manera significativa de los pequeños detalles de la iluminación que abandona la parte superior de la mesa. Igualmente, si retiramos los objetos que se encuentran encima de la mesa la sombra sobre la parte superior de la misma se ve ligeramente alterada; sin embargo, la sombra sobre la pared no cambia mucho. Figura 4.1 Influencia de los objetos en la iluminación de la escena. Representar la contribución sobre la pared de la parte superior de la mesa por un solo valor promedio da un resultado similar a calcular las contribuciones individuales de los pequeños elementos que componen la mesa. Sin embargo, calcular la radiosidad en la parte superior de la mesa con todos los detalles de luces y sombras, no es posible si consideramos el promedio sobre toda la superficie, siendo necesario calcular la aportación recibida por todas las pequeñas regiones que la componen Radiosidad Jerárquica en dos niveles El primer algoritmo jerárquico para radiosidad fue desarrollado por Cohen [CW93]. Dicho algoritmo utiliza una jerarquía de dos niveles, y está basado en la distinción entre fuentes y receptores. Las superficies se consideran subdivididas de forma más gruesa en patches para representarlas cuando actúan como fuentes de iluminación a otras superficies; las mismas superficies son subdivididas de forma más fina cuando reciben iluminación, dando lugar a los elementos. Esta malla de elementos puede ser subdividida de forma recursiva hasta que dichos elementos alcancen el tamaño adecuado, obteniéndose la información 114

129 Capítulo 4: Método Jerárquico de Solución de la Radiosidad suficiente para la correcta iluminación de las superficies. Normalmente las imágenes son representadas utilizando la subdivisión final en elementos de las superficies. El algoritmo original de radiosidad jerárquica de dos niveles desarrollado por Cohen sigue estos pasos: 1- Dividir las superficies en m patches y n elementos (m<<n), donde cada patch está compuesto por un subconjunto de elementos. Los patches actuarán como fuentes o emisores y los elementos actuarán como receptores. Los patches están indexados como i o j, y los elementos como q. 2.- Calcular los m x n factores de forma desde cada elemento a cada patch. Una entrada simple en la matriz de los factores de forma, desde el elemento q al patch j sería. 3.- Calcular los m x m factores de forma entre pares de patches i,j, a partir de los factores de forma elemento-patch, sumando todos los factores de forma de los elementos q pertenecientes al patch i, ponderados por la relación de áreas -----, es decir: F ij F ij (4.4) 4.- Resolver el sistema de ecuaciones de orden m x m, utilizando el método de Gauss- Seidel, para obtener las radiosidades de los patches: (4.5) 5.- Calcular las radiosidades de los elementos. Para ello utilizaremos los factores de forma calculados en el paso 2 y la radiosidad de los patches calculada en el paso 4, con estos datos obtenemos la siguiente expresión: = q i A q F qj A i R i = E i + ρ i R j F ij m j = 1 (4.6) 6.- Si la diferencia de radiosidad entre elementos vecinos sobrepasa un determinado valor se hace necesario subdividir dichos elementos, tras lo cual hay que calcular nuevos factores de forma patch-a-elemento, pero únicamente para los nuevos elementos. Las radiosidades de los nuevos elementos pueden ser calculadas directamente a partir de las radiosidades de los patches originales, sin necesidad de resolver un nuevo sistema m R q = ρ q R j F qj. j = 1 A q A i F qj 115

130 Radiosidad en Multiprocesadores de ecuaciones. Este último paso puede ser repetido de forma adaptativa tantas veces como sea necesario. En la práctica la subdivisión recursiva se consigue construyendo un árbol cuadrado de elementos, como el que se representa en la Figura 4.2. Figura 4.2 Estructura utilizada en la jerarquía de dos niveles Limitaciones de la jerarquía de dos niveles. La radiosidad jerárquica de dos niveles realiza el agrupamiento de elementos en patches, permitiendo calcular un solo factor de forma desde cada patch a cada elemento (en vez de calcular el factor de forma entre cada elemento). Esto reduce el número de entradas a calcular en la matriz A (matriz de factores de forma). El método asume que un determinado número de factores de forma dentro de una misma fila de A están íntimamente relacionados, en particular, el factor de forma desde un determinado elemento a todos los elementos de un determinado patch es considerado como un valor constante, ponderado por el área de cada uno de los elementos que forman el patch. Utilizando el principio de reciprocidad se puede considerar de igual forma el factor de forma desde todos los elementos de un determinado patch a un determinado elemento. Para entender mejor estas afirmaciones y los problemas de este método vamos a considerar un ejemplo en dos dimensiones (conocido también como flatland), utilizado por primera vez por Heckbert [Hec91]. En este ejemplo las superficies no son más que líneas en el plano. Imaginemos entonces un modelo formado por dos líneas perpendiculares con un punto común, como se muestra en la Figura 4.3 (a). Para este caso se cumple también que, en el núcleo de la ecuación (1.41), Gxz (, ) depende del coseno de los ángulos que forman la línea 116

131 Capítulo 4: Método Jerárquico de Solución de la Radiosidad que conecta dos puntos (uno en cada una de las superficies) y la normal en cada uno de ellos, y es inversamente proporcional a la distancia que hay entre ellos (para el modelo en tres dimensiones es inversamente proporcional al cuadrado de esta distancia). Por la sencillez de este modelo no hay oclusiones. (b) (a) P i P j P i P i P j ,9 1,10 2,9 2, P j I P i (c) I P j Figura 4.3 (a) Superficies en 2D (segmentos de recta). (b) Matriz A de los factores de forma. (c) Cuadrante superior de la matriz a ampliado. El valor de G disminuye gradualmente a medida que aumenta la distancia entre las superficies; esto se ve reflejado en los valores de cada una de las entradas de la matriz de factores de forma representada en la Figura 4.3 (b). Cada una de las superficies (es decir de las líneas) ha sido subdividida en ocho elementos; como existe una fila y una columna para cada uno de los elementos de las dos superficies, se obtiene una matriz de 16x16. Las interacciones entre elementos de una misma superficie son representadas por la submatriz identidad (cuadrantes superior izquierdo e inferior derecho) y las interacciones entre elementos de diferentes superficies son representadas en las submatrices de los cuadrantes inferior izquierdo y superior derecho; éste último ha sido ampliado en la Figura 4.3 (c). 117

132 Radiosidad en Multiprocesadores Este ejemplo ha sido intencionadamente dispuesto de tal forma que la relación de vecindad entre las entradas de la matriz representa la relación física que existe entre las superficies. Por ejemplo, en el cuadrante superior derecho, la esquina superior derecha representa interacciones entre elementos que se encuentran en los extremos más lejanos de ambas superficies. De acuerdo con el comportamiento de la función G estas entradas tienen un valor más pequeño, y varían más suavemente que aquellas que se encuentran en la esquina inferior izquierda del cuadrante, que representan elementos físicamente cercanos. Esto se ilustra en la Figura 4.4, donde se visualiza el valor del factor de forma para el cuadrante superior derecho de la matriz. Figura 4.4 Valor de las entradas en el cuadrante superior derecho del operador A. El valor es proporcional al área del círculo. Si agrupamos las dos primeras columnas en la matriz de factores de forma (se suman los factores de forma de los elementos de cada fila para las dos columnas agrupadas), estamos suponiendo que la diferencia del valor del factor de forma para cada par de elementos en cada una de las filas es muy pequeño. Sin embargo, como se aprecia en la Figura 4.4, ésto sólo es válido para algunas filas de la matriz (las superiores). Si agrupamos las filas en lugar de agrupar las columnas podemos llegar a una conclusión análoga. En el caso de tener un modelo tridimensional complejo, aunque no se puede garantizar la relación física según la relación de vecindad en la matriz, como en el caso del ejemplo en 2D, el principio sigue siendo el mismo: la reducción en la complejidad de la matriz se consigue agrupando filas o columnas contiguas enteras. Las limitaciones de este algoritmo de dos niveles son claras. 1- En primer lugar el agrupamiento de elementos en patches es fijo: el mismo agrupamiento es aplicado a todas las filas (o columnas) afectadas en la matriz, independientemente de que los elementos emparejados tengan o no valores similares. 2- Una segunda limitación es que entradas que se encuentren en una misma columna de la matriz no pueden ser agrupadas entre ellas, debido a la distinción que se realiza entre fuentes y receptores. 118

133 Capítulo 4: Método Jerárquico de Solución de la Radiosidad Jerarquía Multinivel La idea de la subdivisión jerárquica en múltiples niveles fue generalizada por Hanrahan [HSA91]. La Figura 4.5 muestra una subdivisión jerárquica básica en la cual dos superficies han sido subdivididas recursivamente en una jerarquía de elementos (llamados también subpatches). La división recursiva de cada superficie da como resultado un árbol cuadrado donde cada nodo representa una porción de la superficie. En la jerarquía multinivel la energía puede ser disparada desde cualquier nodo en cualquier nivel en la subdivisión jerárquica. Una de estas interacciones es indicada en la Figura 4.5 donde la energía de un grupo de siete subpatches (a) es transportada a un grupo de cuatro subpatches (b). (a) (b) Figura 4.5 Interacción entre dos grupos en la jerarquía multinivel. A pesar de que las interacciones agrupadas pueden ser representadas como bloques constantes en la matriz de factores de forma, resulta una forma poco eficiente para realizar el almacenamiento. En vez de almacenar de forma explícita la matriz, los métodos de radiosidad jerárquica crean una lista de enlaces, cada uno de los cuales describe una interacción entre dos o más subpatches. Los enlaces son creados en el proceso de subdivisión, en el mismo orden en que se va realizando el refinamiento. Cada enlace conecta a un número constante de nodos dentro del 119

134 Radiosidad en Multiprocesadores árbol, siendo el número de nodos proporcional al número de enlaces. Hanrrahan [Han91] demostró que para dos patches perpendiculares el número de interacciones era de O( n), y que el peor caso se obtenía para dos patches paralelos con un tamaño mucho mayor que la distancia que los separa, donde el número de interacciones es entonces de orden On ( ); siendo n el número final de subdivisiones de la escena Cálculo de visibilidad acelerado usando árboles BSP. La partición binaria del espacio (BSP) fue introducida por primera vez por Schumaker [SGS69], quién observó que, separando diferentes planos, un entorno se podía ordenar para determinar grupos de objetos que estuviesen en la misma cara de un plano de partición; estos objetos no podrían ser entonces ocultados por objetos situados en el otro lado del plano. Esta idea fue extendida posteriormente por Fuchs [FKN80][FAG83] con el fin de construir un algoritmo eficiente para el ocultamiento de superficies en escenas formadas por poliedros. Thibault y Naylor [TN87] utilizaron los árboles BSP para representar sólidos y realizar operaciones boleanas. El método de los árboles BSP sólo es aplicable en escenas formadas por polígonos. Se basa en el hecho de que los polígonos pueden ser definidos de tal forma que tengan dos caras, una frontal y otra posterior. Si en la ecuación del plano separador, Ax + By + Cz = 0 se sustituye el valor ( x 1, y 1, z 1 ) perteneciente a un determinado polígono, podemos obtener uno de los siguientes resultados: - Si Ax 1 + By 1 + Cz 1 > 0, el punto ( x 1, y 1, z 1 ) se encuentra en la cara frontal o positiva del plano (a la derecha en el árbol BSP). - Si Ax 1 + By 1 + Cz 1 < 0, el punto ( x 1, y 1, z 1 ) se encuentra en la cara posterior o negativa del plano (a la izquierda en el árbol BSP). - Si Ax 1 + By 1 + Cz 1 = 0 podemos decir entonces que el punto pertenece al plano. Dada una escena formada por un grupo de polígonos definidos en un sistema de coordenadas espaciales, el árbol BSP se puede construir seleccionando un polígono de forma aleatoria como nodo raíz (root) del árbol BSP. Los restantes polígonos son clasificados respecto al root en tres grupos: al frente (para los que están delante del raíz), atrás (para los que están en la cara posterior del raíz), y sobre el polígono (para los que comparten el mismo 120

135 Capítulo 4: Método Jerárquico de Solución de la Radiosidad plano del raíz). Si un determinado polígono tiene vértices tanto en la cara anterior del plano como en la cara posterior del mismo, entonces debe ser subdividido en dos nuevos polígonos por el plano que forma el polígono root. Este procedimiento de construcción del árbol BSP se aplica recursivamente a los polígonos situados a cada lado del plano de corte, hasta que finalmente quede un solo polígono en ambos lados. Para poder entender mejor como trabaja este algoritmo supongamos que tenemos una escena como la que se muestra en la Figura 4.6(a), donde el signo + indica cual es la cara anterior de cada polígono. Vista superior + + D B + F + C + E I G + H+ + A B + D C E + H G + F + I + A (a) (b) Figura 4.6 Construcción del árbol BSP. Seleccionamos inicialmente al polígono E como nodo raíz del árbol BSP, y dividimos el espacio tridimensional utilizando el plano que pasa por el polígono. De los polígonos que se encuentran en la cara anterior a este plano seleccionamos el G para volver a realizar la partición de este subespacio, mientras que de los polígonos que se encuentran en la cara posterior seleccionamos el B. Estos nuevos polígonos seleccionados se colocan en el nodo derecho del árbol (el que se encuentra en la cara anterior) y en el nodo izquierdo (el que se encuentra en la cara posterior). El procedimiento continúa recursivamente hasta obtener un árbol como el que se representa en la Figura 4.6(b). Cuando aplicamos esta técnica para acelerar el cálculo de la visibilidad en el algoritmo de radiosidad, el árbol BSP es construido al inicio del algoritmo antes de comenzar el cálculo de radiosidad. 121

136 Radiosidad en Multiprocesadores Dado una pareja de patches que actúan de emisor y receptor, respectivamente, el BSP es usado para ordenar un recorrido exhaustivo por la lista de patches de la escena, verificar para cada patch si ocluye la línea de visión entre patches, pero evitando esta comprobación para aquellos patches que trivialmente (por detrás del emisor o del receptor) no pueden generar oclusiones. Para ello se parte del patch emisor, y se hace un recorrido exhaustivo en profundidad del árbol, respetando, siempre que exista la posibilidad, la regla de bifurcar sólo hacia la derecha. Si no ocurre ninguna oclusión el recorrido del árbol termina en el patch destino. En la Figura 4.6(b) se muestra como se debe recorrer el árbol en nuestro ejemplo, al calcular la visibilidad entre B e I. La principal ventaja de aplicar la técnica del árbol BSP es que la lista de patches que deben ser analizados, al comprobar la visibilidad entre dos patches cualesquiera, estará compuesta exclusivamente por patches que se encuentren espacialmente entre los dos patches analizados; evitando de esta forma los patches que, por no encontrarse entre ellos, nunca provocarían una oclusión Algoritmo de radiosidad jerárquica. A continuación se expone una posible implementación secuencial del algoritmo de radiosidad jerárquica. Para poder entender mejor como trabaja cada uno de los pasos del algoritmo, lo hemos acompañado con un ejemplo de su aplicación sobre una escena simple, mostrada en la Figura 4.7(a) y compuesta por sólo 3 patches. Para ganar en claridad hemos denominado patch receptor al patch cuya radiosidad esta siendo calculada, y hemos denominado patch fuente a todos aquellos patches que contribuyen a la radiosidad del patch receptor. La Figura 4.9 muestra el pseudocódigo para este algoritmo, el cual podemos dividir en los siguientes pasos: 1 Inicialmente se crea un árbol BSP a partir de la descripción de la escena. En nuestro ejemplo, la Figura 4.7(b) muestra el árbol BSP correspondiente a la escena representada en la Figura 4.7(a). 2 Al tiempo que se construye el árbol BSP, para cada uno de los patches iniciales se 122

137 Capítulo 4: Método Jerárquico de Solución de la Radiosidad elabora también su lista de enlaces o interacciones. Cada una de las entradas de la lista representa una interacción, y apunta hacia otro patch inicial, potencialmente visible desde el patch que está siendo analizado; al tiempo de crear el enlace, se calcula el factor de forma entre ambos. En el ejemplo, la Figura 4.8(a) muestra el árbol BSP con la lista de iteraciones iniciales para la escena de la Figura 4.7(a). 2 TOP VIEW (a) 1 3 (b) Figura 4.7 (a) Escena de ejemplo, (b) árbol BSP para esta escena (a) (b) Figura 4.8 (a) Interacciones iniciales, (b) refinamiento para uno de los enlaces. 3 En este paso se inicia un proceso iterativo para el cálculo de la radiosidad. Para cada uno de los patches en el árbol BSP se calcula la radiosidad debida a cada uno de los enlaces de su lista de interacciones. Si el aporte de radiosidad del enlace es más grande que un determinado valor ( B ε F ε ), se desencadena un procedimiento de refinamiento, que comienza con la subdivisión del patch fuente o del patch destino involucrados en el enlace; llamaremos subpatches a estos nuevos patches. Como cri- 123

138 Radiosidad en Multiprocesadores terio general el patch seleccionado será aquél que tenga una mayor área, y el proceso de refinamiento funciona de la siguiente forma: a) El patch es subdividido formando un árbol cuadrado, y cada uno de los hijos hereda del padre el valor de radiosidad. b) Si el patch subdividido es el patch fuente, es sustituido por sus hijos en la lista de interacciones del patch receptor, y continúa el cálculo de la radiosidad para el patch receptor. c) Si el patch subdividido es el patch receptor, cada uno de los nuevos hijos hace una copia en su lista de interacciones del patch fuente, y se borra el enlace de la lista de interacciones del padre. De esta forma se continúa el cálculo de la radiosidad atravesando los árboles cuadrados en profundidad, pudiéndose realizar nuevas subdivisiones de manera recursiva. En el ejemplo de la Figura 4.8(b), se muestra el proceso de refinamiento para un enlace entre los patches 2 y 3, siendo 2 el patch receptor. Cuando un patch receptor ha terminado un proceso de refinamiento se atraviesan los árboles cuadrados de abajo hacia arriba, y cada nodo calcula la radiosidad debida al aporte de cada uno de los hijos, ponderada por el área del mismo. De esta forma se actualizan los valores de radiosidad en cada nivel del árbol para un determinado patch. 4 Una vez que todos los patches y subpatches en la escena han procesado todas las interacciones de sus respectivas listas, se obtiene el total de radiosidad de toda la escena sumando la radiosidad de los patches y ponderándola por el área de los mismos. Se comprueba la convergencia comparando este valor con el de la iteración anterior, si el nivel de convergencia deseado no se ha alcanzado aun, el algoritmo continúa, debiendo retornar al paso 3. 5 Una vez que la solución converge, la imagen es mostrada (anexo II) utilizando la radiosidad en los vértices de los subpatches de las ramas. Debe destacarse que el proceso de refinamiento garantiza que cada lista de interacciones del patch contenga el patch más grande cuya interacción no causa subdivisión. Además diferentes patches pueden interactuar con diferentes niveles del mismo árbol cuadrado; esto significa que un determinado patch que interactúa con un determinado nodo de un árbol cuadrado no necesita conocer nada sobre los hijos creados a partir de ese nodo, a menos que 124

139 Capítulo 4: Método Jerárquico de Solución de la Radiosidad la radiosidad resultante sobrepase el error. FOREACH (patch P () i escena ) Inserta P () i en el árbol BSP FOREACH ( P () j BSPtree, ( j i) ) Calcula F ji y F ij Crea enlace( i-j) ENDFOR ENDFOR while ( convergencia) FOREACH (patch P () i BSPTree Process_ray ( P ( k) ): FOREACH (Interaction j I( Pi ) ) if ( F ij B j > B ε F ε AND ( A i, A j ) > A ε ) Divide ( A i or A j ) y Calcula F (enlace nuevo) Calcula visibilidad para nuevos enlaces ( ) R () i = ρ i VIS( i, j)f ij R j + ( ) endwhile ENDFOR ENDFOR endwhile () R parent i if ( () leaft_cuad_tree ) FOREACH(subpatch P ( k) P () i ) Process_rays ( P ( k) ) ENDFOR else R () i = R () i + E () i while ( no sea el nodo raiz i= indice_del_padre_de (i) Figura 4.9 Algoritmo de radiosidad jerárquica implementado. P i 1 R () i = 4 l = 4hijosde() i -- R l Este algoritmo se probó sobre una arquitectura Silicon Graphics. Este tipo de arquitectura brinda grandes ventajas para el desarrollo de aplicaciones gráficas, pues en primer lugar, permite la utilización de un hardware específico para la realización del Z buffer necesario para la renderización (ANEXO II). Además podemos disponer de las ventajas que proporciona el uso de las bibliotecas de Open GL e Iris GL, para la programación en 3D. En la Tabla 4.1 se muestran los tiempos de ejecución para las imágenes de prueba. La primera (IMAG 1) es una variante de la imagen utilizada por Hanrrahan [Han91], y la segunda es una variante de IMAG 1 en la que se ha aumentado la complejidad replicando objetos en la misma. La Figura 4.10(a) muestra los patches de entrada después de la construcción del árbol BSP, y en la Figura 4.10(b) muestra las subdivisiones de la escena resultante una vez finalizado el algoritmo. () () 125

140 Radiosidad en Multiprocesadores La representación de la escena se muestra en el anexo II figura AII.10. Imagen Nº Iteraciones Nº Patches Nº Elementos Nº Interacciones Tiempo de ejecución IMAG IMAG Tabla 4.1 Resultados de la ejecución del algoritmo secuencial sobre una SGI Indigo 2. (a) (b) Figura 4.10 (a) Subdivisión inicial de la escena, (b) subdivisión después de haber aplicado el algoritmo Radiosidad Jerárquica en Multiprocesadores. A pesar de la reducción en la complejidad computacional introducida por el algoritmo jerárquico, el número final de patches en la escena sigue siendo aun muy grande, por lo que el tiempo necesario para calcular los factores de forma y los requerimientos de memoria para almacenarlos son también grandes. Obtener tiempos de renderización prácticos sólo es posible con el uso de las técnicas de procesamiento paralelo Trabajos previos. En la literatura se pueden encontrar varios trabajos sobre implementaciones paralelas del método jerárquico para el cálculo de radiosidad, destacándose, por los buenos resultados obtenidos, las implementaciones realizadas sobre máquinas de memoria compartida. Sin 126

141 Capítulo 4: Método Jerárquico de Solución de la Radiosidad embargo, los resultados obtenidos para máquinas de memoria distribuida son en general discretos. Singh et. al. [SGL94] propuso una implementación que realizaba la paralelización sobre las interacciones, utilizando un mecanismo de distribución dinámica de tareas para mantener el balance de carga. El artículo presenta muy buenos speedup para la implementación de este algoritmo en máquinas de memoria compartida (Dash y Challenge). Sin embargo, su implementación en máquinas de memorias distribuida (ipsc/860) solamente se obtuvo un speedup de 11 para 32 procesadores, debido al gran número de comunicaciones requeridas para mantener la redistribución de tareas; y al overhead de memoria introducido por la réplica del árbol BSP y los mecanismos de coherencia. Funkhouser [Fun96a] presentó un grupo de algoritmos iterativos para realizar la paralelización a nivel de patches, utilizando una configuración maestro-esclavo sobre un grupo de estaciones de trabajo. Se obtuvieron aceleraciones razonables hasta 8 procesadores para escenas muy complejas, pero la escalabilidad del algoritmo se ve grandemente comprometida por el cuello de botella que introducen las comunicaciones en el maestro. Zareski [Zar95] también implementó una versión paralela para un grupo de estaciones de trabajo, utilizando una configuración maestro-esclavo, pero la paralelización se realizaba en el nivel de interacciones, por lo que el overhead producido por las comunicaciones y los cuellos de botella en el procesador que actúa como maestro (host) afectaban fuertemente la eficiencia del algoritmo. Finalmente, Bohn y Garmann [BG95] realizaron una implementación del algoritmo jerárquico sobre el Connection Machine 5. Este algoritmo divide el problema en tareas independientes, las cuales son consideradas como nodos de un grafo. El excesivo coste de las comunicaciones entre los nodos del grafo para mantener la coherencia de los datos distribuidos en las memorias de los procesadores (los cuales son movidos temporalmente, y no copiados cuando son necesitados en un determinado procesador) hace que la aceleración del algoritmo sea bastante baja, con un speedup de 8.4 para 64 procesadores Algoritmo paralelo. Si consideramos la descripción del algoritmo secuencial de radiosidad jerárquica, es fácil 127

142 Radiosidad en Multiprocesadores ver que este problema presenta una distribución final de subpatches muy irregular, e impredecible en tiempo de compilación. En consecuencia la paralelización de este algoritmo no puede abordarse con las distribuciones habitualmente empleadas para problemas regulares, y requiere considerar cuidadosamente la granularidad empleada en el algoritmo. Para la radiosidad jerárquica existen tres niveles posibles de paralelismo: 1 ) En un nivel más grueso, el paralelismo es posible sobre las superficies (polígonos de entrada) de la escena. Sin embargo, el gran tamaño de estos polígonos, unido a la gran irregularidad e imprevisible distribución sobre los procesadores de los polígonos resultantes después del refinamiento, hace extremadamente difícil obtener un buen balance de carga en este nivel. 2 ) Un nivel intermedio de paralelismo es posible sobre los patches en los que las superficies son inicialmente subdivididas después de la creación del árbol BSP, pudiéndose obtener un aceptable balance de carga en este nivel. 3 ) Finalmente, es posible aplicar un paralelismo de grano fino sobre las interacciones calculadas para cada patch. Como los árboles cuaternarios de los patches son creados durante el proceso de cálculo, todos los niveles de paralelismo descritos anteriormente implican comunicaciones y sincronizaciones entre los procesadores. La eficiencia del algoritmo paralelo depende en gran medida de la minimización del número de comunicaciones requeridas. Nuestra implementación del algoritmo jerárquico de radiosidad paraleliza el algoritmo en el segundo nivel, sobre el grupo de patches de la escena (patches en los cuales son divididas las superficies antes de comenzar el proceso iterativo), y utiliza un modelo de tipo SPMD. Este algoritmo (Figura 4.11) utiliza un planificador dinámico centralizado para mantener el balance de carga y se puede dividir en los siguientes pasos: 1 ) Cada procesador genera su propia copia local de todo el árbol BSP. 2 ) La lista de patches es ordenada por el planificador en orden decreciente del área. 3 ) Durante la primera iteración el planificador asigna por demanda patches a los procesadores. Cuando un patch es asignado a un procesador, su radiosidad es totalmente calculada; las subdivisiones requeridas en el proceso de refinamiento son almacenadas localmente. 4 ) Una vez que todos los patches han sido asignados, y su radiosidad calculada, los procesadores entran en una fase de comunicación global en la que los valores de radi- 128

143 Capítulo 4: Método Jerárquico de Solución de la Radiosidad osidad y las estructuras de los árboles cuaternarios son actualizadas. 5 ) A partir de aquí la segunda y las siguientes iteraciones utilizarán siempre la misma asignación con que finalizó la primera iteración. En cada iteración cada procesador recalcula la radiosidad para todos los patches que le han sido asignados. 6 ) Al final de cada iteración los valores de la radiosidad total son actualizados en una fase de comunicación global, y la convergencia es verificada. Si no se ha alcanzado aún la convergencia, el algoritmo regresa al paso 5. FOREACH (patch P () i escena ) Inserta P () i en el árbol BSP FOREACH ( P () j BSPtree, ( j i) ) Calcula F ji y F ij Crea enlace( i-j) ENDFOR ENDFOR FORALL Processor while ( convergencia) FOREACH (patch P () i BSPTree Process_ray ( P ( k) ): FOREACH (Interaction j I( Pi ) ) if ( F ij B j > B ε F ε AND ( A i, A j ) > A ε ) Divide ( A i or A j ) y Calcula F. enlaces nuevos Calcula visibilidad para nuevos enlaces ( ) R () i = ρ i VIS( i, j)f ij R j + ( ) if ( () leaft_cuad_tree ) FOREACH(subpatch P ( k) P () i ) Process_rays ( P ( k) ) ENDFOR else R () i = R () i + E () i while ( no sea el nodo raiz) i= indice_del_padre_de (i) endwhile ENDFOR ENDFOR Proceso de comunicación Global() endwhile ENDFORALL Figura 4.11 Algoritmo paralelo para el método de radiosidad jerárquica. Tanto el valor de radiosidad de cada subpatch como el árbol jerárquico para cada patch son actualizados en dos comunicaciones: P i 1 R () i = 4 l = 4hijosde() i -- R l () R parent i 1 ) Para cada uno de los subpatches fuentes que se encuentran en la Jerarquía de árboles locales de un determinado procesador, se realiza una petición al procesador para el () () 129

144 Radiosidad en Multiprocesadores cual el padre de este subpatch es un patch receptor, solicitando el valor actual de la radiosidad del subpatch. Si el patch receptor aun no ha sido subdividido, en el procesador que lo posee hasta el nivel requerido, el mensaje inicia el refinamiento del patch en dicho procesador hasta que el nivel requerido sea alcanzado. 2 ) El valor actual de radiosidad es transmitido. Los patches son identificados con un único identificador en el árbol BSP, lo que permite establecer un identificador global para cada subpatch de cada patch de la escena, mediante la siguiente función de indexación: indice_subpatch = 4 l Ip 4 l hp 3 donde PI es el índice del padre del subpatch, l es el nivel de profundidad en el árbol del ancestro inmediato del subpatch, y hp son las ramas (0 a 3) ocupadas por el subpatch en el último árbol cuadrado. A continuación describiremos el impacto que tienen sobre el algoritmo los problemas de coherencia, localidad de datos y balance de carga Coherencia. En nuestro algoritmo la coherencia es mantenida con una granularidad temporal gruesa, dado que los datos son actualizados solo al final de cada iteración. Esencialmente, ésto significa que, mientras la ejecución en un solo procesador utiliza una iteración de Gauss Seidel, la ejecución para varios procesadores emplea una iteración de Gauss-Seidel modificada, pues usa durante cada iteración algunos valores de radiosidad no actualizados. En consecuencia la convergencia del algoritmo paralelo es algo más lenta; sin embargo, el impacto de las iteraciones adicionales sobre el tiempo total de cálculo es despreciable. Existen dos razones para ello: en primer lugar, el número de iteraciones extras necesarias no es muy grande (menor o igual que 2 en todas las pruebas realizadas). En segundo lugar, como cada iteración a partir de la segunda utiliza los factores de forma ya calculados en la primera, su contribución al tiempo total es muy pequeña. Este hecho se puede apreciar en la tabla 4.2, que muestra, para las dos escenas de prueba, el tiempo de cálculo total y los tiempos parciales 130

145 Capítulo 4: Método Jerárquico de Solución de la Radiosidad para cada iteración medidos en una estación de trabajo monoprocesadora SGI Indigo-2. Imagen 1ª Iter. 2ª Iter. 3ª Iter. 4ª Iter. 5ª Iter. 6ª Iter. Total Imag Imag Tabla 4.2 Tiempo de Ejecución para las distintas Iteraciones de Algoritmo. Computador SGI Indigo Localidad de Datos. La réplica del árbol BSP garantiza la localidad en cada procesador de todos los datos necesarios en el cálculo de visibilidad, necesario en la determinación del factor de forma; de esta forma no se necesitan comunicaciones hasta el final de una iteración La réplica parcial de la jerarquía de los árboles cuadrados también garantiza la localidad, evitando comunicaciones y sincronizaciones de control, requeridas si se mantiene una sola copia de los árboles refinados para cada patch. Esta réplica también introduce overhead de memoria, pero su impacto, como se verá posteriormente, es relativamente pequeño Balance de carga. Si utilizamos un paralelismo de grano medio, lograr un buen balance de carga para este algoritmo sin degradar la eficiencia total no es trivial, debido a dos razones: 1 Distribución irregular de las computaciones: Como ya se mencionó anteriormente, la jerarquía de árboles resultante es muy irregular, y además no se puede predecir en tiempo de compilación. Esto significa que distribuciones estáticas de datos como BLOCK o CYCLIC no son capaces de garantizar un buen balance de carga. 2 Distribución irregular del tiempo de cálculo entre iteraciones: Para otros problemas irregulares, como el de los N cuerpos o el Fast Multipole [SHT95], se pueden obtener buenos balance de carga utilizando un método basado en una estimación de lo ocurrido en las iteraciones previas. Desafortunadamente el método de radiosidad jerárquica converge con pocas iteraciones, y la mayor parte de la carga computacional está concentrada en la primera iteración. Por lo tanto, es en la primera iteración 131

146 Radiosidad en Multiprocesadores donde el balance de carga es más crítico, y el algoritmo debe dar una buena solución desde el principio. Nuestra solución al problema del balance de carga es adoptar una solución mixta (a la cual hemos denominado DAD, Dynamic Area Distribution). En ella se utiliza un planificador con una heurística dinámica guiada para la primera iteración, asignando patches por demanda; la distribución de patches generada en esta primera iteración es entonces utilizada de forma estática por el resto de las iteraciones. La heurística seleccionada para nuestro algoritmo es, simplemente, ordenar los patches por área decreciente; la razón es que el área es uno de los principales criterios para la subdivisión durante la fase de refinamiento, siendo usualmente los patches más grandes los que requieren mayores tiempos de computación. Esta heurística combinada con una asignación por demanda, garantiza una primera distribución equilibrada de los patches más costosos, mientras que los patches más pequeños son utilizados para un ajuste fino del balance de la carga Evaluación. Pat Hanrahan en su trabajo [HSA91] plantea que la complejidad computacional del algoritmo jerárquico secuencial es, en el peor de los casos, On ( ), siendo n el número de subdivisiones finales de la escena. Sin embargo, esta expresión no considera el coste de calcular la función de visibilidad; por ello hemos tratado de representar la complejidad computacional del algoritmo paralelo en función del número de patches iniciales de la escena. La complejidad computacional será una función que depende del tamaño de la escena (número de patches P), de la exactitud Θ deseada en la solución, de la precisión deseada en el refinamiento (error en el aporte de energía de cada enlace y error en la subdivisión del patch) y del número de procesadores utilizados. La complejidad computacional del algoritmo se puede expresar como: OIF ( + HR) (4.7) donde: IF corresponde al coste computacional de la fase de creación del árbol BSP a partir de la descripción de la escena, el cálculo de los factores de forma y la creación de los enlaces iniciales para cada par de patches. La complejidad computacional asociada a este término 132

147 Capítulo 4: Método Jerárquico de Solución de la Radiosidad es IF = O( P ( P 1) ). HR representa el coste del núcleo fundamental del algoritmo de radiosidad, y se puede expresar por: HR = O( Θ Λ BFRA), (4.8) donde: Λ representa el subconjunto de datos que debe calcular cada procesador según la distribución que se esté utilizando por ejemplo en el caso de la distribución por bloques o cíclica P este subconjunto será κ. N κ representa el total de subpatches que pertenecen a cada uno de los patches iniciales, asignados a cada procesador. BFRA es el coste del bucle más interno, cuyo número de iteraciones es imposible de predecir, estando íntimamente ligado a la precisión deseada en el refinamiento y, que hace que varíe el tiempo de ejecución del algoritmo. Su complejidad se puede representar por: 1 BFRA = O ( BFR + A), donde B es el error máximo permitido en el proceso de refinamiento, y A ε B ε F ε A ε ε F ε el área mínima permitida para un elemento después del proceso de subdivisión. El término BFR es el coste de realizar la subdivisión en un determinado nivel, calcular el factor de forma y el coste de determinar la función de visibilidad O 1 P , la constante 1,2 representa la aceleración que se produce al utilizar el árbol BSP 12, [Han91]. Finalmente el término A es el coste de actualizar la radiosidad de los niveles inferiores a los superiores una vez que se termina el refinamiento; este tiempo es muy pequeño con lo cual se puede despreciar. Para una determinada precisión la complejidad computacional total se puede expresar como: O P( P 1) + Λ P. 12, Dado que el número de subpatches varía en el tiempo de ejecución del algoritmo, Λ toma diferentes valores aunque se utilicen distribuciones (por ejemplo CYCLIC o BLOCK) que garanticen un reparto igual del número de patches iniciales en cada procesador. Esto hace que sea imprescindible el uso de distribuciones dinámicas, que mantengan un buen balance de carga. 133

148 Radiosidad en Multiprocesadores Coste de Memoria Es difícil establecer para este algoritmo una expresión que represente el consumo de memoria para cada procesador. Existen dos razones fundamentales: - Es imposible predecir que forma tendrá la estructura jerárquica hasta tanto no se terminen todas las computaciones. - Además de replicar toda la información de los patches en las memorias locales de los procesadores, se replican algunos subpatches tanto en los procesadores donde actúan como receptores, como en los procesadores donde actúan como emisores. Trataremos entonces de definir una expresión para el consumo global de memoria, en función del número final de subpatches al finalizar el proceso de cómputo. Para ello utilizaremos la misma notación que empleamos, en el capítulo anterior, para la estimación de los requerimientos de memoria en el algoritmo progresivo. En esta notación Mp representa la cantidad de memoria necesaria para almacenar toda la estructura de datos correspondiente al patch, representa la cantidad de memoria necesaria para almacenar la estructura de datos correspondiente a los subpatches (elementos) de la escena, Ml representa la cantidad de memoria necesaria para almacenar la estructura (enlace) que representa la interacción entre dos subpatches cualesquiera de la escena, y utilizados, mientras el término representa el número de procesadores representa el número total de subpatches que, perteneciendo a un patch asignado a un determinado procesador, han sido refinado por cualquier otro. Bajo estas premisas, el consumo total de memoria se puede representar por la siguiente expresión: Me σ ( e) N N Mp P+ Me Ml e+ σ Me Ml (4.9) Esta expresión predice que el consumo total de memoria aumenta con el número de procesadores, y que esto se debe principalmente a la réplica del árbol BSP. Sin embargo, una de las características fundamentales del algoritmo jerárquico es que comienza el proceso de refinamiento con unos pocos patches de gran tamaño, que serán posteriormente subdivididos; esto hace que la réplica de los patches iniciales no eleve demasiado el overhead total de memoria. La réplica parcial de los subpatches (último término en la expresión anterior), aumenta 134

149 Capítulo 4: Método Jerárquico de Solución de la Radiosidad también el consumo de memoria del algoritmo paralelo; sin embargo su impacto es relativamente pequeño, puesto que: 1 ) Cada procesador subdivide un determinado patch fuente p solo hasta el nivel requerido por el refinamiento de los patches receptores asignados a el. Este nivel de refinamiento es normalmente menor que toda la expansión requerida al evaluar a p como un patch receptor. 2 ) La cantidad de réplica crece muy lentamente con el número de procesadores, disminuyendo el porcentaje por procesador Resultados Experimentales. En esta sección analizaremos experimentalmente el comportamiento de los algoritmos desarrollados en este capítulo sobre un multiprocesador de memoria distribuida Cray 3TD con 32 nodos. Las simulaciones se realizaron sobre grupos de 1,2,4,8,12,16,20,24,28,32 procesadores y se emplearon dos escenas con diferentes complejidades: 1 La primera, IMAG 1, está formada por 371 patches, los cuales quedan subdivididos en subpatches al finalizar el algoritmo. 2 La segunda, IMAG 2, está formada por 1200 patches, los cuales quedan subdivididos en subpatches. Para la ejecución secuencial de las simulaciones se utilizó el propio código paralelo, al cual se le eliminaron en la fase de compilación todas las sentencias afectadas por las comunicaciones. De todas formas, las diferencias de tiempos de ejecución entre el programa secuencial y el paralelo sobre un nodo son inapreciables (inferiores al 1%). Se probó además que el overhead introducido por las comunicaciones no era superior al 0.001% del tiempo total de procesamiento, para el peor de los casos (32 procesadores). La validación del código paralelo se realizó comparando los resultados obtenidos en el código secuencial con los obtenidos con 1,2,4,8,12,16,20,24,28,32 procesadores, siendo las imágenes obtenidas en todos los casos totalmente idénticas. La Tabla 4.3 muestra los tiempos empleados por las dos implementaciones realizadas del algoritmo jerárquico utilizando IMAG1. En la primera columna se muestran los resultados 135

150 Radiosidad en Multiprocesadores obtenidos utilizando una distribución aleatoria de los patches (DRD). En la segunda columna, se ha utilizado la distribución que implementa una heurística que garantiza un mejor balance de la carga computacional basándose en el área de los patches (distribución DAD). En la Figura 4.12 mostramos la aceleración o speedup de los algoritmos. De la Tabla 4.3 y de la Figura 4.12 podemos extraer los siguientes resultados. Se produce una degradación significativa en la eficiencia para más de 20 procesadores; esto se debe principalmente a que el desbalance de carga se hace más significativo a medida que aumenta el número de procesadores si mantenemos constante el tamaño del problema (complejidad de la imagen). Se denota buena linealidad en las curvas hasta 8 procesadores, degradándose para un mayor número de procesadores debido a lo que comentamos con anterioridad. Se observa que el uso de la distribución DAD da como resultado una cierta mejoría en la eficiencia frente a la distribución DRD. Sin embargo, aunque la heurística seguida garantiza una mejor distribución de la carga, a partir de un determinado número de procesadores es imposible corregir el desbalance, debido a que las dimensiones del problema no son lo suficientemente grandes para permitir que el algoritmo trabaje adecuadamente. Proc. DRD DAD Tabla 4.3 Tiempos de ejecución para la imagen IMAG

151 Capítulo 4: Método Jerárquico de Solución de la Radiosidad Figura 4.12 Aceleración del algoritmo paralelo (IMG1) En la Tabla 4.4 se muestran los tiempos empleados por los algoritmos para IMG2 y la Figura 4.13 el speedup obtenido. Proc. DRD DAD Tabla 4.4 Tiempos de ejecución para la imagen IMAG

152 Radiosidad en Multiprocesadores Figura 4.13 Aceleración del algoritmo paralelo (IMG2). Si se comparan estos resultados con los obtenidos para IMAG1 se observa una mejora sustancial en la eficiencia. Podemos concluir entonces que, para ambas distribuciones se obtiene un aumento en la eficiencia a medida que aumenta la complejidad de la escena, y esto nos permite afirmar que nuestro algoritmo muestra una buena escalabilidad. La razón de este incremento radica en que al tener una cantidad mayor de patches al inicio, existe una mayor posibilidad de corregir posibles desbalances en la carga aparecidos al inicio de la distribución de los patches, debido a la existencia en la escena de patches de gran tamaño que reciben bajos valores de radiosidad. Es razonable esperar mejoras en el speedup para escenas aun mayores. Se debe resaltar además cómo la mejora producida al utilizar la distribución DAD es mucho más significativa para IMAG2 que para IMAG1. Podemos concluir entonces que, a medida que aumenta el tamaño del problema, la distribución DAD permite corregir el desbalance mucho mejor que una distribución aleatoria, y por tanto justifica el uso de la heurística de guía basada en el área. Por último se analizó la eficiencia del algoritmo para distribuciones estáticas por bloques y cíclica, pero como era de esperar los resultados obtenidos para el mejor de los casos (speedup de 9 para 32 procesadores) fueron pobres. 138

153 Capítulo 4: Método Jerárquico de Solución de la Radiosidad Respecto al consumo de memoria, la Figura 4.14 y la Figura 4.15 muestran el overhead global (suma del overhead de todos los procesadores) introducido por nuestro algoritmo, comparado con el algoritmo secuencial. Figura 4.14 Overhead de memoria introducido por el algoritmo paralelo (IMG1). Figura 4.15 Overhead de memoria introducido por el algoritmo paralelo (IMG2). 139

154 Radiosidad en Multiprocesadores Cada figura muestra el overhead total y distingue la contribución debida a la réplica del árbol BSP y la debida a la réplica de algunos nodos de los árboles cuadrados. Como se puede apreciar, esta última contribución nunca es mayor que el 50% del overhead total, y aumenta lentamente con el número de procesadores. Partiendo de estos resultados podemos concluir que, si el overhead de memoria es aceptable, las arquitecturas de memoria distribuida pueden resolver de forma eficiente el problema de la radiosidad jerárquica. Por supuesto la réplica del árbol BSP en todos los procesadores es el principal problema para escenas muy complejas. Es necesario entonces investigar nuevas representaciones que permitan una utilización más eficiente de los sistemas de memoria virtual Conclusiones. En este capítulo se ha presentado un estudio del método jerárquico para la solución del sistema de ecuaciones del método de radiosidad, realizándose la implementación secuencial del mismo. Tras hacer un estudio de las implementaciones existentes en la bibliografía para arquitecturas paralelas, se presenta un nuevo algoritmo para máquinas multiprocesadoras de memoria distribuida, con una distribución de datos que usa un esquema mixto dinámico/estático para lograr un buen balanceo de carga desde la primera iteración. Los resultados experimentales dan buenas aceleraciones, y muestran una buena escalabilidad del algoritmo. Los resultados nos permiten afirmar, pues, que es posible solucionar eficientemente el problema de la radiosidad jerárquica en arquitecturas de memoria distribuida, cosa que, hasta ahora, sólo se había logrado para máquinas de memoria compartida. 140

155 Conclusiones: Conclusiones y Principales Aportaciones. CONCLUSIONES Y PRINCIPALES APORTACIONES En esta última década los gráficos tridimensionales generados por computador han pasado de los laboratorios de investigación a formar parte de nuestra vida cotidiana. Actualmente es común encontrar imágenes realistas generadas por computador en películas y en la televisión; la síntesis de imágenes es también muy utilizada en aplicaciones científica e ingeniería. Con nuestro trabajo, hemos realizado un estudio sobre uno de los principales métodos (el método de radiosidad) utilizados en el cálculo de la iluminación global en la síntesis de imágenes fotorrealistas. Se han implementado tres algoritmos para el cálculo de los factores de forma, y se han desarrollado algoritmos paralelos que realizan el cálculo de radiosidad utilizando el método progresivo y el método jerárquico. La contribución de este estudio exhautivo del método de radiosidad, y de la aplicación de las técnicas de procesamiento paralelo al mismo, se concreta en las siguientes conclusiones y aportaciones: 1. Se ha comprobado que el método más eficiente para el cálculo de los factores de forma 141

156 Radiosidad en Multiprocesadores es el método de ray casting determinístico, pues ofrece mayor precisión que el método de ray-casting estocástico y que los métodos del hemicubo y el tetraedro cúbico. Por esta razón ha sido el elegido en nuestras diversas implementaciones del método de radiosidad. 2. Se ha implementado un algoritmo paralelo para el cálculo de la radiosidad progresiva sobre máquinas de memoria distribuida, usando replicación parcial de datos para minimizar las comunicaciones. Se ha desarrollado para este algoritmo un mecanismo de distribución de patches, que usa una métrica de ponderación basada en el número de elementos asignados por procesador, y que garantiza buenos balances de carga. Se ha demostrado experimentalmente que este algoritmo presenta buenas eficiencias y escalabilidad. 3. Se ha implementado también un algoritmo paralelo para el cálculo de la radiosidad progresiva sobre máquinas de memoria compartida. Se ha comprobado sobre este algoritmo la ineficacia de los paralelizadores actuales para la detección automática de paralelismo en este tipo de problemas irregulares. Se ha comprobado también que, para este problema, las distribuciones estáticas (CYCLIC y BLOCK) no son capaces de obtener buenos balances de carga. En consecuencia, se ha empleado una distribución dinámica, que usa como heurística de guía el área del patch. El algoritmo muestra experimentalmente buenas eficiencia y escalabilidad, similares a las obtenidas para memoria distribuida, pero sin overheads de memoria. 4. Los resultados obtenidos para el algoritmo progresivo determinístico son comparables a los mejores obtenidos en la bibliografía para el algoritmo progresivo estocástico, sin embargo no tenemos referencia bibliográfica de algún algoritmo progresivo determinístico desarrollado para máquinas de memoria compartida. 5. Se ha implementado un algoritmo paralelo para el cálculo de la radiosidad jerárquica sobre arquitecturas de memoria distribuida. Se ha desarrollado para este algoritmo un esquema de distribución de datos mixto, que usa asignación dinámica en la primera iteración y estática en las restantes. Combinado con una heurística de asignación basada en el área del patch, este mecanismo consigue muy buenos balances de carga sin introducir overheads significativos. Usando replicación parcial de datos para minimizar las comunicaciones el algoritmo muestra experimentalmente buenas eficiencias y escalabilidad. 142

157 Conclusiones: Conclusiones y Principales Aportaciones. 6. Los resultados obtenidos para el algoritmo jerárquico en memoria distribuida, comparables a los mejores obtenidos en la bibliografía para multiprocesadores de memoria compartida, nos permiten afirmar que las arquitecturas de memoria distribuida son también sistemas viables para resolver el problema de radiosidad jerárquica, lo que hasta ahora no se había demostrado adecuadamente en la bibliografía. La investigación realizada nos ha permitido abrir nuevas líneas de trabajo, que extiendan los resultados obtenidos en esta tesis, y cuyos objetivos principales son: 1. En memoria distribuida, la necesidad de replicar información geométrica de la escena para el cálculo de visibilidad, si se quiere evitar una fuerte penalización por comunicaciones, impone limitaciones al tamaño de las imágenes. En consecuencia, estudiaremos representaciones alternativas de la escena tridimensional, que permitan evitar esta replicación sin sufrir por ello pérdidas significativas en la calidad del resultado. 2. Estudiar esquemas de cálculo de visibilidad que permitan disminuir el considerable coste de los mecanismos basados exclusivamente en el BSP. 3. Estudiar soluciones alternativas del algoritmo jerárquico, usando wavelets, para reducir el número de subdivisiones necesario en el proceso de refinamiento. 143

158 Radiosidad en Multiprocesadores 144

159 ANEXO 1: Representación de entornos virtueles utilizando em método de radiosidad ANEXO I AI.1. Implementación de los algoritmos para el cálculo de los factores de forma. En el capítulo 1 se analizaron los principales métodos para el cálculo de los factores de forma. En este apartado presentamos los detalles de la implementación de estos algoritmos, así como un análisis de la complejidad de los mismos. AI.1.1. Diseño del Algoritmo del hemicubo. A continuación presentamos un algoritmo para calcular el factor de forma utilizando las técnicas descritas en el apartado para el método del hemicubo. Consideremos u entorno formado por E patches; el algoritmo opera sobre todos lo patches del entorno segun el 145

160 Radiosidad en Multiprocesadores pseudocódigo mostrado en la Figura I.1. FOREACH (h_fase) FOREACH (h_f_element h_fase) A superior F h_f_element = π( u 2 + v 2 + 1) 2 ó h_f_element.depht=infinito h_f_element.polygon_id=ninguno ENDFOR ENDFOR FOREACH ( ) F ij = 0 ENDFOR E j escena, ( j i) FOREACH (h_face) FOREACH ( E j escena, ( j i) ) E j = E j M if( E j es visible) ) ) n A cara π( u 2 + n 2 + 1) 2 ó n A cara π( v 2 + n 2 + 1) 2 if( ( ) /*Recorta el polígono al volumen de visión del hemicubo */ volumen de visión del hemicubo) /* Proyecta el polígono sobre cara del hemicubo */ h_fase) FOREACH (h_f_element if ( h_f_element * h_f_p_proy ) if (profundidad E j < h_f_elem.depht) * h_f_element.depht = profundidad de E j h_f_element.polygon_id = j ENDFOR ENDFOR FOREACH (h_f_element h_fase) m = h_f_element.polygon_id ENDFOR ENDFOR Figura I.1 Algoritmo para calcular el factor de forma por el método del hemicubo. La primera parte de este algoritmo está formada por un bucle que se ejecuta de forma independiente y calcula los factores de forma delta para cada una de las caras del hemicubo. h_f_element.depht nos permite almacenar la mínima profundidad (según el sistema de visión del hemicubo) de los patches que se van analizando. Para un determinado pixel y para una determinada cara del hemicubo, h_f_element.polygon almacena el índice de este polígono. Estos valores se inicializan con un valor que tienda a infinito y cero respectivamente. E j * = E j * clip E j ) * h_f_p_proy= proy( E j ) F im = F im + F h_f_element F h_f_element 146

161 ANEXO 1: Representación de entornos virtueles utilizando em método de radiosidad El núcleo fundamental del algoritmo comienza a partir del segundo bucle FOREACH, a partir del cual para cada una de las caras del hemicubo ubicado sobre el patch uno de los demás polígonos del polígono E j y para cada, se realiza la transformación de coordenadas de los vértices utilizando la matriz de transformación M, obtenida para un punto del observador situado en centro del hemicubo y un sistema de coordenadas como el de la Figura 1.21(b). Si el polígono transformado es visible por el patch, se realiza el recorte del polígono utilizando los planos definidos por el volumen de visión para la cara del hemicubo. Una vez realizado el recorte del polígono, se comprueba si el polígono recortado encuentra dentro del volumen de visión del hemicubo. En cuyo caso se realiza la proyección sobre la cara del hemicubo. Una vez realizada la proyección se analiza que elementos de la cara del hemicubo pertenecen a dicha proyección (h_f_element h_f_p_proy ()), en cuyo caso se actualizan h_f_element.depht y h_f_element.polygon_id con los valores de profundidad y el índice del polígono proyectado respectivamente. Cuando ya se han analizado todos los patches se del entorno tridimensional, para cada uno de los elementos de la cara del hemicubo que se está analizando, se adiciona el valor del factor de forma delta al valor del factor deforma del patch cuyo índice corresponda con el valor de h_f_element.polygon_id. E j E j ) F h_f_element E j E i E i E j * Complejidad del algoritmo. Requerimientos de memoria: Los factores de forma se almacenan en una estructura de datos del tipo: delta_form_factor: { double da; double dx, dy, dz; double r, x, y, z; } En resumen se necesitan 24 palabras de ocho bits para almacenar cada factor de forma delta. Aprovechando la propiedad de simetría en las caras del hemicubo ya hemos analizado 3n 2 que para una resolución del hemicubo de n n, sólo necesitamos almacenar valores. 8 Necesitaríamos entonces 9n 2 posiciones de memoria de ocho bits. Por ejemplo para una resolución del hemicubo de 100x100 se necesitarían 90 kbyte de memoria. En la Figura I.2, 147

162 Radiosidad en Multiprocesadores se muestra el coste de memoria para diferentes resoluciones del hemicubo. Figura I.2 Coste de memoria para los métodos del hemicubo y el tetraedro. Complejidad computacional: Considerando un entorno tridimensional formado por E elementos y dada una resolución del hemicubo igual a. Podemos definir los siguientes intervalos de tiempo según las principales funciones que realiza el algoritmo: t_dff: Tiempo requerido para el cálculo de cada uno de los factores de forma delta. t_p: Tiempo utilizado para la transformación de los vértices del polígono al sistema de coordenadas del hemicubo, determinación de visibilidad, recorte del polígono y proyección sobre la cara del hemicubo. t_bz: Tiempo utilizado para la actualización de los valores del buffer z para un pixel de la cara del hemicubo. t_aff: Tiempo necesario para la actualización del factor de forma entre el patch i y el correspondiente patch j, para un determinado pixel dado de la cara del hemicubo que se está analizando. con diferentes niveles de complejidad, la primera (IMG1) consta de 286 patches y 4561 elek = n n El tiempo total del algoritmo para el cálculo del factor de forma entre un patch i respecto al resto de patches j que forma el entorno viene dado por la siguiente expresión t_total_f ij, ( j = 1...n) = 5[ k t_dff + E ( t_p + k t_bz) + k t_aff] En la Tabla I.1 se muestran los tiempos de ejecución de este algoritmo para dos imágenes 148

163 ANEXO 1: Representación de entornos virtueles utilizando em método de radiosidad mentos, la segunda formada por 431 patches y 6191 elementos. Además se muestran los valores para diferentes resoluciones del hemicubo. Imagen 100x x x x1024 IMG s 1.04 s 2.09 s 6.4 s IMG s 1.68 s 2.9 s 7.75 s Tabla I.1 Tiempo de cálculo del factor de forma de un patch respecto al resto de elementos de la escena. (computador SUN Sparc 1000) AI.1.2. Diseño Algoritmo por el método del tetraedro cúbico. En esta sección se describe el algoritmo implementado para calcular el factor de forma por el método del tetraedro cúbico. Éste es prácticamente el mismo que para el método del hemicubo, sólo cambian algunos aspectos a los que haremos referencia a continuación. Los factores de forma delta son los mismos para todas las caras del tetraedro cúbico, solo es necesario realizar el cálculo de los factores de forma delta para una cara. Complejidad del algoritmo. Requerimientos de memoria: Realizando el mismo análisis que para el hemicubo, pero teniendo en cuenta que dada la simetría de las caras el tetraedro cúbico solo necesitaría n 2 almacenar ---- factores de forma. Entonces para una resolución del hemicubo de 100x100, 4 se necesitarian 60 kbyte de memoria. En la Figura I.2 se muestra el consumo de memoria para distintos niveles de resolución. Complejidad computacional: Para ello debemos tener en cuenta los mismos tiempos de ejecución definidos para el algoritmo del hemicubo y las diferencias algorítmicas con éste. Con esto, el tiempo total para calcular el factor de forma entre un patch y el resto de elementos de la escena, con este algoritmo, se puede expresar con la siguiente expresión: t_total_f ij, ( j = 1...n) = k t_dff + 3[ E ( t_p + k t_bz) + k t_aff]. A continuación, (Tabla I.2) se presentan los tiempos de cálculo obtenidos de la ejecución del algoritmo para diferentes resoluciones y para las mismas imágenes utilizadas en el 149

164 Radiosidad en Multiprocesadores método del hemicubo. Imagen 100x x x x1024 IMG s 0.53 s 1.02 s 3.04 s IMG s 0.89 s 1.44 s 3.86 s Tabla I.2 Tiempo de cálculo del factor de forma para un patch respecto al resto de elementos de la escena (computador Sun Sparc 1000). AI.1.3. Diseño algoritmo de ray-casting. A continuación presentamos un algoritmo que utiliza las soluciones apuntadas en el apartado para el método de ray-casting. En la Figura I.3 se muestra el pseudocódigo que muestra el algoritmo implementado, para el cálculo del factor de forma entre un patch fuente E i y los vértices del patch (o elemento) destino. E j SELECT patch ( ) FOREACH vértice ( ) F v Ei = 0 FOR ( k=1ton) p k = if ( p k no opuesto a v) ENDFOR ENDFOR E i v E j r ENDFOR randpoint( E i ) = shootray( p k, v) E j entorno, ( j i) ocluc = vis( E j, r) F v FOREACH (patch ) ENDFOR if (ocluc=false) Ei F v A i Ei = ---- F n v Ei cosθ vk cosθ ik + = A i πr k n Figura I.3 Algoritmo de ray-casting para el cálculo de los factores de forma. Inicialmente el algoritmo parte de haber seleccionado un patch FOREACH barre todos los vértices del polígono destino. El primer bucle e inicializa los valores del factor de forma en los vértices. El segundo bucle permite que, para cada vértice, se seleccione un grupo de puntos dentro E j E i 150

165 ANEXO 1: Representación de entornos virtueles utilizando em método de radiosidad del patch E i de forma aleatoria, utilizando la función randpoint(). Esta distribución aleatoria evita el error de aliasing producido por el muestreo uniforme, la función no es más que la implementación del algoritmo de Turk, para seleccionar puntos aleatorios de forma uniforme dentro de polígonos triangulares. El número de puntos (n) seleccionados guarda una relación muy estrecha con la precisión requerida, hemos comprobado de forma experimental que se obtienen muy buenos resultados utilizando un valor de n de cuatro a dieciséis. Para cada uno de estos puntos seleccionados se verifica, si se encuentran uno frente al otro, comparado la dirección de las normales de punto cuyo caso se define la recta r entre los mismos. seleccionado y del vértice v; en Posteriormente se analiza, si alguno de los polígonos que forman el entorno intercepta a r, utilizando la función VIS (algoritmo de Baduel); en cuyo caso la aportación del punto al factor de forma es nula. Si por el contrario ningún polígono intercepta la recta r, se tiene en cuenta la aportación del punto al factor de forma. Una vez analizados todos los puntos dentro del patch p k, se pondera el factor de forma por la fracción del área total correspondiente a cada punto y se siguen calculando el factor de forma para los demás vértices. p k Ei p k Complejidad del algoritmo. Coste de memoria: Como los valores del factor de forma se calculan directamente en los vértices de los polígonos que forman el entorno tridimensional de forma directa, no se necesita almacenar una biblioteca de valores para calcular el factor de forma como la suma de elementos de dicha biblioteca, como ocurría en el caso del método del hemicubo o del tetraedro. Complejidad del algoritmo: Para poder analizar la complejidad del algoritmo definiremos los siguientes intervalos de tiempos: tr: Tiempo utilizado por al algoritmo de elección de puntos aleatorios distribuido dentro de un polígono triangular y definir la recta r. t_vis: Tiempo requerido por el cálculo del factor de forma y por la función que analiza si algún polígono del entorno se interpone entre los puntos analizados. Esta última es la que más tiempo consume en todo el algoritmo. El tiempo total utilizado para calcular el factor de forma entre un patch E i y los V vértices 151

166 Radiosidad en Multiprocesadores de los E polígonos (elementos) que forman el entorno tridimensional se puede definir por la siguiente expresión: donde V = 3 E t total = V n( tr+ ( E 1) t_vis), para una discretización del espacio tridimensional en polígonos triangulares. A continuación (Tabla I.3) presentamos los tiempos de cálculo para el algoritmo implementado, para distinta cantidad de rectas (subdivisiones del patch emisor) y para las dos imágenes de prueba utilizadas en los apartados anteriores. Imagen 1 Rayo 4 Rayos 16 Rayos 32 Rayos IMAGEN s 3.96 s 14.1 s 28.9 s IMAGEN s 7.2 s s 56.1 s Tabla I.3 Tiempo de cálculo del factor de forma entre un patch y el resto de elementos de la escena, método de raycasting. (computador Sun Sparc 1000). 152

167 ANEXO II: Representación de entornos virtuales utilizando el método de radiosidad. ANEXO II AII.1. Programa de representación basado en el método de Radiosidad. En este apartado describimos las diferentes etapas que comprende la realización de un programa de representación (rendering) de entornos virtuales utilizando la técnica de radiosidad para el cálculo de la iluminación global. De forma general el proceso de representación se puede dividir en cinco etapas diferentes, tal como se muestra en la Figura AII.1. Modelado del Entorno Subdivisión de las superficies Cálculo de todos los Factores de Forma Solución del Sistema de Ecuaciones Lineales Visualización de la Escena en 3D Figura AII.1 Etapas generales de un programa de representación. (Método de radiosidad). La primera etapa modela el entorno, convirtiendo los elementos físicos del mismo en un grupo de datos (por ejemplo superficies, vértices, etc.), que puedan ser entendidos por el computador. La segunda etapa modifica este grupo de datos en una malla útil para el proceso 153

168 Radiosidad en Multiprocesadores de cálculo de radiosidad. La tercera etapa calcula los factores de forma para los elementos de la escena utilizando alguno de los métodos descritos en el capítulo 1 e implementados en el anexo anterior. Esta constituye la fase más costosa del algoritmo. La cuarta etapa resuelve el sistema de ecuaciones lineales de cuyo resultado podemos obtener la luninancia de todos los elementos generados en la etapa 2. La última etapa se encarga de la presentación de la imagen tridimensional resultante en la pantalla del ordenador. A continuación se describe, de forma muy abreviada, las principales características de cada una de ellas y se presentan los programas de representación que hemos utilizado para realizar el estudio que presentamos en esta memoria. AII.1.1. Modelado del entorno. En el área de gráficos por computador se han desarrollado diversas formas para la representación de objetos tridimensionales, su utilización responde a la aplicación a la que estará destinada, por ejemplo para los algoritmos de radiosidad se necesita la representación de la escena como grandes polígonos. A continuación mencionamos las formas de representación más utilizadas: 1 Poligonal: Los objetos son representados como un grupo de polígonos planales. 2 Patches paramétricos bicúbicos: Los Objetos son representados como mallas de elementos. Estos son polinomios con dos variables paramétricas, normalmente cúbicas. 3 Geometría de Sólidos Constructiva (GSC): Normalmente utilizada en la representación de sólidos, un objeto es representado como un grupo de otros objetos elementales como pueden ser esferas, cilindros y cubos. 4 Técnicas de subdivisión del espacio: Un objeto es fijado en el espacio etiqueteando los puntos que éste ocupa en el mismo. Los esquemas 1 y 4 aproximan (con un error controlable) los objetos que ellos representan, por otra parte los esquemas 2 y 3 son representaciones exactas de éstos. Los esquemas se pueden clasificar también de acuerdo a si representan volúmenes o contornos, así los 154

169 ANEXO II: Representación de entornos virtuales utilizando el método de radiosidad. esquemas 1 y 2 son representaciones del contorno de los objetos y los 3 y 4 son representaciones del volumen de éstos. Para la generación de entornos tridimensionales se han desarrollado múltiples aplicaciones como por ejemplo: el autocad, el 3D studio, Maya, etc. Estas aplicaciones permiten realizar la representación de los objetos del mundo real y generar un fichero de salida con la información geométrica (vértices, superficies, etc.) y óptica (coeficiente de reflectividad, radiosidad inicial, etc) de los mismos. No existe un formato de datos normalizado para realizar la representación, al igual que los esquemas de representación éstos dependen del uso al que estarán destinados, dentro de los más utilizados podemos mencionar el DXF, el WLD, WRML, INVENTOR, etc. Actualmente se están realizando esfuerzos para unificar y poder normalizar el formato de datos, una primera aproximación es el formato MGF (Modeling Geometric Format). AII.1.2. Subdivisión del entorno. La precisión del método de radiosidad depende en gran medida de las técnicas de subdivisión (meshing) utilizadas para representar cada superficie. Cada superficie es subdividida en un grupo de polígonos, comúnmente llamados patches. Cada uno de estos patches recibe el flujo de los otros patches que lo rodean y a su vez emite su propio flujo. Este es un proceso iterativo que continúa hasta que la luz reflejada es totalmente distribuida en la escena. De forma general existen tres estrategias de subdivisión [Ash94]: la subdivisión uniforme, la subdivisión de alta densidad y la subdivisión no uniforme. Un estudio más detallado sobre estos aspectos se puede encontrar en los trabajos desarrollados por Paul Heckbert [Hec91][Hec92a][Hec94], o en el trabajo desarrollado por S. Phillips et. al [PWWP93], donde se introduce una estrategia de subdivisión adaptativa. Sturzlinger [Stu94], combinó la subdivisión adaptativa con la discontinua, y más recientemente Hugues Hoppe [Hop96] introdujo un nuevo método conocido como subdivisión progresiva. 155

170 Radiosidad en Multiprocesadores AII.1.3. Cálculo de los factores de forma. En el capitulo 1 se realizó un estudio detallado de los diferentes métodos que existen para calcular los factores de forma. La decisión en la elección de los mismos está sujeta al grado de precisión deseado en los cálculos y del método utilizado para resolver el sistema de ecuaciones. Los métodos de ray-casting a pesar de ser los más costosos computacionalmente brindan la mejor solución para el cálculo de los factores de forma respecto a los métodos de proyección (hemicubo, tetraedro, etc), los cuales introducen una mayor fuente de error. AII.1.4. Solución del sistema de ecuaciones. En el capítulo 1, 3 y 4 se han analizado con profundidad las diversas técnicas utilizadas para la solución del sistema de ecuaciones del método de radiosidad, se proponen además nuevos algoritmos que permiten acelerar el proceso de cálculo. El diagrama general para la representación de entornos virtuales por el método de radisidad (Figura AII.1), es válido cuando el sistema de ecuaciones es resuelto con los métodos conocidos como de matriz completa. Sin embargo, cuando utilizamos los algoritmos de radiosidad progresiva o de radiosidad jerárquica este diagrama puede sufrir algunas modificaciones. Por ejemplo, si se utiliza el método progresivo calculando los factores de forma por el método del hemicubo o del tetraedro cúbico, el diagrama general sería como el que se representa en la Figura AII.2. Modelado del Entorno Subdivisión de las superficies Cálculo de los Factores de Forma para cada patch de disparo Solución del Sistema de Ecuaciones Lineales Visualización de la Escena en 3D Figura AII.2 Etapas de un programa de representación utilizando radiosidad progresiva. Factores de forma calculados por el método del hemicubo o l tetraedro cúbico. En este caso el cálculo de los factores de forma se realiza solamente para los pacthes de disparo seleccionados. Si el método utilizado para calcular los factores de forma el de ray- 156

171 ANEXO II: Representación de entornos virtuales utilizando el método de radiosidad. casting el diagrama quedaría como el que se representa en la Figura AII.3 Modelado del Entorno Subdivisión de las superficies Calculo de los factores de forma y solución de las ecuaciones Visualización de la Escena en 3D para cada patch de disparo Figura AII.3 Etapas de un programa de representación utilizando radiosidad progresiva. Factores de forma calculados por el método de ray-castig. En este caso el cálculo de los factores de forma y la solución del sistema de ecuaciones se realiza dentro de una misma etapa, para cada uno de los patches de disparo. Por último si utilizamos el método jerárquico expuesto en el capítulo 4 el diagrama general seria el representado en la Figura AII.4. Modelado del Entorno Subdivisión de las superficies segun BF ε Cálculo de los Factores de Forma no calculados Hasta convergencia Solución del Sistema de Ecuaciones Lineales Visualización de la Escena en 3D Figura AII.4 Etapas de un programa de representación utilizando radiosidad jerárquica. El método jerárquico se caracteriza por realizar un refinamiento adaptativo del entorno tridimensional, haciendo que la mayor subdivisión se produzca sólo cuando realmente sea necesario. AII.1.5. Visualización de la escena 3D en la pantalla del ordenador. Una vez calculada la iluminación global para la escena generada, la última fase es su representación (rendering) en la pantalla del ordenador. Este proceso implica realizar la proyección en dos dimensiones (según el punto de visión) de la representación tridimensional de los objetos. Esta fase se puede dividir en una serie se subprocesos: 1 Aplicar un grupo de transformaciones lineales a los polígonos, estas transformaciones son transformaciones de la posición de los objetos dentro de la escena y transformaciones para el punto de visión. 2 Eliminación de los polígonos que tengan una dirección invertida respecto al 157

172 Radiosidad en Multiprocesadores punto de visión. 3 Recorte de polígonos de acuerdo al volumen de visión 4 Convertir el modelo de vértices de la escena, en un grupo de coordenadas de pixeles de la pantalla. 5 Aplicar los algoritmos de eliminación de superficies ocultas. 6 Dibujar los pixeles individuales utilizando un esquema de sombreado interpolativo o incremental. El primer paso implica la definición de un sistema de visión, que nos permita hacer una representación de nuestro entorno en la pantalla del ordenador. Cualquier sistema de visión se tiene como mínimo un ojo y una ventana. El sistema de visión con el que hemos trabajado es una versión de las normas GKS-3D (ISO 1988) y PHIGS (ANSI 1988), los principios de estos sistemas industriales son descritos de forma más detallada por Singleton [Sin87] y por Foley [FvDFH90]. Una vez establecido el sistema de visión se transforman todos los vértices de los elementos de la escena. Los pasos 2 y 3 se establece una operación que compara la orientación de todos los polígonos de la escena y elimina aquellos que no se vean, además se hace un recorte de los polígonos que se encuentren dentro y fuera del volumen de visión. Los pasos 4 y 5 convierten las coordenadas en 3D de los vértices de los polígonos de la escena a las coordenadas en 2D de los pixeles de la pantalla del ordenador eliminando las superficies ocultas, el algoritmo más popular para realizar estas operaciones es el algoritmo de Z buffer [Cat75]. En el paso 6 realiza el sombreado a partir de la información de color en los vértices de los polígonos en 2D, los algoritmos más populares utilizados para ello, son el sombreado de Goraud [Gor71] y el de Phong [Pho75]. Normalmente los pasos del 4 al 6 son ejecutados en un solo algoritmo interdependiente, sin embargo la mayoría de los libros sobre gráficos tridimensionales [Wat89] [CW93] [FvDFH90] [Gla95] hacen un análisis por separado de los mismos. AII.2. Resultados. Aunque el objetivo de esta tesis se centra en el método de radiosidad para el cálculo de la iluminación global (fases 3 y 4 del programa de representación), nuestro trabajo experi- 158

173 ANEXO II: Representación de entornos virtuales utilizando el método de radiosidad. mental ha tenido que tocar de manera implícita todas las demás fases; implantándose sendos programas de representación para el método progresivo y para el método jerárquico. AII.2.1. Método Progresivo. Para la generación de la escena utilizamos un modelo poligonal estableciendo una jerárquica para la representación de la escena formada por entidades (ej. mesas, sillas, etc), superficies (polígonos que conforman la entidad), patches (subdivisiones de las superficies) y elementos (subdivisiones de los patches). Todas las escenas que hemos utilizado han sido suministradas por Ian Ashdown, y el proceso de subdivisión sólo ha tenido como objetivo poder disponer de diferentes niveles de complejidad para las mismas. Los factores de forma fueron calculados utilizando las técnicas descritas en el capítulo 1 de esta memoria y por supuesto en la solución del sistema de ecuaciones se utilizó el método progresivo desarrollado por Cohen [CW93]. Para la representación en la pantalla del ordenador se utilizaron las técnicas del Z buffer y del sombreado de Goraud, integrando la aplicación en el entorno Khoros. Khoros es una herramienta software desarrollada con el objetivo de agrupar el mayor número posible de rutinas entorno a una aplicación y permitir el fácil acceso a estas rutinas. Este se ha convertido en un sistema potente que abarca desde rutinas de manipulación de datos (operadores aritméticos, cálculos estadísticos, etc.) hasta programas de visualización y animación de imágenes. En las Figuras AII.5 a AII.9 se muestran algunas escenas representadas con el programa implementado. AII.2.2. Método Jerárquico. Para el método jerárquico también se utilizó una representación poligonal de la escena. En todas las pruebas se utilizó dos variantes de la escena usada por Hanrrahan [Han91]. La Figura AII.10 muestra una de ellas, la otra está formada por dos escenas iguales con algunos objetos replicados. 159

174 Radiosidad en Multiprocesadores En el método jerárquico los factores de forma son siempre calculados utilizando el método de ray-casting determinístico y por supuesto la solución del sistema de ecuaciones se realiza por el método jerárquico. Para visualización en la pantalla del ordenador también se utilizan las técnicas de z buffer y sombreado de Goraud. Esta implementación se realizó sobre una arquitectura Sillicom Graphics utilizando las bibliotecas Open Gl, que facilitan la programación gráfica en 3D. AII.2.3. Imágenes representadas con los métodos implementados. En este apartado presentamos algunas de las escenas representadas con los algoritmos implementados y que han sido utilizadas en nuestros experimentos. Figura AII.5 Imagen de CORNELL. 160

175 ANEXO II: Representación de entornos virtuales utilizando el método de radiosidad. Figura AII.6 Imagen con objetos de diferente complejidad. 161

176 Radiosidad en Multiprocesadores Figura AII.7 Representación de una habitación y una mesa. 162

177 ANEXO II: Representación de entornos virtuales utilizando el método de radiosidad. Figura AII.8 Representación de un Hall. 163

178 Radiosidad en Multiprocesadores Figura AII.9 Representación de una estación de tren. 164

179 ANEXO II: Representación de entornos virtuales utilizando el método de radiosidad. Figura AII.10 Método Jerárquico. 165

Iluminación Modelo de Cook-Torrance Y Modelo de Kadija

Iluminación Modelo de Cook-Torrance Y Modelo de Kadija Iluminación Modelo de Cook-Torrance Y Modelo de Kadija Computación Gráfica Universidad Simón Bolívar Caracas - Venezuela Autores: David Subero y Alexandra Yamaui Modelo de Iluminación El objetivo de un

Más detalles

Modelos de Iluminación

Modelos de Iluminación Modelos de Iluminación Facultad de Cs. de la Computación Juan Carlos Conde Ramírez Computer Graphics Contenido 1 Introducción 2 Modelos de Iluminación 3 Factor de Atenuación 4 Aplicación de Colores 1 /

Más detalles

Modelos de iluminación global

Modelos de iluminación global Modelos de iluminación global THE WHITTED IMAGE - BASIC RECURSIVE RAY TRACING Copyright 1997 A. Watt and L. Cooper Contenido Iluminación local y global La ecuación de representación de Kajiya Algoritmos

Más detalles

Radiometría y Fotometría: Conceptos básicos

Radiometría y Fotometría: Conceptos básicos Radiometría y Fotometría: Conceptos básicos Este tema tiene un carácter más profesional que el resto de los temas del programa, tanto de esta asignatura como del resto de asignaturas del área de Óptica

Más detalles

5.1. Magnitudes radiométricas

5.1. Magnitudes radiométricas 5. Radiometría y fotometría 5.1. Magnitudes radiométricas y fotométricas tricas 1 5. Radiometría y fotometría. 2 Magnitudes radiométricas y fotométricas tricas Radiometría rama de la Física dedicada a

Más detalles

Estéreo dinámico. Estéreo dinámico

Estéreo dinámico. Estéreo dinámico Estéreo dinámico 1 Vectores locales de desplazamiento Dada una secuencia de imagenes Tomadas a intervalos Movimiento absoluto: movimiento independiente de la cámara Movimiento relativo: movimiento debido

Más detalles

Integral de Fourier y espectros continuos

Integral de Fourier y espectros continuos 9 2 2 2 Esta expresión se denomina forma de Angulo fase (o forma armónica) de la serie de Fourier. Integral de Fourier y espectros continuos Las series de Fourier son una herramienta útil para representar

Más detalles

Bajo estas hipótesis la ley de Newton permite escribir las ecuaciones del cohete (ver Figura 1.1) como. = m(t) g + T (t), = g + dx dt (0) = v 0.

Bajo estas hipótesis la ley de Newton permite escribir las ecuaciones del cohete (ver Figura 1.1) como. = m(t) g + T (t), = g + dx dt (0) = v 0. CAPÍTULO 1 INTRODUCCIÓN Ejercicios resueltos Problema 1. Desarrolle un modelo simplificado de un coete como un cuerpo sujeto a la gravedad que se mueve en vertical por el empuje de una fuerza de propulsión

Más detalles

CAPÍTULO VI TRANSPORTE DE ENERGÍA POR RADIACIÓN

CAPÍTULO VI TRANSPORTE DE ENERGÍA POR RADIACIÓN CAPÍTULO VI TRANSPORTE DE ENERGÍA POR RADIACIÓN 6.1 El espectro de radiación electromagnética El transporte de energía por conducción y convección necesitan la existencia de un medio material. La conducción

Más detalles

FÍSICA GENERAL PARA ARQUITECTURA

FÍSICA GENERAL PARA ARQUITECTURA FÍSICA GENERAL PARA ARQUITECTURA 105_01_03_Iluminación UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS FACULTAD DE CIENCIAS ESCUELA DE FÍSICA HEYDI MARTÍNEZ Onda La luz es un tipo de onda ILUMINACIÓN COMPORTAMIENTO

Más detalles

Introducción. Flujo Eléctrico.

Introducción. Flujo Eléctrico. Introducción La descripción cualitativa del campo eléctrico mediante las líneas de fuerza, está relacionada con una ecuación matemática llamada Ley de Gauss, que relaciona el campo eléctrico sobre una

Más detalles

Graficación CCOM-259

Graficación CCOM-259 Graficación CCOM-259 Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación 1 Realismo 3D 2 Iluminación 3 Modelos de Iluminación Podemos obtener imágenes realistas de una escena

Más detalles

PROBLEMA 1 *( ) + SOLUCIÓN: Sea la superficie de la parte esférica superior, parametrizada con coordenadas cilíndricas de la siguiente manera:

PROBLEMA 1 *( ) + SOLUCIÓN: Sea la superficie de la parte esférica superior, parametrizada con coordenadas cilíndricas de la siguiente manera: PROBLEMA 1 A una esfera maciza de radio unidad se le hace una perforación cilíndrica siguiendo un eje diametral de la esfera. Suponiendo que el cilindro es circular de radio, con y que el eje que se usa

Más detalles

9. Observables de dispersión en el formalismo de matriz S.

9. Observables de dispersión en el formalismo de matriz S. Mecánica Cuántica Avanzada Carlos Pena 9-9. Observables de dispersión en el formalismo de matriz S. [Ros XI.7, Sch 8.2, Ynd 22.3] Probabilidades de transición: regla de oro de Fermi generalizada En términos

Más detalles

MOVIMIENTO DEL AGUA EN FORMACIONES GEOLÓGICAS. 4.1 Conservación de Fluido de Masa

MOVIMIENTO DEL AGUA EN FORMACIONES GEOLÓGICAS. 4.1 Conservación de Fluido de Masa MOVIMIENTO DEL AGUA EN FORMACIONES GEOLÓGICAS 4.1 Conservación de Fluido de Masa Considerando un fluido elemental con volumen V y superficie S que está asociado a un cuerpo fluido (en este caso agua).

Más detalles

Unidad 5: Geometría analítica del plano.

Unidad 5: Geometría analítica del plano. Geometría analítica del plano 1 Unidad 5: Geometría analítica del plano. 1.- Vectores. Operaciones con vectores. Un vector fijo es un segmento entre dos puntos, A y B del plano, al que se le da una orientación

Más detalles

SEMINARIO 1: ELEMENTOS DIFERENCIALES DE LÍNEA, SUPERFICIE Y VOLUMEN

SEMINARIO 1: ELEMENTOS DIFERENCIALES DE LÍNEA, SUPERFICIE Y VOLUMEN SEMINARIO 1: ELEMENTOS DIFERENCIALES DE LÍNEA, SUPERFICIE Y VOLUMEN Sistemas de coordenadas 3D Transformaciones entre sistemas Integrales de línea y superficie SISTEMA COORDENADO CARTESIANO O RECTANGULAR

Más detalles

ÁLGEBRA II (LSI PI) UNIDAD Nº 2 GEOMETRÍA ANALÍTICA. Facultad de Ciencias Exactas y Tecnologías UNIVERSIDAD NACIONAL DE SANTIAGO DEL ESTERO

ÁLGEBRA II (LSI PI) UNIDAD Nº 2 GEOMETRÍA ANALÍTICA. Facultad de Ciencias Exactas y Tecnologías UNIVERSIDAD NACIONAL DE SANTIAGO DEL ESTERO 17 ÁLGEBRA II (LSI PI) UNIDAD Nº GEOMETRÍA ANALÍTICA Facultad de Ciencias Exactas y Tecnologías aa Error! No hay texto con el estilo especificado en el documento. 1 UNIVERSIDAD NACIONAL DE SANTIAGO DEL

Más detalles

interacción de la radiación con la materia

interacción de la radiación con la materia interacción de la radiación 1 interacción de la radiación lección 3 sumario interacción de la radiación 2 Interacción macroscópica. Emisividad. Interacción atómica y molecular. la conservación n de la

Más detalles

Introducción. Iluminación (II) Introducción. Introducción

Introducción. Iluminación (II) Introducción. Introducción 1 Iluminación (II) El modelo de Phong fue expresado originalmente como una función de reflectancia para generar las luces y las sombras en una imagen más que como una BRDF formulada para calcular radiancia.

Más detalles

ANEXO B: TEORÍA UNIFORME DE LA DIFRACCIÓN

ANEXO B: TEORÍA UNIFORME DE LA DIFRACCIÓN ANEXO B: TEORÍA UNIFORME DE LA DIFRACCIÓN La Teoría Geométrica de la Difracción (GTD o Geometric Theory of Diffraction) es una extensión de la Teoría de Óptica Geométrica (GO o Geometric Optics) para predecir

Más detalles

Apéndice A. Vectores: propiedades y operaciones básicas.

Apéndice A. Vectores: propiedades y operaciones básicas. Vectores 145 Apéndice A. Vectores: propiedades y operaciones básicas. Una clasificación básica de las distintas propiedades físicas medibles, establece que estas pueden dividirse en dos tipos: a) Aquellas

Más detalles

Modelos de Iluminación y Sombreado de Objetos I

Modelos de Iluminación y Sombreado de Objetos I 25 de abril de 2011 Preparación de los Enmallados 3D para el Rendering Características Geométricas de los Enmallados para Rendering Caras de geometría homogénea Usualmente triángulos o trapecios Normales

Más detalles

Iluminación Local. Prof. Fernández et al. (Universidad de la República de Uruguay) -

Iluminación Local. Prof. Fernández et al. (Universidad de la República de Uruguay) - Iluminación Local Prof. Fernández et al. (Universidad de la República de Uruguay) - http://www.fing.edu.uy/inco/cursos/compgraf/ Prof. Möller et al. Universidad Simon Fraser http://www.cs.sfu.ca/~torsten/teaching/cmpt361

Más detalles

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación. NÚMEROS REALES Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación. Un conjunto es una colección bien definida

Más detalles

Espacios vectoriales reales.

Espacios vectoriales reales. Tema 3 Espacios vectoriales reales. 3.1 Espacios vectoriales. Definición 3.1 Un espacio vectorial real V es un conjunto de elementos denominados vectores, junto con dos operaciones, una que recibe el nombre

Más detalles

Momento angular de una partícula. Momento angular de un sólido rígido

Momento angular de una partícula. Momento angular de un sólido rígido Momento angular de una partícula Se define momento angular de una partícula respecto de del punto O, como el producto vectorial del vector posición r por el vector momento lineal mv L=r mv Momento angular

Más detalles

VECTORES : Las Cantidades Vectoriales cantidades escalares

VECTORES : Las Cantidades Vectoriales cantidades escalares VECTORES En física hay dos tipos de cantidades: Las Cantidades Vectoriales son aquellas que tiene tanto magnitud como dirección y sentido sobre la dirección), mientras que las cantidades escalares son

Más detalles

PRINCIPIOS FUNDAMENTALES

PRINCIPIOS FUNDAMENTALES Capítulo 6. PRINCIPIOS FUNDAMENTALES 6.1. Ley de la inversa del cuadrado de la distancia.................. 59 6.2. Ley del coseno.......................................... 59 6.3. Iluminación normal, horizontal,

Más detalles

OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION

OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION El sistema de numeración usado habitualmente es el decimal, de base 10, que no es adecuado para ser manejado por el ordenador, fundamentalmente

Más detalles

TEMA II CENTRO DE GRAVEDAD Y CENTROIDES

TEMA II CENTRO DE GRAVEDAD Y CENTROIDES Universidad de los Andes Facultad de Ingeniería Departamento de Ciencias Aplicadas y Humanísticas. Mecánica Racional 10 TEMA II CENTRO DE GRAVEDAD Y CENTROIDES Apuntes de clases, de la profesora Nayive

Más detalles

1. Funciones de varias variables

1. Funciones de varias variables Coordinación de Matemáticas III (MAT 023) 1 er Semestre de 2013 1. Funciones de varias variables 1.1. Definiciones básicas Definición 1.1. Consideremos una función f : U R n R m. Diremos que: 1. f es una

Más detalles

Capítulo 2: Formulación matemática del problema

Capítulo 2: Formulación matemática del problema Capítulo : Formulación matemática del problema. Introducción El análisis del comportamiento en régimen permanente o transitorio de una red de puesta a tierra se fundamenta en la teoría electromagnética

Más detalles

ÓPTICA GEOMÉTRICA. Las Leyes de reflexión.

ÓPTICA GEOMÉTRICA. Las Leyes de reflexión. ÓPTICA GEOMÉTRICA Rayos luminosos.- El concepto básico con que opera la óptica geométrica es el rayo luminoso, que, como veremos, da solo una descripción aproximada del camino que la luz sigue en el espacio,

Más detalles

Capítulo 2 Resolución de la Ecuación de Oscilación

Capítulo 2 Resolución de la Ecuación de Oscilación ELC-3054 Sistemas de Potencia II Capítulo Resolución de la Ecuación de Oscilación Prof. Francisco M. González-Longatt fglongatt@ieee.org http://www.giaelec.org/fglongatt/sp.htm Sistemas de Potencia II

Más detalles

ÓPTICA GEOMÉTRICA. Teniendo en cuenta que se trata de ángulos paraxiales, la expresión se puede simplificar a: En el triángulo APC:

ÓPTICA GEOMÉTRICA. Teniendo en cuenta que se trata de ángulos paraxiales, la expresión se puede simplificar a: En el triángulo APC: ÓPTICA GEOMÉTRICA Conceptos generales: Imágenes reales. No se ven a simple vista, pero pueden recogerse sobre una pantalla. Se forman por la intersección de rayos convergentes. Imágenes virtuales. No existen

Más detalles

SIMETRÍA INFINITA. nt = kt

SIMETRÍA INFINITA. nt = kt SIMETRÍA INFINITA Al considerar el cristal como un medio periódico en el cual un grupo de átomos (el motivo) se repite en las tres dimensiones del espacio, de manera que entre dos puntos homólogos de dos

Más detalles

Dispersión de Rutherford

Dispersión de Rutherford Capítulo Dispersión de Rutherford. Ernest Rutherford. El experimento de Geiger y Marsden.3 Sección eficaz diferencial Veamos ahora si podemos intuir cómo fue que Rutherford interpretó los resultados obtenidos

Más detalles

Problemas de extremo sin derivada

Problemas de extremo sin derivada Problemas de extremo sin derivada Norberto A. Fava Problema l. Se desea arrastrar un cuerpo de peso P apoyado sobre una plataforma horizontal (ver figura) tirando de él en una dirección que forma un ángulo

Más detalles

MAPEO DE FOTONES PHOTON MAPPING

MAPEO DE FOTONES PHOTON MAPPING MAPEO DE FOTONES PHOTON MAPPING ILUMINACIÓN Iluminación Local La iluminación local solo considera la luz procedente de las fuentes luminosas hacia la superficie de los objetos. Este tipo de iluminación

Más detalles

electromagnética. tica. Ondas electromagnéticas ticas Física Avanzada Universidad de Vigo. Departamento de Física Aplicada

electromagnética. tica. Ondas electromagnéticas ticas Física Avanzada Universidad de Vigo. Departamento de Física Aplicada 2. Leyes básicas b de la teoría electromagnética. tica. Ondas electromagnéticas ticas 1 2. Leyes básicas de la teoría electromagnética. Ondas electromagnéticas. 2 Las ecuaciones de Maxwell en el espacio

Más detalles

MAGNITUDES FOTOMÉTRICAS. abril 2011

MAGNITUDES FOTOMÉTRICAS. abril 2011 MAGNITUDES FOTOMÉTRICAS abril 2011 FLUJO LUMINOSO [Ф] ANGULO SÓLIDO [ω] INTENSIDAD DE FOCO [Iα] SÓLIDO POLAR - CURVA POLAR ILUMINANCIA [E] EXITANCIA [M] LUMINANCIA [Lα] FLUJO LUMINOSO suma ponderada por

Más detalles

VECTORES Y OPERACIONES CON VECTORES

VECTORES Y OPERACIONES CON VECTORES BOLILLA 2 Sistema de Coordenadas VECTORES Y OPERACIONES CON VECTORES Un sistema de coordenadas permite ubicar cualquier punto en el espacio. Un sistema de coordenadas consta de: Un punto fijo de referencia

Más detalles

MATEMÁTICASII Curso académico BLOQUE GEOMETRÍA TEMA 2: Puntos, rectas y planos del espacio.

MATEMÁTICASII Curso académico BLOQUE GEOMETRÍA TEMA 2: Puntos, rectas y planos del espacio. MATEMÁTICASII Curso académico 2015-2016 BLOQUE GEOMETRÍA TEMA 2: Puntos, rectas y planos del espacio. 2.1 SISTEMA DE REFERENCIA. COORDENADAS DE UN PUNTO Elegimos un punto del espacio que llamamos origen

Más detalles

Los errores asociados a todo cálculo numérico tienen su origen en dos grandes factores:

Los errores asociados a todo cálculo numérico tienen su origen en dos grandes factores: Errores El concepto de error es consustancial con el cálculo numérico. En todos los problemas es fundamental hacer un seguimiento de los errores cometidos a fin de poder estimar el grado de aproximación

Más detalles

Unidad 8 Fibras Ópticas

Unidad 8 Fibras Ópticas Unidad 8 Fibras Ópticas Contenidos - Introducción: transmisión en fibras ópticas. - Óptica geométrica: reflexión total interna. - Cono de admisión y apertura numérica. - Óptica ondulatoria: modos de propagación.

Más detalles

Práctica Nº 7: Red de difracción

Práctica Nº 7: Red de difracción Práctica Nº 7: Red de difracción 1.- INTRODUCCIÓN. INTERFERENCIA o DIFRACCIÓN? Desde el punto de vista físico ambos fenómenos son equivalentes. En general se utiliza el término INTERFERENCIA, para designar

Más detalles

Campo Magnético en un alambre recto.

Campo Magnético en un alambre recto. Campo Magnético en un alambre recto. A.M. Velasco (133384) J.P. Soler (133380) O.A. Botina (133268) Departamento de física, facultad de ciencias, Universidad Nacional de Colombia Resumen. Se hizo pasar

Más detalles

ATOMO DE HIDROGENO. o = permitividad al vacío = 8.85 X C 2 N -1 cm -1. = metros. F = Newtons 2. Ó (3)

ATOMO DE HIDROGENO. o = permitividad al vacío = 8.85 X C 2 N -1 cm -1. = metros. F = Newtons 2. Ó (3) ATOMO DE HIDROGENO I. Atomo de hidrógeno A. Descripción del sistema: Dos partículas que interaccionan por atracción de carga eléctrica y culómbica. 1. Ley de coulomb: a. En el sistema cgs en unidades de

Más detalles

Métodos de elemento finito Formulación n de elemento finito en 2 dimensiones

Métodos de elemento finito Formulación n de elemento finito en 2 dimensiones Métodos de elemento finito 7.4.. Método de Galerkin 7.4.. Formulación n de elemento finito en dimensiones Los métodos m de elemento finito (MEF) son una estrategia numérica alternativa muy popular para

Más detalles

P. A. U. FÍSICA Madrid Septiembre 2005

P. A. U. FÍSICA Madrid Septiembre 2005 P. A. U. FÍSICA Madrid Septiembre 2005 CUESTIÓN 1.- Se tienen dos muelles de constantes elásticas k 1 y k 2 en cuyos extremos se disponen dos masas m 1 y m 2 respectivamente, siendo m 1 < m 2. Al oscilar,

Más detalles

Iluminación en GPU. Prof. Esmitt Ramírez Marzo 2011

Iluminación en GPU. Prof. Esmitt Ramírez Marzo 2011 Iluminación en GPU Prof. Esmitt Ramírez Marzo 2011 Iluminación Dos características a tomar en cuenta en la contribución de la luz en una escena: Física Observacional La iluminación en Computación Gráfica

Más detalles

Derivadas Parciales (parte 2)

Derivadas Parciales (parte 2) 40 Derivadas Parciales (parte 2) Ejercicio: Si donde y. Determinar Solución: Consideraremos ahora la situación en la que, pero cada una de las variables e es función de dos variables y. En este caso tiene

Más detalles

3. Propagación n de la luz en los medios no conductores. Leyes de la reflexión y de la refracción

3. Propagación n de la luz en los medios no conductores. Leyes de la reflexión y de la refracción 3. Propagación n de la luz en los medios no conductores. Leyes de la reflexión y de la refracción 1 3. Propagación de la luz en los medios no conductores. Leyes de la reflexión y de la refracción. 2 Índice

Más detalles

son dos elementos de Rⁿ, definimos su suma, denotada por

son dos elementos de Rⁿ, definimos su suma, denotada por 1.1 Definición de un vector en R², R³ y su Interpretación geométrica. 1.2 Introducción a los campos escalares y vectoriales. 1.3 La geometría de las operaciones vectoriales. 1.4 Operaciones con vectores

Más detalles

Práctica 5: Ondas electromagnéticas planas en medios dieléctricos

Práctica 5: Ondas electromagnéticas planas en medios dieléctricos Práctica 5: Ondas electromagnéticas planas en medios dieléctricos OBJETIVO Esta práctica de laboratorio se divide en dos partes principales. El primer apartado corresponde a la comprobación experimental

Más detalles

1.- Álgebra de números complejos.

1.- Álgebra de números complejos. .- Álgebra de números complejos. a) Definición y representación geométrica. b) Sumas y productos de números complejos. c) Vectores y módulos en el plano complejo. d) Representación en forma exponencial.

Más detalles

Electromagnetismo II

Electromagnetismo II Electromagnetismo II emestre: 2015-1 OLUCIÓN TAREA 10 Dr. A. Reyes-Coronado Elaboró: Pedro Eduardo Roman Taboada 1.- Problema: (35pts) Utilizando el tensor de esfuerzos de Maxwell calcula la fuerza de

Más detalles

B.0. Introducción y unidades de medida

B.0. Introducción y unidades de medida B.0. Introducción y unidades de medida B.0.1. La era de la información. Corresponde al auge de la optoelectrónica. Optoelectrónica: técnica de procesar la información mediante la luz. Necesidad de medios

Más detalles

Guía N 1 Introducción a las Matemáticas

Guía N 1 Introducción a las Matemáticas Glosario: Guía N 1 Introducción a las Matemáticas - Aritmética: Es la rama de las matemáticas que se dedica al estudio de los números y sus propiedades bajo las operaciones de suma, resta, multiplicación

Más detalles

CAMPOS ELÉCTRICOS DEBIDOS A DISTRIBUCIONES CONTINUAS DE CARGA

CAMPOS ELÉCTRICOS DEBIDOS A DISTRIBUCIONES CONTINUAS DE CARGA CAMPOS ELÉCTRICOS DEBIDOS A DISTRIBUCIONES CONTINUAS DE CARGA Este documento enuncia de forma más detallada la formulación matemática que permite el estudio de campos eléctricos debido a distribuciones

Más detalles

Puntos y Vectores. 16 de Marzo de 2012

Puntos y Vectores. 16 de Marzo de 2012 Geometría en Puntos y Vectores Universidad Autónoma Metropolitana Unidad Iztapalapa 16 de Marzo de 2012 Introducción En Geometría analítica plana las relaciones y las propiedades geométricas se expresan

Más detalles

Anexo A: Cálculo de potenciales en terrenos biestratificados

Anexo A: Cálculo de potenciales en terrenos biestratificados Anexo A: Cálculo de potenciales en terrenos biestratificados A. Potencial producido por una inyección puntual de corriente en el estrato superior En la figura A. se ilustra el modelo de un terreno biestratificado.

Más detalles

MATEMATICAS ESPECIALES I PRACTICA 9 Singularidades - Series de Laurent - Teorema de los residuos. a n (z z 0 ) n + n 1

MATEMATICAS ESPECIALES I PRACTICA 9 Singularidades - Series de Laurent - Teorema de los residuos. a n (z z 0 ) n + n 1 MATEMATICAS ESPECIALES I - 207 PRACTICA 9 Singularidades - Series de Laurent - Teorema de los residuos Teorema. Sean r y R números reales tales que 0 < r < R

Más detalles

Planos y Rectas. 19 de Marzo de 2012

Planos y Rectas. 19 de Marzo de 2012 el Geometría en el Planos y Rectas Universidad Autónoma Metropolitana Unidad Iztapalapa 19 de Marzo de 2012 el Anteriormente vimos que es posible encontrar un número infinito de vectores, no paralelos

Más detalles

Radiación de cargas en movimiento

Radiación de cargas en movimiento Radiación de cargas en movimiento 1 Potenciales de Liénard-Wiechert Potenciales Retardados: Φr, t)= v r r Ar, t) = 1 c v ρ r, t r r /c) Jr, t r r /c) r r dv...4) dv...5) 2 Consideremos una carga puntual

Más detalles

Desarrollo multipolar del potencial.

Desarrollo multipolar del potencial. c Rafael R. Boix y Francisco Medina Desarrollo multipolar del potencial. Consideremos un cuerpo cargado que ocupa una región volumétrica. Sea ρ(r ) la densidad volumétrica de carga del cuerpo cargado.

Más detalles

Geometría de Señales Espacios de Hilbert y aproximaciones

Geometría de Señales Espacios de Hilbert y aproximaciones Geometría de Señales Espacios de Hilbert y aproximaciones Temario Teorema de Parseval y Conservación de la Norma. Aproximaciones por proyección Ejemplos Teorema de Parseval Sea x la representación de un

Más detalles

Estructura estelar estática

Estructura estelar estática Estructura estelar estática Introducción A lo largo de su existencia, una estrella se encuentra en un estado de equilibrio delicado. Pequeños cambios pueden provocar inestabilidades locales o globales.

Más detalles

Los lugares geométricos de todos los puntos del espacio en los cuales la magnitud escalar tiene un mismo valor.

Los lugares geométricos de todos los puntos del espacio en los cuales la magnitud escalar tiene un mismo valor. 2. 2. Introducción A lo largo del estudio de la Física surgen una serie de propiedades, tanto de magnitudes escalares como vectoriales, que se expresan por medio de nuevos conceptos tales como gradiente,

Más detalles

Tema: Formación Fotométrica de la Imagen

Tema: Formación Fotométrica de la Imagen Tema: Formación Fotométrica de la Imagen Visión por Computadora. Lizbeth Santacruz Flores. Introducción. Al modelar el proceso de formación de la imagen, hemos descrito como características geométricas

Más detalles

ALGEBRA. Escuela Politécnica Superior de Málaga

ALGEBRA. Escuela Politécnica Superior de Málaga ALGEBRA. Escuela Politécnica Superior de Málaga Tema 1. Espacios Vectoriales. Sistemas de ecuaciones. Espacio vectorial. Espacios vectoriales R n. Dependencia e independencia lineal. Base. Matrices y determinantes.

Más detalles

Bolilla 12: Óptica Geométrica

Bolilla 12: Óptica Geométrica Bolilla 12: Óptica Geométrica 1 Bolilla 12: Óptica Geométrica Los contenidos de esta bolilla están relacionados con los principios primarios que rigen el comportamiento de los instrumentos ópticos. La

Más detalles

Sistemas no lineales

Sistemas no lineales Tema 4 Sistemas no lineales Dpto. Matemática Aplicada I E.T.S. de Arquitectura Universidad de Sevilla Curso 2005 2006 Tema 4. Sistemas no lineales 1. Sistemas no lineales de ecuaciones diferenciales. Integrales

Más detalles

Javier Junquera. Movimiento de rotación

Javier Junquera. Movimiento de rotación Javier Junquera Movimiento de rotación Bibliografía Física, Volumen 1, 3 edición Raymod A. Serway y John W. Jewett, Jr. Ed. Thomson ISBN: 84-9732-168-5 Capítulo 10 Física, Volumen 1 R. P. Feynman, R. B.

Más detalles

A. VECTORES 1. VECTORES FIJOS Y VECTORES LIBRES

A. VECTORES 1. VECTORES FIJOS Y VECTORES LIBRES RESUMEN DE GEOMETRÍA MATEMÁTICAS II A. VECTORES 1. VECTORES FIJOS Y VECTORES LIBRES Un vector fijo de origen A y extremo B, siendo A y B puntos del espacio, es un segmento orientado caracterizado por:

Más detalles

2 Transformaciones en 3D

2 Transformaciones en 3D 2 Transformaciones en 3D La manera más fácil de conseguir las transformaciones básicas (traslación, rotación, escalación, en general las transformaciones afines) es utilizando matrices de transformación.

Más detalles

TEMA 5 COMUNICACIONES DIGITALES

TEMA 5 COMUNICACIONES DIGITALES TEMA 5 COMUNICACIONES DIGITALES Espacio de señales Convertir las complicadas relaciones y operaciones entre señales, en sencillas operaciones geométricas. Nos centraremos exclusivamente en el conjunto

Más detalles

TEMA 0. FUERZAS CONSERVATIVAS Y NO CONSERVATIVAS

TEMA 0. FUERZAS CONSERVATIVAS Y NO CONSERVATIVAS TEMA 0. FUERZAS CONSERVATIVAS Y NO CONSERVATIVAS 1. Trabajo mecánico. 2. Teorema de la energía cinética. 3. Fuerzas conservativas y energía potencial. 4. Conservación de la energía mecánica. 5. Consejos

Más detalles

Álgebra Geométrica de Clifford

Álgebra Geométrica de Clifford Apéndice A Álgebra Geométrica de Clifford El álgebra geométrica es un sistema cuyos elementos son llamados multivectores y está caracterizada por un producto geométrico. Esta álgebra, su teoría y propiedades,

Más detalles

TEMA 8: LA DESCRIPCION DE LOS MOVIMIENTOS: CINEMÁTICA.

TEMA 8: LA DESCRIPCION DE LOS MOVIMIENTOS: CINEMÁTICA. CURSO 2012/2013 DEPARTAMENTO DE CIENCIAS DE LA NATURALEZA FÍSICA Y QUIMICA 1º BACHILLERATO CIENCIAS Y TECNOLOGÍA Profesor: José Criado Ferrándiz TEMA 8: LA DESCRIPCION DE LOS MOVIMIENTOS: CINEMÁTICA. 1.

Más detalles

José Humberto Serrano Devia Página 1

José Humberto Serrano Devia Página 1 Similitudes entre el espacio y las series de Fourier Funciones Ortogonales En esta sección se muestra la forma en que los conceptos vectoriales de producto interno, o producto escalar, y el de ortogonalidad

Más detalles

Curvas y Superficies

Curvas y Superficies Curvas y Superficies Curvas y Superficies q Motivación q Representación de curvas y superficies q Curvas paramétricas cúbicas q Curvas de Hermite q Curvas de Bézier q B-splines q Superficies paramétricas

Más detalles

Graficación CCOM-259. Benemérita Universidad Autónoma de Puebla. Facultad de Ciencias de la Computación. Daniel Alejandro Valdés Amaro, Ph.

Graficación CCOM-259. Benemérita Universidad Autónoma de Puebla. Facultad de Ciencias de la Computación. Daniel Alejandro Valdés Amaro, Ph. Graficación CCOM-9 Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Daniel Alejandro Valdés Amaro, Ph.D Objetivo: El alumno conocerá y aplicará los algoritmos y técnicas

Más detalles

Física 3: Septiembre-Diciembre 2011 Clase 13,Lunes 24 de octubre de 2011

Física 3: Septiembre-Diciembre 2011 Clase 13,Lunes 24 de octubre de 2011 Clase 13 Potencial Eléctrico Cálculo del potencial eléctrico Ejemplo 35: Efecto punta En un conductor el campo eléctrico es mas intenso cerca de las puntas y protuberancias pues el exceso de carga tiende

Más detalles

MODELACION EN VARIABLES DE ESTADO

MODELACION EN VARIABLES DE ESTADO CAPÍTULO VIII INGENIERÍA DE SISTEMAS I MODELACION EN VARIABLES DE ESTADO 8.1. DEFINICIONES Estado: El estado de un sistema dinámico es el conjunto más pequeño de variables de modo que el conocimiento de

Más detalles

Figura Trabajo de las fuerzas eléctricas al desplazar en Δ la carga q.

Figura Trabajo de las fuerzas eléctricas al desplazar en Δ la carga q. 1.4. Trabajo en un campo eléctrico. Potencial Clases de Electromagnetismo. Ariel Becerra Al desplazar una carga de prueba q en un campo eléctrico, las fuerzas eléctricas realizan un trabajo. Este trabajo

Más detalles

Simulación Numérica de Yacimientos

Simulación Numérica de Yacimientos Simulación Numérica de Yacimientos Dr. Fernando Rodríguez de la Garza email: frodriguezd@pep.pemex.com Tel: 5550871, 56 3017 al 19 Capítulo 3. Diferencias Finitas 1 3.1 Diferencias Finitas Considerar que

Más detalles

TEMA 8. GEOMETRÍA ANALÍTICA.

TEMA 8. GEOMETRÍA ANALÍTICA. TEMA 8. GEOMETRÍA ANALÍTICA. 8..- El plano. Definimos el plano euclideo como el conjunto de puntos ( x, y) R. Así, cada punto del plano posee dos coordenadas. Para representar puntos del plano utilizaremos

Más detalles

Introducción al Cálculo Simbólico a través de Maple

Introducción al Cálculo Simbólico a través de Maple 1 Introducción al Cálculo Simbólico a través de Maple Introducción A manera de introducción, podemos decir que los lenguajes computacionales de cálculo simbólico son aquellos que permiten la representación

Más detalles

Física I CIBEX enviar correcciones a:

Física I CIBEX enviar correcciones a: Física I CIBEX - 2017 enviar correcciones a: Departamento de Física - UNLP silva@fisica.unlp.edu.ar Práctica 0: Vectores Figura 1: Componentes de un vector en coordenadas cartesianas Dado un sistema cartesiano

Más detalles

en dos dimensiones como objetos que tienen magnitud, dirección y su representación geométrica.

en dos dimensiones como objetos que tienen magnitud, dirección y su representación geométrica. 1 N.SN.11.1.1 Define vectores en dos dimensiones como objetos que tienen magnitud, dirección y su representación geométrica. Vectores Unidad 4: Vectores Tema 1: Vectores Lección 1: Definición 11 Introducción

Más detalles

1 Representación por superficies de polígonos

1 Representación por superficies de polígonos 1 La representación de frontera que más se utiliza para un objeto gráfico tridimensional es un conjunto de polígonos de superficie que encierran el interior del objeto. Muchos sistemas gráficos almacenan

Más detalles

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales.

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales. EL SISTEMA DE LOS NÚMEROS REALES Introducción El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales. Números tales como:1,3, 3 5, e,

Más detalles

Técnicas avanzadas basadas en trazado de rayos

Técnicas avanzadas basadas en trazado de rayos Técnicas avanzadas basadas en trazado de rayos Trazado de rayos: Generación La cámara Rayo = f(x,y) Trazado de rayos: intersecciones Rayo-triángulo: Intersección con plano. Comprobación de rangos v N P

Más detalles

CAPITULO XII PUENTES DE CORRIENTE ALTERNA

CAPITULO XII PUENTES DE CORRIENTE ALTERNA CAPITULO XII PUENTES DE CORRIENTE ALTERNA 2. INTRODUCCION. En el Capítulo IX estudiamos el puente de Wheatstone como instrumento de medición de resistencias por el método de detección de cero. En este

Más detalles

Modelado y control de un captador solar tipo Fresnel.

Modelado y control de un captador solar tipo Fresnel. Capítulo 5 Modelado y control de un captador solar tipo Fresnel. En este capítulo se describirá el procedimiento de obtención de parámetros concentrados de un captador solar tipo Fresnel ubicado en la

Más detalles

REPASO Interferencia

REPASO Interferencia REPASO Interferencia Dos fuentes de ondas coherentes separadas por una distancia 4 Considere un punto a en el eje x. las dos distancias de S 1 a a y de S 2 a a son iguales las ondas requieren tiempos iguales

Más detalles

Capítulo 7. Subterráneo

Capítulo 7. Subterráneo Capítulo 7 Solución n Numérica de la Ecuación n de Flujo Subterráneo Teoría a de Flujo Subterráneo Semestre 2008-1 Alberto Rosas Medina 1 Índice Polinomios de Lagrange Diferencias Finitas en una Dimensión

Más detalles