En Unity, la precomputed lighting (iluminación precalculada) se calcula en el fondo ya sea como un proceso automático o cuando se inicia manualmente. En cualquier cosa, es posible continuar trabajando en el editor mientras estos procesos se ejecutan detrás de escena.
Cuando el proceso de precompute esté ejecutando, una barra de progreso azul aparecerá en la esquina derecha del Editor. Hay diferentes fases que necesitan completarse dependiendo si Baked GI o Precomputed Realtime GI está habilitado. La información acerca del proceso actual se muestra encima de la barra de progreso.
La barra de progreso muestra el estado actual del precompute (precalculo) de Unity.
En el ejemplo de arriba, podemos ver que estamos en la tarea 5 de 11 la cual es, ‘Clustering’ y hay 6 trabajos que faltan antes de que esa tarea haya completado y el precompute (pre-calculo) se mueve a la tarea 6. Las varias fases se listan abajo:
Precomputed Realtime GI
Probes
Baked GI
Solamente la geometría estática se considera por las soluciones de precomputed lighting de Unity. Para empezar el proceso de lighting precompute necesitamos al menos un GameObject marcado como ‘static’ en nuestra escena. Este puede ser hecho de manera individual, o seleccionando y haciendo shift en varios GameObjects del panel de Jerarquía.
Del panel del Inspector, la casilla de verificación Static se puede seleccionar (Inspector > Static). Esto configurará todas las ‘opciones static’, o ‘flags’, de los GameObjects, incluyendo la navegación y batching, en ser estáticos, lo cual puede que no se desee. Para Precomputed Realtime GI, solamente ‘Lightmap Static’ se necesita marcar.
Para un control más fino, las opciones estáticas individuales se pueden configurar de la lista desplegable accesible a la derecha de la casilla de verificación Static en el panel del Inspector. Adicionalmente, los objetos también se pueden configurar a Static en el área Object de la ventana de lighting.
Si su escena está configurada a Auto (Lighting > Scene > Auto), la lighting precompute de Unity empezará automáticamente. De lo contrario, necesitará empezar manualmente como se describe abajo.
Si ‘Auto’ está marcado en el fondo del panel de Lighting de Unity (Lighting > Scene > Auto), entonces este precompute empezará automáticamente como un proceso en el fondo cuando haya cambios a la geometría estática dentro de su escena.
Sin embargo, si Auto no está seleccionado, usted necesitará empezar manualmente un precompute (precalculo) oprimiendo el botón ‘Build’ alado de este. Esto empezará el precompute de la misma manera, mientras le da a usted control sobre cuando este proceso empieza.
Iniciar manualmente un precompute causará que todos los aspectos de la iluminación de su escena sean evaluados y (re)computed (calculados). Si usted sea desea re-calcular selectivamente los Reflection Probes por sí solos, esto se puede realizar a través del menú desplegable alado del botón Build (Lighting > Scene > Build).
Por defecto, ambos el Precomputed Realtime GI y Baked GI están habilitados en el panel de Lighting de Unity (Lighting > Scene). Con ambas habilitadas, la técnica utilizada puede luego ser controlada por cada luz individualmente (Inspector > Light > Baking).
Utilizar ambos el Baked GI y Precomputed Realtime GI juntos en su escena puede ser perjudicial al rendimiento. Una buena práctica es asegurarse que solo se esté usando un sistema a la vez, al desactivar el otro globalmente. Esto se puede hacer desmarcando la caja alado de cualquiera de Precomputed Realtime GI o Baked GI dentro del panel de lighting de Unity (Lighting > Scene). Ahora solamente la opción marcada estará presente en su escena, y cualquier otras configuraciones por-luz serán anuladas.
El modo predeterminando de baking para cada luz es ‘Realtime’ (tiempo real). Esto significa que la luz seleccionada contribuirá una luz directa a su escena, con una iluminación indirecta manejada por el sistema de Precomputed Realtime GI.
Sin embargo, si el modo de baking está configurado a ‘Baked’ entonces la luz contribuirá luz solamente al sistema de Baked GI de Unity. Ambas luces directas e indirectas de esas luces seleccionadas serán ‘baked’ en lightmaps y no se podrán cambiar durante el gameplay.
Baking ModePoint light con el modo de Baking por luz configurada a ‘Realtime’.
Seleccionando el baking mode ‘Mixed’, los GameObjects marcados como static (estáticos) seguiran incluyendo esta luz en sus Baked GI lightmaps. No obstante, a diferencia de las luces marcadas como ‘Baked’, las luces Mixed contribuirán una luz directa en tiempo real a GameObjects no-estáticos dentro de su escena. Esto puede ayudar en casos dónde está utilizando lightmaps en su ambiente estático, pero todavía quiere que el personaje utilice estas mismas luces para emitir sombras en tiempo real a la geometría que está lightmapped.
En cualquiera del Baked GI o Precomputed Realtime GI, Unity ‘almacena en cache’ datos acerca de la iluminación de su escena en el ‘GI Cache’, e intentará re-utilizar estos datos cuando sea posible para ahorrar tiempo durante el precompute. La cantidad y naturaleza de los cambios que le ha hecho a su escena determinará qué tanto de estos datos se pueden re-utilizar.
Este caché se almacena externamente al proyecto de Unity y se puede limpiar utilizando (Preference > GI Cache > Clear Cache). Limpiar esto significa que todas las fases de precompute necesitarán ser re-calculadas desde el principio por lo que puede tomar tiempo. Sin embargo, en algunos casos, de pronto necesita reducir el uso de disco, lo cual podría ayudar.
Level-of-detail (nivel de detalle) se toma en consideración cuando Unity genera baked lightmaps. La iluminación directa se calcula utilizando las superficies actuales de todos los LODs. Niveles LOD más bajos utilizan light probes para recoger iluminación indirecta. La iluminación resultante se baked a un lightmap.
Esto significa que debería colocar light probes alrededor de sus LODs para capturar una iluminación indirecta. El objeto no utilizará lightprobes en tiempo de ejecución si utiliza un baked GI completo.