Eine der wichtigsten Herausforderungen bei der Optimierung des Skulpturmodus von Blender war die Verbesserung der Systemressourcenverwaltung. Früher verursachten Sperren bei der Ausführung von gleichzeitigen Prozessen einen erheblichen Leistungsverlust. Mit den neuen Optimierungen wurden diese Probleme beseitigt und bieten eine viel flüssigere und reaktionsschnellere Skulpturerfahrung.
Der Einfluss der Parallelität auf die digitale Skulptur
Moderne Systeme verfügen über mehrkernige Prozessoren, die mehrere Aufgaben parallel ausführen können. In früheren Versionen von Blender waren die Pinselbewertungsprozesse jedoch nicht optimal für diese gleichzeitige Ausführung optimiert, was zu Folgendem führte:
- Konflikte zwischen Verarbeitungs-Threads, die die Leistung reduzierten.
- Sperren in der Verwaltung des gemeinsamen Speichers.
- Längere Wartezeiten bei der Anwendung von Pinseln.
„Ein effizientes System ist eines, das Aufgaben verteilt, ohne Konflikte zu erzeugen, und die Hardware-Ressourcen optimal nutzt.“
Identifizierung der Engpässe
Leistungsanalysen zeigten, dass bis zu 60 % der Berechnungszeit der Pinsel für den Zugriff auf den Speicher verwendet wurde, anstatt für die notwendigen Berechnungen. Dies lag an Sperren im Undo-System, was die Software-Reaktionsfähigkeit erheblich verlangsamte.
Verbesserungen in der Datenstruktur
Um dieses Problem zu lösen, wurde das System der linearen Suche im Undo-Speicher durch eine auf Hash-Tabellen basierende Datenstruktur ersetzt. Dieser Wechsel ermöglichte:
- Sofortigen Zugriff auf Informationen, ohne große Datenmengen durchlaufen zu müssen.
- Reduzierung der Wartezeiten der Verarbeitungs-Threads.
- Bedeutende Verbesserung der Reaktionsgeschwindigkeit der Pinsel.
Reduzierung von Konflikten im Speicher
Ein weiteres festgestelltes Problem betraf die gleichzeitige Aktualisierung von Speicherzählern. Früher wurde bei jeder Generierung von Undo-Daten durch einen Pinsel ein globaler Zähler aktualisiert, was Konflikte zwischen Threads verursachte. Nun wird die Speicherbuchhaltung erst ausgeführt, nachdem alle Threads ihre Berechnungen abgeschlossen haben, wodurch diese Konflikte eliminiert und die Ausführung optimiert werden.
Optimierung der Verwaltung gemeinsamer Variablen
Sogar die Aktualisierung einer booleschen Variable konnte ein Parallelitätsproblem darstellen. Es wurde festgestellt, dass mehrere Threads gleichzeitig einen booleschen Wert während der Berechnung der durchschnittlichen Normalen unter dem Cursor modifizieren versuchten. Die Entfernung dieser unnötigen Variable führte zu:
- Einer Verbesserung der Leistung um 200 % bei der Pinselbewertung.
- Reduzierung der Latenz bei der Anwendung von Pinseln.
- Größere Stabilität bei der parallelen Ausführung von Aufgaben.
Ein flüssigeres und unterbrechungsfreies Skulpturieren
Dank dieser Optimierungen ist die Pinselbewertung in Blender nun schneller und effizienter, sodass Künstler ohne Unterbrechungen arbeiten können. Diese Verbesserungen optimieren nicht nur die aktuelle Leistung, sondern legen auch eine solide Grundlage für zukünftige fortschrittliche Skulpturwerkzeuge.