Nouvelles du rendu Solari

Le rendu temps réel Solari a reçu une refonte complète : l’implémentation ReSTIR, qui était activée par défaut en 0.19, est désormais optionnelle et désactivée par défaut. Cette décision réduit la charge CPU de plusieurs dizaines de pourcents, au prix d’une légère perte de qualité d’ombres mobiles. Le moteur propose néanmoins un world cache retenu, similaire aux optimisations de rendu retenues des versions antérieures, ce qui compense largement la perte de ReSTIR dans la plupart des scènes. Les améliorations de l’algorithme ReSTIR ont rendu le rendu « presque non biaisé », éliminant le retard d’ombres sur les objets en mouvement et atténuant l’effet de scintillement des reflets sur les matériaux non métalliques. En outre, Solari supporte désormais les lumières d’atmosphère et les EnvironmentMapLight sur les caméras, tout en restant compatible avec DirectionalLight et les maillages émissifs. La version macOS fonctionne via Metal, bien que le débruiteur natif ne soit pas encore intégré ; le futur pourrait exploiter MetalFX Ray Reconstruction. Le module DLSS‑RR a été mis à jour vers la version 4.5, améliorant le débruitage dans Solari, mais requiert l’installation du SDK DLSS le plus récent.

Améliorations du système de scènes BSN

Le système de scènes BSN a vu son syntaxe simplifiée. Toutes les références de scène exigent désormais le préfixe @, ce qui rend le code plus lisible et permet de supprimer les wrappers template_value. Le changement de syntaxe a également introduit un Ready event observable : chaque entité de scène déclenche cet événement lorsque tous ses enfants sont entièrement instanciés, facilitant la synchronisation d’initialisation. Exemple de migration :

// Avant
bsn! {
    scene_variable scene_function() @ SceneComponent { scene_expression }
}
// Après
bsn! {
    @scene_variable @scene_function() @SceneComponent @{ scene_expression }
}

Ces ajustements réduisent la friction lors de la composition de scènes complexes et préparent le terrain pour de futures extensions du langage.

Évolution de l’UI et du shader

Le toolkit Bevy Feathers a ajouté plusieurs widgets : Color Input, Scrollable List View, Dropdown Selection, Lazy Menu et des Headless Tab Widgets. Le widget Number Input est désormais « scrubbable », permettant un glissement direct pour ajuster les valeurs numériques. Côté rendu, Bevy adopte le langage WESL, une extension standardisée de WGSL, remplaçant le dialecte propriétaire précédent. Cette adoption simplifie la portabilité des shaders et ouvre la voie à une collaboration avec l’équipe WESL pour les futures évolutions.

Optimisations diverses et compatibilité

Parmi les améliorations transversales, on compte : la prise en charge de custom shader materials pour les sprites, l’extension des matériaux 2D comme en 3D, et le nouveau pan‑orbit camera qui offre une navigation de type CAD. Le système de dépendances faibles a été enrichi par la fonction chain_weak, garantissant un ordre d’exécution plus prévisible. Le thème contextuel accepte désormais les unités CSS Val::Em et Val::Rem, et le moteur gère le per‑column change ticks pour optimiser les recalculs de mise en page. D’autres correctifs incluent la prise en charge d’une bordure elliptique, la randomisation des plannings, la capture plus rapide des panics, la désallocation massive (bulk despawning), une compression de textures améliorée, ainsi que des messages d’erreur enrichis et le support d’InlineBox et InlineImage dans le texte UI. Toutes ces évolutions renforcent la stabilité et la performance globale du moteur tout en élargissant son champ d’application.