Bevy 0.20 marca la última versión del motor de juegos de código abierto escrito en Rust, que trae un conjunto de características destinadas a mejorar la fidelidad del renderizado, la experiencia del desarrollador y las herramientas. La actualización aborda el renderizador de trazado de rutas en tiempo real Solari del motor, su sistema de escenas BSN, el kit de herramientas UI Feathers, el soporte del lenguaje de shaders y diversos otros componentes, reflejando el trabajo continuo de los colaboradores del motor.
El renderizador Solari muestra avances notables tanto en calidad de imagen como en rendimiento. Gracias a las mejoras en la implementación de ReSTIR, el renderizado ahora es en su mayoría imparcial, lo que resulta en una iluminación más precisa, la eliminación de sombras con desfase en objetos en movimiento y reflejos menos Brillantes en materiales no metálicos. Las ganancias de rendimiento provienen de hacer que ReSTIR sea opcional (deshabilitado por defecto) y de optimizar el código de administración de escenas de Solari, que mantiene similitudes con las optimizaciones de mundo de renderizado retenido de versiones anteriores, lo que lleva a una reducción significativa de los costos de CPU. Los usuarios pueden ajustar el comportamiento mediante nuevos campos en SolariLighting, como el tamaño de caché del mundo, la cantidad de muestras de luz por píxel, la acumulación temporal y el recuento de rebotes del trazado de rutas. La compatibilidad se amplía para incluir iluminación proveniente de fuentes Atmosphere y EnvironmentMapLight en cámaras, junto con el existente soporte de DirectionalLight y malla emisiva, con planes para agregar PointLight, SpotLight y RectLight en el futuro. Además, el crate dlss_wgpu se ha actualizado para soportar la última versión DLSS-RR 4.5, mejorando la calidad de eliminación de ruido, aunque los usuarios de macOS actualmente carecen de un eliminador de ruido incorporado para Solari, con la reconstrucción de rayos MetalFX sugerida como una posible solución futura.

Esta imagen ilustra los avances en el renderizador Solari de Bevy 0.20, específicamente las mejoras en la calidad de imagen y el rendimiento mediante la optimización de ReSTIR discutida en el segundo párrafo.
En el ámbito de la composición de escenas, la sintaxis de BSN se ha refinado para mejorar la ergonomía y la claridad. Las referencias de escena ahora requieren un prefijo @, eliminando la necesidad de envoltorios template_value alrededor de valores de componentes, funciones y expresiones. Los enums que implementan Default y Clone pueden usarse directamente sin VariantDefaults o FromTemplate, aunque este cambio significa que cada campo de enum debe especificarse explícitamente cuando se usa en BSN. El patrón de constructor y los métodos encadenados ya no requieren envoltorios template_value, y las entidades de lista se separan usando -- en lugar de comas o paréntesis, reduciendo el ruido sintáctico y mejorando la distinción visual. El nuevo evento Ready se dispara después de que una entidad y todos sus hijos han sido generados, permitiendo lógica que depende de una jerarquía de escena completamente cargada.
Más allá de la sintaxis de escenas, Bevy 0.20 amplía el kit de herramientas UI Feathers con un selector de entrada de color que incluye una rueda de color emergente y deslizadores, una vista de lista seleccionable desplazable, un campo de selección desplegable, un menú perezoso que se genera y elimina con la interacción, y un widget de entrada de número que admite tanto entrada de texto como arrastre/de desplazamiento con límites duros y suaves configurables. Los widgets de pestañas sin cabeza proporcionan los componentes TabList y Tab para selecciones gestionadas externamente, integrándose con los sistemas de foco, interacción y accesibilidad de Bevy.

Esta imagen representa el widget de entrada de color añadido al kit de herramientas UI Feathers en Bevy 0.20, que incluye una rueda de color emergente y deslizadores como se describe en el cuarto párrafo.

Esta imagen ilustra el widget de menú perezoso introducido en el kit de herramientas UI Feathers de Bevy 0.20, que se genera y elimina con la interacción del usuario, como se menciona en el cuarto párrafo.
El motor también adopta WESL, una extensión estandarizada de WGSL, para el desarrollo de shaders, aportando módulos, importaciones y compilación condicional, y habilitando herramientas de IDE a través de wgsl-analyzer, mientras requiere la traducción de shaders personalizados heredados de Bevy en WGSL al formato WESL.

Esta imagen muestra la extensión WESL de WGSL utilizada para un shader de niebla, resaltando las nuevas características de módulos, importaciones y compilación condicional que Bevy 0.20 adopta para el desarrollo de shaders, como se describe en el quinto párrafo.