L'un des défis les plus importants dans l'optimisation du mode de sculpture de Blender a été d'améliorer la gestion des ressources du système. Auparavant, les blocages dans l'exécution de processus simultanés provoquaient une perte considérable de performances. Avec les nouvelles optimisations, ces problèmes ont été éliminés, offrant une expérience de sculpture beaucoup plus fluide et réactive.
L'impact de la concurrence sur la sculpture numérique
Les systèmes modernes disposent de processeurs multinoyaux capables d'exécuter plusieurs tâches en parallèle. Cependant, dans les versions antérieures de Blender, les processus d'évaluation des pinceaux n'étaient pas bien optimisés pour cette exécution simultanée, ce qui provoquait :
- Conflits entre threads de traitement qui réduisaient les performances.
- Bloqueos dans la gestion de la mémoire partagée.
- Temps d'attente plus long dans l'application des pinceaux.
« Un système efficace est celui qui distribue les tâches sans générer de conflits, en tirant le meilleur parti des ressources du matériel. »
Identification des goulots d'étranglement
Les analyses de performance ont révélé qu'une part allant jusqu'à 60 % du temps de calcul des pinceaux était dédiée à l'attente d'accès à la mémoire, au lieu de l'exécution des calculs nécessaires. Cela était dû à des blocages dans le système d'annulation (undo), ce qui ralentissait drastiquement la réponse du logiciel.
Améliorations dans la structure de données
Pour résoudre ce problème, le système de recherche linéaire dans la mémoire d'annulation a été remplacé par une structure de données basée sur des tableaux de hachage. Ce changement a permis :
- D'accéder à l'information de manière instantanée, sans parcourir de grands volumes de données.
- De réduire le temps d'attente des threads de traitement.
- D'améliorer significativement la vitesse de réponse des pinceaux.
Réduction des conflits en mémoire
Un autre problème détecté était lié à la mise à jour simultanée des compteurs de mémoire. Auparavant, chaque fois qu'un pinceau générait des données d'annulation, une mise à jour d'un compteur global était effectuée, ce qui provoquait des conflits entre threads. Désormais, la comptabilisation de la mémoire s'exécute une fois que tous les threads ont terminé leurs calculs, éliminant ces conflits et optimisant l'exécution.
Optimisation dans la gestion des variables partagées
Même la mise à jour d'une variable booléenne pouvait représenter un problème de concurrence. Il a été détecté que plusieurs threads tentaient de modifier simultanément une valeur booléenne pendant le calcul de la normale moyenne sous le curseur. La suppression de cette variable inutile a résulté en :
- Une amélioration de 200 % des performances dans l'évaluation des pinceaux.
- Réduction de la latence dans l'application des pinceaux.
- Plus grande stabilité dans l'exécution des tâches en parallèle.
Une sculpture plus fluide et sans interruptions
Grâce à ces optimisations, l'évaluation des pinceaux dans Blender est désormais plus rapide et efficace, permettant aux artistes de travailler sans interruptions. Ces améliorations n'optimisent pas seulement les performances actuelles, mais établissent également une base solide pour de futures outils avancés de sculpture.