In GTK wurden neue Render-Engines für OpenGL und Vulkan hinzugefügt.

Die Entwickler der GTK-Bibliothek haben die Verfügbarkeit von zwei neuen Render-Engines – "ngl" und "vulkan" – bekannt gegeben, die die Grafik-APIs OpenGL (GL 3.3+ und GLES 3.0+) sowie Vulkan nutzen. Die neuen Engines sind Teil der experimentellen Veröffentlichung von GTK 4.13.6. In der experimentellen Version von GTK wird die Engine ngl nun standardmäßig verwendet; sollte jedoch in der nächsten stabilen Version 4.14 erhebliche Probleme auftreten, wird die alte Render-Engine "gl" wiederhergestellt.

Die neuen Engines sind als einheitlich positioniert und werden aus einer gemeinsamen Codebasis erstellt. Die Grundidee der Vereinheitlichung besteht darin, dass die API Vulkan als Grundlage dient, auf der eine separate Abstraktionsebene für OpenGL geschaffen wurde, die die Unterschiede zwischen OpenGL und Vulkan berücksichtigt. Dieser Ansatz hat es ermöglicht, in beiden Engines eine gemeinsame Infrastruktur für die Verarbeitung des Szenengraphen, Transformationen, das Caching von Texturen und Glyphen zu nutzen. Die Vereinheitlichung hat zudem die Wartung der Codebasis beider Engines erheblich vereinfacht und sorgt dafür, dass sie aktuell und synchronisiert bleibt.

Im Gegensatz zur alten Engine „gl“, bei der für jeden Rendering-Knotentyp (rendernode) ein einfacher Shader verwendet wurde und während des Offscreen-Renderings eine periodische Datenneuordnung stattfand, wird in den neuen Engines anstelle des Offscreen-Renderings ein komplexer Shader (ubershader) verwendet, der die Daten aus dem Puffer interpretiert. In ihrem aktuellen Zustand hinkt die neue Implementierung der alten hinsichtlich der Optimierungsstufen noch hinterher, da derzeit der Fokus auf der Korrektheit der Funktionalität und der Einfachheit der Wartung liegt.

Neue Funktionen, die in der alten Engine „gl“ fehlen:

  • Kantenglättung – ermöglicht es, feine Details zu erhalten und gleichmäßigere Konturen zu zeichnen.
    In GTK wurden neue Render-Engines für OpenGL und Vulkan hinzugefügt.
  • Bildung beliebiger Gradienten, bei denen beliebig viele Farben und Glättung verwendet werden können (in der Engine „gl“ wurden nur lineare, radiale und konische Gradienten mit 6 Farbstopps unterstützt).
    In GTK wurden neue Render-Engines für OpenGL und Vulkan hinzugefügt.
  • Bruchteilsmäßige Skalierung (fractional scale), die es ermöglicht, nicht-ganzzahlige Skalierungswerte zu verwenden. Zum Beispiel wird bei einer Skalierung von 125 % für ein Fenster von 1200×800 ein Puffer von 1500×1000 zugewiesen, anstatt 2400×1600 wie in der alten Engine.
  • Unterstützung der DMA-BUF-Technologie zur Nutzung mehrerer GPUs und zur Auslagerung einzelner Operationen auf eine andere GPU.
  • Viele Rendering-Knoten, die in der alten Implementierung problematisch waren, werden jetzt korrekt verarbeitet.

Zu den Einschränkungen der neuen Engines gehört das Fehlen der Unterstützung für die Positionierung mit nicht ganzzahligen Werten (fractional position) und Knoten glshader, die stark auf die Merkmale der alten Engine angewiesen waren und nach der Einführung der Unterstützung für Knoten mit Masken (mask) und Texturen mit Transparenz überflüssig wurden. Zudem wird auf die Möglichkeit hingewiesen, dass es möglicherweise Probleme mit den Grafikk Treibern geben kann, die durch die Änderung der Arbeitsweise mit den Treibern bedingt sind.

In Zukunft wird nicht ausgeschlossen, dass auf der Grundlage des neuen einheitlichen Modells Rendering-Engines entwickelt werden, die Metal unter macOS und DirectX unter Windows verwenden. Die Erstellung solcher Engines wird jedoch durch die Verwendung anderer Sprachen für Shader erschwert (in den Engines 'ngl' und 'vulkan' kommt die Sprache GLSL zum Einsatz, sodass für Metal und Direct entweder die Shader dupliziert oder eine Schicht basierend auf dem SPIRV-Cross-Toolset verwendet werden muss).

Zu den zukünftigen Plänen gehört die Unterstützung von HDR und Werkzeugen zur korrekten Farbverwaltung, die Unterstützung des Path Renderings auf der GPU-Seite, die Möglichkeit zur Glyphen-Renderung, das Rendering außerhalb des Hauptthreads sowie die Leistungoptimierung für ältere und leistungsschwache Geräte. Derzeit ist die Leistung der Vulkan-Engine mit der des alten GL-Engines vergleichbar. Die ngl-Engine bleibt hinter der der alten GL-Engine zurück, liefert jedoch ausreichende Leistungswerte für eine Darstellung mit 60 oder 144 FPS. Es wird erwartet, dass sich die Situation nach der Durchführung von Optimierungen ändert.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster