Global Illumination (GI) es un sistema que modela cómo la luz rebota de superficies a otras superficies (luz indirecta) en vez de estar limitada a la luz que golpea una superficie directamente desde una fuente de luz (luz directa). Modela la luz indirecta permite efectos que hacen que el mundo virtual se vea más real y conectado, ya que los objetos afectan la apariencia de cada uno. UN ejemplo clásico es ‘color bleeding’ dónde, por ejemplo la luz del sol que golpea un sofa rojo va a causar que una luz roja rebote a una pared detrás de este. Otro es cuando la luz del sol golpea el suelo en la apertura de una cueva y rebote a dentro de esta entonces las partes interiores de la cueva son iluminadas también.
Iluminación global en la vista de escena. Tenga en cuenta el efecto sutil de la iluminación indirecta.
Tradicionalmente, los video juegos y otras aplicaciones gráficas en tiempo real han estado limitadas a la iluminación directa, mientras los cálculos requeridos para una iluminación indirecta eran muy lentos entonces solo podrían ser utilizados en situaciones que no eran en tiempo real como películas animadas de CG. Una manera para que los juegos funcionen con esta limitación es calcular la iluminación indirecta solo en objetos y superficies que son conocidos antes de tiempo y que no se muevan (son estáticos). DE esta manera la computación lenta se puede hacer con tiempo, pero ya que los objetos no se mueven, la iluminación indirecta es pre-calculada y de esta manera todavía se estaría en tiempo real. Unity soporta esta técnica, llamada Baked GI (también conocida como Baked Lightmaps), que es nombrada por el “bake” - el proceso en el cual la iluminación indirecta es pre-calculada y almacenada (baked). Adicionalmente a la iluminación indirecta, Baked GI también toma ventaja de un tiempo mayor de computación disponible para generar sombras suaves más reales de área iluminadas e iluminación indirecta que normalmente serían logradas con técnicas de tiempo real.
Adicionalmente, Unity 5.0 agrega soporte para una nueva técnica llamada Precomputed Realtime GI (GI en tiempo Real pre-calculada). Todavía requiere una fase de pre-cálculo similar al bake mencionado arriba, y todavía está limitado a objetos estáticos. Sin embargo, no solo pre-cálcula cómo la luz rebota en la escena en el tiempo que es construida, pero en vez pre-cálcula toda la luz posible que rebota y codifica esta información para su uso en tiempo real. Entonces esencialmente para todos los objetos estáticos responde la pregunta “si una luz golpea esta superficie, a dónde rebota?” Unity luego guarda esta información acerca de qué caminos de luz la luz puede propagarse para un uso más tarde. La iluminación final es hecha en tiempo real al alimentar las luces actuales presentes en estos caminos de propagación de luz calculados previamente.
Esto significa que el número y tipo de luces, su posición, dirección y otras propiedades se pueden cambiar y la iluminación indirecta se actualizará de acuerdo a esto. Similarmente, también es posible cambiar las propiedades del material de objetos, tal como su color, qué tanta luz absorben o qué tanta luz emiten estos.
Mientras que un Precomputed Realtime GI también resulta en soft shadows (sombras suaves), estas típicamente serán mucho más de grano grueso de lo que se puede lograr con Baked GI al menos de que la escena sea muy pequeña. También tenga en cuenta que mientras Precomputed Realtime GI hace la iluminación final en tiempo real, lo hace de manera iterativa sobre varios frames, por lo que si un gran cambio es hecho en la iluminación, este tomará más frames para que completamente haga efecto. Y mientras esto es lo suficiente rápido para aplicaciones en tiempo real, si la plataforma objetivo tiene unos recursos muy limitados, puede ser mejor utilizar Baked GI para un rendimiento mejor en tiempo de ejecución.
Ambos el Baked GI y Precomputed Realtime GI tienen la limitación de que solo objetos estáticos pueden ser incluidos en el bake/pre-cálculo - entonces los objetos en movimiento no pueden rebotar luz a otros objetos y vice-versa. No obstante, estos pueden recoger una luz que rebota de un objeto estático utilizando Light Probes. Los Light Probes son posiciones en la escena dónde la luz es medida (probada) durante el bake/pre-cálculo, y luego en tiempo de ejecución la luz indirecta que golpea objetos no estáticos se aproxima utilizando los valores de los probes de los cuales el objeto está cerca en cualquier momento. Entonces por ejemplo, una luz roja que rueda alado de una blanca pared no va a sangrar su color a la pared, pero una bola blanca alado de una pared roja va a coger un sangrado de color rojo de la pared vía los light probes.
Cambiar la dirección y color de una directional light para simular el efecto del sol moviéndose a través del cielo. Al modificar el skybox en conjunto con la directional light hace posible crear un efecto del tiempo de un día muy real que es actualizado en tiempo de ejecución. (De hecho, el nuevo skybox procedural integrado hace que esto sea fácil).
A medida que el día progresa, la luz del sol que viene a través de la ventana se mueve a través del suelo, y esta luz rebota de manera real alrededor del cuarto al techo. Cuando la luz del sol llega a un sofa rojo, la luz roja rebota a la pared detrás de este. Cambiar el color del sofa de rojo a verde va a resultar en un sangrado del color a la pared detrás de este volviéndolo de rojo a verde.
Animando la emisividad del material de una señalización de neon para que empiece le empiece brillar a sus alrededores cuando se prenda.
Las siguientes secciones entran en detalle acerca de como utilizar esta caracteristica.