
El Sol en Unreal Engine 4, como en todos los motores gráficos, puede llegar a consumir bastantes recursos si no aplicamos una buena configuración.
El Sol por lo general hace sombras dinámicas, es decir, las sombras se calculan cada tick (parte mínima de tiempo). Si ha de calcular la sombra dinámica de muchos objetos simultáneamente, debemos optimizarlo de alguna manera. De esta forma, aumentaremos el rendimiento, con su correspondiente aumento de fps.
Con este artículo espero transmitiros la capacidad de saber manejar los diferentes parámetros del Sol en Unreal Engine (Light Source), logrando un equilibrio en calidad-rendimiento. Si bien no usamos BP, he decidido añadirlo a “Programación por Blueprints“.
Como siempre, si no te apetece leer, existe un vídeo en YouTube donde se explica de una manera más visual.
Optimización | Sombras del Light Source con Unreal Engine 4
Añadiendo el Light Source
Como es lógico, si no lo tenéis ya, debemos añadir un Sol a la escena. Esto se hace en la pestaña ‘Modos’, y escribiendo «Light». Seleccionamos ‘Luz direccional’.
Opciones del Sol (Light Source)
Ahora seleccionamos el ‘Light Source’ desde la pestaña ‘World Outliner’, y nos centramos en la pestaña ‘Detalles’.
En ‘Detalles’ hacemos scroll hasta llegar al apartado ‘Cascaded Shadow Maps’. Esos son los parámetros que vamos a tratar en este artículo.
MovableLight de la distancia
Este parámetro sirve para definir a qué distancia se dibuja la sombra. Si definimos una distancia baja, la sombra va a aparecer demasiado cerca de la cámara y se va a notar. Sin embargo va a consumir pocos recursos.
Por el contrario, si definimos un valor alto, la sombra se va a dibujar a una distancia mayor y no vamos a darnos cuenta de cuando aparece o desaparece la sombra. Esto, lógicamente va a consumir más recursos.
Es por eso que con este parámetro debemos ir variando el valor hasta lograr uno que quede bien con nuestras necesidades, y a la vez no tenga un valor muy alto.
En el caso del nivel que se muestra en el vídeo, con un valor de 4000 es suficiente. Es un mapeado relativamente pequeño, y el personaje siempre va a pie. Desde su perspectiva el jugador no se da cuenta cuándo se dibuja y cuándo no las sombras.
Cascadas de sombras dinámicas
Las cascadas de sombras dinámicas es un factor muy importante a la hora de optimizar el Sol. Un valor nulo supone que no haya sombras. Por otro lado, un valor de 4, es la máxima calidad.
Con los números intermedios; 1, 2, y 3; podemos definir la «calidad» de esa sombra. Un número pequeño (1, 2) supone una calidad algo peor, pero mejor en cuanto a rendimiento.
Por el contrario, un número grande (3, 4) supone una excelente calidad, pero peor en cuanto a rendimiento.
Debo añadir que este parámetro actúa de «LOD» de las sombras. Las cascadas podríamos considerarlas diferentes «LODs». Un valor de 4 en la cercanía se vería muy definido, pero en la distancia cambiaría a 2, por ejemplo. Eso se configura con el siguiente parámetro.
Distribution Exponent
De este parámetro hablaré poco, porque va ligado al anterior. Simplemente es a qué distancia de la cámara cambian las cascadas. Un valor de 4 hace que las cascadas cambien más cerca de la cámara, mientras que un valor < 1 hace que cambien las cascadas a una distancia mayor.
Con el valor 4 se obtiene una mejora de rendimiento.
Con el valor 1,2; por ejemplo, el rendimiento empeora. Aunque las sombras se ven más definidas en la distancia.
En el caso del vídeo de YouTube, le doy un valor de 4 en el anterior parámetro, y 4 en este.
Transition Fraction
Por último tenemos este parámetro, que sirve para definir las transiciones entre una cascada y otra.
Un valor de 0 hace que no haya transiciones, es decir, que haya un cambio brusco entre una transición y otra.
Un valor cercano al 1 hace que las transiciones sean más fluidas. De esta forma no se nota tanto el cambio de una cascada a otra.
Lógicamente el valor 0 es el que menos recursos necesita.
Con esto terminamos la optimización del Sol. Si te ha quedado alguna duda, no dudes en pasarte por el vídeo de YouTube y comentármela.