Resumen: Es muy común ver objetos con propiedades de translucencia; desde el sutil efecto visto en algunos líquidos como la leche o el zumo de naranja, a la apariencia más translúcida de las hojas de los árboles. En un objeto translúcido, la luz que incide sobre él entra en su cuerpo en un punto, se dispersa en su interior, y sale del objeto en otro punto del mismo. Esto contrasta con un objeto opaco, donde la luz refleja en el mismo punto donde incide sobre la superficie. Este mecanismo del transporte de la luz se denomina subsurface scattering (SSS), y es de crucial importancia para simular dichos materiales de forma fotorealista. Una mano iluminada desde atrás es probablemente uno de los mejores ejemplos donde puede verse lo aparente que es este efecto en la piel humana. Al contrario que otros materiales más sencillos, como el mármol, la piel humana está compuesta de múltiples capas que definen como la luz se absorbe y se dispersa cuando interactúa con la misma. Dos de las capas más importantes son la epidermis y la dermis, que contienen unos cromoforos denominados melanina y hemoglobina que definen el color específico de la piel, incluyendo tipos de piel africanos, asiáticos y caucásicos. El color de la luz que sale de la superficie de la piel depende de cuanto ha viajado dentro de estas capas, y por tanto cuanta luz ha sido absorbida y dispersada por dichos cromoforos y otras estructuras de pequeña escala encontrados en la piel. Finalmente, esto se traduce en gradientes de color en el perímetro entre luz y sombras. De forma similar, la iluminación en la superficie de la piel se suaviza, haciéndola menos dependiente de la geometría, dado que la luz esta viajando por dentro del objeto y no siendo reflejada en la superficie. Esto oculta las imperfecciones de la piel hasta cierto punto, creando un aspecto mucho menos duro: áreas no iluminadas en los poros e imperfecciones reciben la iluminación que proviene de las zonas iluminadas adyacentes, reduciendo el contraste del sombreado. Y finalmente, la luz viaja a través de regiones delgadas como las orejas y la nariz, coloreándolos con los brillantes y cálidos tonos que rápidamente asociamos con la translucencia. Estas complejas interacciones entre la luz y la piel humana son un fenómeno natural para los humanos, dado que dedicamos horas y horas a interactuar y comunicarnos con otros humanos, mirándolos directamente a sus caras. Esto significa que nuestro sistema visual está especialmente bien ajustado para detectar incluso el más pequeño error en las simulaciones de piel humana. La simulación fotorealista de piel humana es de extrema importancia para crear efectos especiales en la industria del cine, pero ha sido ignorado hasta cierto punto por la industria del videojuego. Sin embargo, en los últimos años, hay una tendencia hacia juegos más conducidos por personajes y buenos guiones; en cierto modo, más cercanos al cine. Esto ha llevado al uso de mapas de color y normales muy detallados para representar de forma mas fehaciente la apariencia de las caras humanas. Desafortunadamente, el uso de dichos mapas tan detallados, sin prestar más atención a las interacciones entre la luz y la piel, lleva a los personajes a caer en el uncanny valley de forma inevitable, haciendo que se vean menos realistas que otros sistemas menos sofisticados. Esto ha despertado el interés por representar de forma fotorealista a los personajes humanos. En contraste con la tecnología de simulación offline usada para el cine, donde horas y horas pueden ser dedicadas para las simulaciones, en las aplicaciones en tiempo real el tiempo dedicado para la simulación de piel está en el rango de los milisegundos (con restricciones adicionales en juegos). El reto de esta tesis es, por tanto, conseguir simular piel con la calidad alcanzada en el cine, en tiempos de ejecución ordenes de magnitud más pequeñas, teniendo en cuenta características muy sutiles de la apariencia de la piel, como la simulación de SSS, los cambios en el color facial y la animación de arrugas. Subsurface scattering suele describirse en términos del Bidirectional Scattering Surface Reflectance Distribution Function (BSSRDF) [Nicodemus et~al., 1977]. Desafortunadamente, evaluar directamente esta función es prohibitivamente caro. Jensen et~al. [2001] aproxima la radiancia saliente en materiales translúcidos usando una aproximación de difusión basada en dipolos, lo que mejora el rendimiento pero todavía quedando lejos del tiempo real. Borshukov and Lewis [2003] aproxima la dispersión de la luz en espacio de textura, suavizando los mapas de irradiancia usando kernels controlados artísticamente, produciendo buenos resultados pero sin alcanzar la precisión de métodos basados en al física. En el trabajo de d¿Eon et~al. [2007] se hizo la observación de que los perfiles de difusión pueden ser aproximados por una suma de gaussianas, permitiendo alcanzar finalmente rendimientos apropiados para el tiempo real. Desafortunadamente, renderizar una cabeza requería todos los recursos de la GPU más potente del momento, lo que imposibilitaba su uso en la generación actual de consolas y en la generación previa de PCs. Además, el uso de mapas de iluminación puede ser complicado de administrar. Estas desventajas previnieron su uso directo en juegos, dado que en dichos entornos en tiempo real, la piel es solo una pequeña pieza de un sistema muy grande. En esta tesis se introduce un pipeline mejorado en espacio de textura, que permite simular piel de forma mas rápida. De igual forma, se introduce un nuevo paradigma, trasladando la difusión a espacio de pantalla, en un intento de hacer la simulación de piel práctica en juegos. Finalmente, se introduce una nueva técnica que permite separar el perfil de difusión bidimensional en solo dos funciones unidimensionales, permitiendo simular piel de forma realista incluso en los escenarios más complicados (incluyendo la generación actual de consolas). Dando un paso más allá, las estructuras internas de la piel están en constante cambio a medida que las personas hablan, muestran disgusto o simplemente alteran su estado físico o emocional. Las deformaciones mecánicas de la estructura de la piel hacen que la sangre fluctúe de unas regiones a otras, modificando la concentración de hemoglobina encontrada en la epidermis, y especialmente en la dermis, llevando a cambios en el color facial. Un ejemplo puede ser una área arrugada: los picos muestran un tono más rojizo que las zonas más profundas. Otras condiciones de la piel como el sonrojarse, denotan emociones como la vergüenza, la excitación o incluso la alegría, y modifican el estado interno de la hemoglobina en la piel, y por tanto su color. Otro ejemplo relevante es una situación de miedo; en este caso, la sangre es extraida de la piel, y dirigida a órganos más importantes que pueden salvar nuestra vida, como pueden ser los pulmones o el corazón. Esto lleva a menos hemoglobina en la piel facial, y por tanto, a una apariencia más pálida. Estos cambios dinámicos, que son bien conocidos en el campo médico, son ignorados hasta cierto punto en informática gráfica (e incluso en el cine). Tener en cuenta dichos efectos lleva a personajes más emocionales, donde su piel refleja sus sentimientos y pensamientos. Existen muchos trabajos que tratan de modelar cambios de color faciales. Sin embargo, los resultados de los mismos son casi por completo guiados por el usuario, con ninguna correlación con medidas de cambios de hemoglobina. En esta tesis se describe una técnica data-driven, basada en mediciones in-vivo, que permite modelar de forma muy precisa estas sutiles pero aparentes fluctuaciones del color facial. Sin darnos cuenta, dependemos a menudo de las sutilezas de la expresión facial para recibir la información contextual que alguien está transmitiendo mientras habla; lo que piensa y siente. Por ejemplo, una ceja arrugada puede indicar sorpresa, mientras que un ceño fruncido puede indicar confusión o curiosidad. A mediados del siglo XIX, un neurólogo llamado Guillaume Duchenne realizó una serie de experimentos que involucraban la aplicación de estímulos eléctricos a los músculos faciales. Sus experimentos le permitieron establecer qué músculos faciales son usados en las diferentes expresiones faciales. Un hecho interesante que descubrió es que las sonrisas producto de verdadera felicidad no solo utilizan los músculos de la boca, sino también aquellos de los ojos. Es este sutil pero importante movimiento muscular el que distingue una sonrisa genuina, de una falsa o sarcástica. Lo que aprendemos de esto es que las expresiones faciales son complejas y algunas veces muy sutiles, pero extraordinariamente importantes para transmitir significados e intenciones. Para permitir a los artistas la creación de personajes convincentes debemos permitirles utilizar el poder de la sutil expresión facial, lo que incluye la simulación realista de las deformaciones de arrugas. En esta tesis se presentan dos métodos para animar arrugas de forma práctica y eficiente, que permiten integrar dichos efectos con un coste computacional y de memoria mínimos. Por otro lado, el aliasing es uno de los problemas más longevos en la informática gráfica, produciendo problemas tanto en imágenes estáticas (dominio espacial), como en animaciones (dominio temporal). Aunque usar tasas de muestreo mayores puede reducir sus efectos, esta aproximación es demasiado cara y por tanto no es adecuada para las aplicaciones en tiempo real. En los últimos años hemos visto grandes mejoras en los algoritmos de render en tiempo real, desde complejos shaders de efectos especiales, hasta la mejora del detalle geométrico mediante teselación. Sin embargo, el aliasing sigue siendo uno de los mayores impedimentos para romper las barreras entre la simulación offline y el tiempo real. Durante mas de una década, supersample antialiasing (SSAA) y multisample antialiasing (MSAA) han sido las soluciones estándar en las aplicaciones en tiempo real y videojuegos. Sin embargo, MSAA no escala bien cuando se incrementan el número de muestras, y no es trivial su inclusión en paradigmas de render en tiempo real como el deferred lighting/shading. Para ejemplificar este problema con números, MSAA 8x requiere un promedio de 5.4 ms en juegos modernos, usando motores de render estado del arte en una NVIDIA GeForce GTX 470 (llegando a los 7.7 ms en juegos que requieren mucho ancho de banda). El consumo de memoria en este modo es de 126 MB y 316 MB, para un motor gráfico convencional y deferred respectivamente, requiriendo un 12% y un 30% de una GPU equipada con 1 GB de memoria. Este problema se agrava cuando se utiliza HDR, ya que dichos números pueden doblarse. Recientemente, tanto industria como academia han empezado a buscar aproximaciones alternativas, donde el antialiasing se realiza como un postproceso. El método original de morphological antialiasing (MLAA) ha dado lugar a una explosión de técnicas de antialiasing en tiempo real, rivalizando la calidad de los resultados de MSAA. Siguiendo esta tendencia, dos aproximaciones de antialiasing han sido desarrolladas en esta tesis: Jimenez's MLAA, que es la primera aproximación práctica de MLAA en GPU; y Enhanced Subpixel Morphological Antialiasing (SMAA), que mostró por primera vez, como combinar una aproximación morfológica con las clásicas soluciones de antialiasing: multisampling y supersampling.