1 Punkte von GN⁺ 2024-01-30 | 1 Kommentare | Auf WhatsApp teilen

Neuer Renderer für GTK

  • Für GTK wurden zwei neue Renderer für GL und Vulkan hinzugefügt.
  • Sie verwenden die bestehenden Namen „ngl“ und „vulkan“ weiter.
  • Da sie aus derselben Quelle erstellt werden, werden sie auch als „vereinheitlichter“ Renderer bezeichnet.

Eine gemeinsame Quelle

  • Beide Renderer werden aus derselben Quelle erstellt und sind nach einem Modell entworfen, das der Vulkan-API folgt.
  • Sie enthalten Abstraktionen, um die Unterschiede zwischen Vulkan und GL abzudecken.
  • Dadurch kann Infrastruktur wie das Traversieren des Scene Graph, das Beibehalten von Transformationen sowie Texture- und Glyph-Caching gemeinsam genutzt werden.
  • Eine Erweiterung auf einen Metal-basierten Renderer für macOS oder einen DirectX-basierten Renderer für Windows ist möglich.

Implementierungsdetails

  • Der bestehende GL-Renderer verwendet einfache Shader und verlässt sich bei komplexeren Inhalten auf Offscreen-Rendering.
  • Der vereinheitlichte Renderer hat Shader für jeden einzelnen Node und verwendet anstelle von Offscreen komplexe Shader, die Daten aus Puffern interpretieren.
  • Der vereinheitlichte Renderer ist weniger optimiert, legt aber den Schwerpunkt auf Korrektheit und Wartbarkeit und kann dadurch eine größere Vielfalt an Render-Node-Bäumen korrekt verarbeiten.

Neue Funktionen

  • Antialiasing: Der bisherige GL-Renderer hatte Probleme mit Detailverlust, der vereinheitlichte Renderer verbessert dies durch Antialiasing.
  • Fraktionale Skalierung: Der vereinheitlichte Renderer kann fraktionale Skalierung korrekt verarbeiten.
  • Beliebige Farbverläufe: Der vereinheitlichte Renderer kann Farbverläufe mit unbegrenzt vielen Farbstopps verarbeiten.
  • Dmabufs: Der Vulkan-Renderer kann beim Erzeugen von Texturen über die render_texture API dmabufs erzeugen.

Wichtige Hinweise

  • glshader-Nodes werden nicht mehr unterstützt.
  • Fraktionale Positionen: Der neue Renderer platziert Objekte an exakt korrekten Positionen.
  • Treiberprobleme: Der neue Renderer nutzt Grafiktreiber auf neue und andere Weise, daher können Probleme auftreten.

Ist er schneller?

  • Der neue Renderer ist derzeit noch nicht schneller.
  • Der bestehende GL-Renderer ist auf Geschwindigkeit optimiert, während der neue Renderer neue Funktionen und höhere Korrektheit bietet.
  • Der Vulkan-Renderer zeigt in inoffiziellen Benchmarks eine ähnliche Leistung wie der bestehende GL-Renderer.

Neue Standardeinstellung

  • Im kürzlich veröffentlichten Snapshot 4.13.6 wurde der ngl-Renderer als neue Standardeinstellung gesetzt.
  • Das ist eine experimentelle Maßnahme; bei Problemen kann wieder auf den bisherigen GL-Renderer zurückgewechselt werden.

Zukunftspläne und Möglichkeiten

  • Der neue Renderer bildet eine gute Grundlage für die Umsetzung von korrekter Farbverarbeitung einschließlich HDR, Path Rendering auf der GPU, Rendering außerhalb des Main Threads und Leistungsverbesserungen.

Zusammenfassung

  • Der neue Renderer bietet interessante Funktionen, und weitere sollen noch hinzukommen.
  • Es wird dazu aufgerufen, den neuen Renderer auszuprobieren und Feedback dazu zu geben, ob er funktioniert.

GN⁺-Meinung

  • Der neue Renderer ist ein wichtiger Fortschritt, der Entwicklern präzisere und vielfältigere Rendering-Optionen bietet.
  • Der integrierte Ansatz für Vulkan und GL hat das Potenzial, die Rendering-Kompatibilität auf verschiedenen Plattformen künftig zu verbessern.
  • Dieser technische Fortschritt dürfte die User Experience verbessern und zur höheren visuellen Qualität von Anwendungen beitragen.

1 Kommentare

 
GN⁺ 2024-01-30
Hacker-News-Kommentare
  • Um 2010 gab es einen experimentellen HTML-Renderer, mit dem sich die UI von GTK-Anwendungen im Browser ausschließlich mit HTML und CSS umsetzen ließ. Damals war das äußerst beeindruckend, weil Atom, VS Code, Electron und vermutlich auch NodeJS noch nicht erschienen waren. Ob dieser HTML-Renderer heute noch existiert, ist unklar.
  • Bedauern darüber, dass GTK dem Trend folgt, Widgets in der Titelleiste zuzulassen. Manche Bereiche lassen sich ziehen, andere nicht, und der für Anwendungs- und Dateinamen vorgesehene Platz wird kleiner. Das ist kein Problem, das nur GTK betrifft.
  • Mangelndes Verständnis dafür, wie Desktop-Umgebungen unter Linux funktionieren. Es wirkt so, als werde alles immer komplexer und um weitere Schichten ergänzt.
  • Begeisterung für präzises fraktionales Skalieren auf Pixelebene.
  • Hinweis, dass man mit wgpu.rs DirectX und Metal kostenlos dazubekommt.
  • Interesse an einem ANSI-Text-Renderer, mit dem sich GTK-Programme innerhalb von xterm ausführen ließen. Optional könnte auch sixel-Unterstützung ergänzt werden.
  • Frage, warum Leistungseinbußen akzeptiert werden. Die meiste Arbeit wird auf älterer Hardware erledigt, und solche Funktionen lassen sich möglicherweise deaktivieren oder werden von der GPU nicht unterstützt.
  • Die Arbeit an GTK wirkt unterhaltsam und cool. Es gibt einen Verweis auf Antialiasing sowie die Erwartung, dass sich die in Game-Engines für das Font-Rendering verwendete Signed-Distance-Field-Technik einsetzen ließe. Verschiedene Verfahren aus Game-Renderern könnten auch für GUI-Code nützlich sein.
  • Es gibt viele Entwickler von Grafik-Engines, die Renderer entwickelt haben, die den Renderern von Open-Source-GUI-Toolkits um mehrere Generationen voraus sind. Die meisten arbeiten jedoch bei Spielefirmen und haben keine Zeit, zum Open-Source-Stack beizutragen. Wenn die Community ein regelmäßiges Budget organisieren könnte, um diese Entwickler zu bezahlen, könnte der Open-Source-Desktop erhebliche Updates bei Rendering und Toolkits erleben.
  • Ein bestimmter Kommentar wurde gemeldet und sein Inhalt ausgeblendet.