Mejoramos la tecnología de las sombras en Guild Wars 2: Visions of Eternity

por El equipo de Guild Wars 2 el 24 de October de 2025

Con el lanzamiento la próxima semana de Guild Wars 2®: Visions of Eternity™ (el 28 de octubre), incluimos una nueva tecnología de sombras que nos permitirá realizar mejoras gráficas en el juego.

Las sombras son fundamentales para dar credibilidad a un juego, más allá de oscurecer la luz. Nuestra mente usa las sombras para percibir la profundidad, las formas, las distancias y el movimiento. Sin ellas, un mundo en 3D podría parecer plano o desconectado.

Nota: en esta publicación explicamos los detalles técnicos, que son los mejores. Si solo queréis ver la diferencia entre el antes y el después, pasad al final; pero si os interesa el funcionamiento de los sistemas de iluminación y sombras, ¡seguid leyendo!

Objetivos a la sombra

Desde el lanzamiento de Guild Wars 2 se han producido avances en el hardware para gráficos, lo que nos ha permitido mejorar la renderización del juego. Uno de los campos que teníamos en mente era el sistema de sombras. Todo lo que queríamos perfeccionar respondía a dos objetivos principales:

  • Cubrir más espacio de pantalla. Queríamos que las zonas más distantes del mundo apareciesen con sombras dinámicas de alta calidad.
  • Aumentar el detalle. Buscábamos sombras con bordes más nítidos y un mayor nivel de detalle, sobre todo en los elementos pequeños.

Al mismo tiempo, queríamos que los que tenéis equipos menos potentes siguierais teniendo una experiencia fluida, así que solo vamos a modificar las configuraciones media, alta y ultra. Las demás no las tocamos.

Contexto de las sombras

Generamos nuestras sombras dinámicas mediante una técnica llamada mapas de sombras en cascada. Esto significa que renderizamos una vista desde la luz principal varias veces y almacenamos la distancia desde la luz hasta cada píxel en una imagen llamada mapa de sombras.

Durante el renderizado de la vista principal, comparamos la distancia de cada píxel respecto a la fuente de luz con la distancia almacenada en el mapa de sombras. Si el píxel está más lejos, está en sombra; de lo contrario, lo ilumina una luz. La vista desde la luz se deforma al proyectarse sobre la vista principal, por lo que nuestra capacidad para comparar las distancias de los píxeles no es perfecta. El término “en cascada” de los mapas de sombras en cascada significa que generamos varios mapas de sombras que cubren distintos espacios de la pantalla, lo que permite reducir la deformación en cada mapa individual.

Aumento de la resolución

La forma más obvia de aumentar el detalle es simplemente incrementar el número de píxeles en los mapas de sombras. Hacer eso exigía una reestructuración meticulosa, ya que otras partes del motor calculaban la resolución que debían tener los mapas de sombras.

Aumentamos la resolución de los mapas de sombras de 512×512 a 1024×1024 en la configuración media, y de 1024×1024 a 2048×2048 en las configuraciones alta y ultra. Al ver lo mucho que mejoraba, nos dimos cuenta de que podíamos mejorarlo aún más.

Mejora en los cálculos de las cascadas

La colocación y el tamaño de las cascadas son muy importantes para conseguir sombras de calidad, y ese es uno de los mayores cambios que hemos realizado. En nuestra versión original se colocaban uno o dos círculos de tamaño fijo en el mundo, dependiendo de vuestra configuración gráfica. Esto ofrece propiedades interesantes, como parámetros intuitivos y fáciles de ajustar para controlar la cobertura de sombras dinámicas en el mundo. Y además cubre muy bien el centro de la pantalla, que es la zona a la que el jugador mira la mayor parte del tiempo.

Con la incorporación de monturas voladoras y terrenos más extremos (y fantásticos), el algoritmo empezaba a mostrar algunas fisuras. Ahora, el nuevo algoritmo cubre más espacio de pantalla al ajustar dinámicamente la porción de mundo que está cubierta por el mapa de sombras. Pasar de un tamaño fijo en el espacio del mundo a uno variable requirió ajustar cuidadosamente la colocación y el tamaño para que las sombras se mantuvieran estables al mover la cámara. Pero una vez resueltos esos detalles, las sombras dinámicas aparecen en una porción bastante más grande de la pantalla.

En las imágenes de abajo se compara, desde la perspectiva de los desarrolladores, la parte de pantalla que cubren con sombras dinámicas el algoritmo antiguo y el nuevo. El rojo es el mapa de sombras más detallado. Cubre menos porción del mundo y está más cerca de la cámara. El amarillo es menos detallado, cubre más porción del mundo, y está más alejado de la cámara. El cian es el menos detallado, cubre una porción aún mayor del mundo, pero es el más alejado de la cámara. Las zonas oscuras sin superposición de colores no están cubiertas por un mapa de sombras, y por tanto no tienen sombras dinámicas.

Fijaos cómo el nuevo algoritmo cubre más con sombras dinámicas, abarca el área del lado derecho que el algoritmo antiguo no cubría y cubre más espacio con el mapa de sombras más detallado. Gracias a todas estas mejoras, obtenemos sombras más detalladas y que se alargan más desde el personaje en el mundo.

Imagen desde arriba de un personaje en una montura de escamaceleste. El terreno muestra un degradado de colores, rojo cerca del personaje y amarillo a lo lejos. Más allá del amarillo, todo está oscuro.

Arriba: Cobertura del mapa de sombras antiguo
Abajo: Cobertura del mapa de sombras nuevo

Imagen desde arriba de un personaje en una montura de escamaceleste. El terreno muestra un degradado de colores. El rojo cubre una zona amplia en torno al personaje. Luego hay amarillo en la zona media, y una sección grande azul a lo lejos.

Pronto habrá dos mapas de sombras en las configuraciones media y alta, y tres en la configuración ultra. En cambio, con el algoritmo antiguo, había uno y dos respectivamente.

Muestreo más sofisticado

Los mapas de sombras no están correlacionados de manera uniforme con cada píxel de la pantalla. Esto significa que se produce un solapamiento en las muestras y, sin un procesamiento adicional, los bordes de los mapas de sombras se verían dentados y poco estéticos. Para mitigar esto, muestreamos los píxeles del mapa de sombras en las áreas circundantes y los interpolamos. Así se suavizan los bordes dentados y conseguimos que los contornos de los detalles más pequeños, como las líneas finas, tengan un aspecto mucho mejor.

Hemos mejorado la técnica de muestreo utilizando un método conocido como muestreo de disco de Poisson, que permite aprovechar mejor cada muestra en comparación con el sistema anterior basado en una cuadrícula. Además, ahora las muestras se ponderan mediante una distribución gaussiana, dando más importancia a los puntos cercanos al punto del mapa de sombras que se está suavizando. El resultado es una apariencia más natural que si todas las muestras tuvieran la misma ponderación.

Sombras de espacio en pantalla

Hay detalles que son demasiado pequeños para ser visibles en un mapa de sombras, por lo que no proyectan sombra ni siquiera al aumentar la resolución del mapa de sombras. Ahora utilizamos una técnica llamada sombras de espacio en pantalla para generar sombras en esos detalles. El búfer de profundidad del fotograma actual se utiliza para ejecutar una forma de trazado de rayos en marcha en el espacio de pantalla, que es parecido al trazado de rayos normal, pero más limitado. Esto nos permite capturar detalles finos en elementos como la hierba, los pequeños detalles arquitectónicos y el equipo de los personajes, haciendo que se vean menos planos.

Como solo disponemos del búfer de profundidad, esta técnica tiene ciertas limitaciones y, por tanto, pueden aparecer inconsistencias de cuando en cuando. Hemos colaborado estrechamente con el equipo de arte para ajustar los parámetros y equilibrar calidad y artefactos visuales. También hemos incluido una opción en la configuración gráfica que permite activar o desactivar esta función. Hay configuraciones alta y ultra para las sombras de espacio en pantalla.

Podéis ver más ejemplos de esta técnica en acción y compararla con las capturas de pantalla de abajo. ¡Esperamos que con estos retoques mejore vuestra experiencia mientras exploráis el mundo de Tyria!