Version: 5.5
Características Avanzadas de las Sondas de Reflexión (Reflection Probes)
Cluster Rendering

Rendimiento de Reflection Probes y Optimización

La renderización de un cubemap de un reflection probe toma una cantidad significativa de tiempo de procesador por una serie de razones:

  • Cada una de las seis caras del cubamap se debe renderizar por separado usando una “cámara” en el origen del probe.
  • Los probes tendrán que renderizarse en un tiempo separado para cada nivel de rebote de reflexión (consulte el tema Interreflections para obtener más detalles).
  • Los diversos niveles del mipmap del cubemap deben someterse a un proceso borroso para permitir reflejos brillantes.

El tiempo necesario para renderizar los probes afecta el flujo de trabajo de baking en el editor y, lo que es más importante, el rendimiento en tiempo de ejecución del player. A continuación se presentan algunos consejos para mantener el impacto de rendimiento de los reflection probes a un mínimo.

Recomendaciones Generales

Los siguientes problemas afectan tanto al rendimiento de tiempo de baking sin conexión y rendimiento en tiempo de ejecución.

Resolución

Cuanto mayor sea la resolución de un cubemap, mayor será su tiempo de renderización. Puede optimizar los probes estableciendo resoluciones más bajas en lugares donde el detalle de la reflexión es menos importante (por ejemplo, si un objeto reflectante es pequeño y/o distante, naturalmente mostrará menos detalles). Las resoluciones más altas deben seguir siendo usadas dondequiera que el detalle sea perceptible.

Culling Mask

Una técnica estándar para mejorar el rendimiento de una cámara normal es utilizar la propiedad Culling Mask para evitar la renderización de objetos insignificantes; La técnica funciona igualmente bien para los reflection probes. Por ejemplo, si su escena contiene muchos objetos pequeños (por ejemplo, rocas y plantas), podría considerar ponerlos todos en la misma capa y luego usar la culling mask para evitar renderizarlos en la reflexión.

Optimización de Probes en Tiempo Real

La sobrecarga de renderización es generalmente más significativa para los probes en tiempo real que para aquellos baked en el editor. Las actualizaciones son bastante frecuentes y esto puede tener un impacto en el framerate si no se administra correctamente. Con esto en mente, los probes en tiempo real proporcionan las siguientes propiedades para permitirle manejar la renderización del probe lo más eficientemente posible.

Modo Refresh

El Refresh Mode le permite elegir cuándo se actualizará el probe. La opción más costosa en términos de tiempo de procesador es Every Frame. Esto da las actualizaciones de manera más frecuentes con un mínimo esfuerzo de programación pero puede encontrar problemas de rendimiento si utiliza este modo para todas los probes.

Si el modo está ajustado a On Awake, el probe se actualizará en tiempo de ejecución, pero sólo una vez al comienzo de la escena. Esto es útil si la escena (o parte de ella) está configurada en tiempo de ejecución pero no cambia durante su vida útil.

El modo final, Via Scripting, le permite controlar las actualizaciones del probe desde un script. Aunque un cierto esfuerzo está implicado en la programación del script, este enfoque permite optimizaciones útiles. Por ejemplo, puede actualizar un probe de acuerdo con el tamaño aparente de pasar objetos (es decir, los objetos pequeños u objetos grandes a distancia no merecen una actualización).

Time Slicing

Cuando el Refresh Mode descrito anteriormente se establece en Every Frame la carga de procesamiento puede ser considerable. Time Slicing le permite difundir el costo de las actualizaciones en varios marcos y reducir así la carga en un momento dado. Esta propiedad tiene tres opciones diferentes:

  • All Faces at Once hará que las seis caras del cubo se rendericen inmediatamente (en el mismo frame), pero la operación de borrosidad para cada uno de los seis mipmaps de primer nivel tendrá lugar en marcos separados. Los mipmaps restantes se borrarán en un solo frame y los resultados se copiarán en el cubemap en otro marco. Por lo tanto, la actualización completa tarda nueve cuadros en completarse.

  • Individual Faces funciona de la misma manera que **All Faces at Once_, excepto que la renderización inicial de cada cara del cubemap tiene lugar en su propio marco (en lugar de los seis en el primer frame). La actualización completa toma catorce frame para completar; Esta opción tiene el menor impacto en el framerate, pero el tiempo de actualización relativamente largo puede ser notorio cuando, digamos, las condiciones de iluminación cambian abruptamente (por ejemplo, una lámpara se enciende de repente).

** No Time Slicing deshabilita la operación time slicing completamente y por lo tanto cada actualización del probe tiene lugar dentro de un solo marco. Esto asegura que las reflexiones se sincronizan exactamente con la apariencia de los objetos circundantes, pero el coste de procesamiento puede ser prohibitivo.

Al igual que con las otras optimizaciones, debe considerar utilizar las opciones de menor calidad en lugares donde las reflexiones son menos importantes y guardar la opción No Time Slicing en los lugares donde se verá el detalle.

Características Avanzadas de las Sondas de Reflexión (Reflection Probes)
Cluster Rendering