En el blog de esta semana queremos hablar sobre la nueva versión del motor gráfico, la 1.4, que incluye varias mejoras gráficas y diversas mejoras de rendimiento.
Las diferentes características del motor las desarrollamos en ramas diferentes, cada una etiquetada como una versión. Esto nos permite poner a prueba nuevas características, de manera eficiente y sin reducir la estabilidad que se encontrarán los programadores del sistema de juego.
Iluminación general
Hemos introducido un nuevo sistema de iluminación al motor, el cual puede iluminar adecuadamente tanto objetos estáticos como dinámicos. Se basa en un sistema prefabricado llamado «transferencia radiante preprogramada» (PRT). Es independiente de la atmósfera, algo fundamental para un juego como Bannerlord, en el que accedes a la escena en diferentes momentos del día. El sistema guarda los datos de iluminación en sensores dentro de una malla normal. Desarrollamos numerosas herramientas de colocación automática, para que los artistas tengan que hacer el mínimo trabajo a la hora de dar forma a las escenas. Los modders podrán hacer uso de estas herramientas para modificar la iluminación general de sus propias escenas.
Representación con sombreado computacional
Al usar perfiladores, hemos aprendido que en combates a gran escala la GPU se pasa casi todo el tiempo generando las redes de los agentes. Generalmente, el proceso de representación de esqueletos se repite cada vez que es preciso renderizar una red (sombras, gBuffer, pasadas especiales para las sombras del pelo, etcétera). Para evitarlo, los cálculos de representación de las redes de esqueletos se han pasado de la fase de sombreado de vértices a una fase independiente de sombreado computacional. Pese a que ambas fases hacen uso de la GPU, tener una fase separada para la representación de las figuras y almacenar los resultados en una memoria temporal nos permite hacer los cálculos de representación solo una vez por frame, así como emplear mecanismos de optimización especiales que son exclusivos del sombreado computacional. El resultado es que el tiempo de renderizado se ve reducido en un 60 %, lo cual nos permite que un mayor abanico de GPU sea capaz de alcanzar 60 fps en grandes escenas de combate.
Sombreado de partículas
Ahora, las partículas reciben su sombreado en una fase diferente. A cada partícula visible le asignamos una región rectangular (2x2, 4x4, 8x8, 16x16 o 32x32) dentro de un gran atlas de texturas, según su tamaño en pantalla. El sombreado se hace con una fase de sombreado computacional. Durante el renderizado propiamente dicho, generamos una muestra del resultado de la iluminación de la textura de dicho atlas y omitimos cualquier generación de iluminaciones complejas. Separar las fases de sombreado y de dibujo nos permite reducir los costes de rellenar partículas, ya que la cantidad de píxeles sombreados se reduce al extremo. Esto provoca que reduzcamos el elevado coste de la GPU de escenas ambientadas en el desierto. Esta técnica también elimina las sombras afiladas de las cuadrículas de las partículas, ¡aumentando cada vez más la calidad visual de las ya de por sí hermosas partículas de Bannerlord!
Llegados a este punto, consideramos importante destacar el hecho que sí, aún estamos desarrollando el motor y realizándole añadidos, pero todo este trabajo se está llevando a cabo en paralelo al desarrollo de Bannerlord. Nuestro equipo de motores dedicado se esfuerza constantemente por ofrecernos un motor más optimizado, que nos permita tener partículas más grandes, una tasa de frames más elevada, una mayor fidelidad visual y tiempos de carga más rápidos. Este trabajo no lastrará el desarrollo de ninguna manera, sino que tan solo mejorará la calidad del producto final.
En el blog de la próxima semana hablaremos con Korneel Guns, programador del sistema de juego. Korneel trabaja sobre todo en el aspecto multijugador de Mount & Blade II: Bannerlord. Si tenéis alguna pregunta que queráis hacerle, dejadla en los comentarios. ¡Seleccionaremos una para que la conteste!