- Ausgangspunkt für die Entwicklung von Renderlet waren Probleme beim plattformübergreifenden Portieren, auf die Adobe beim Übertragen großer Apps wie Photoshop und Acrobat in verschiedene Umgebungen gestoßen ist
- Renderlet zielt auf ein WASM-Grafik-Framework, das überall ausführbar und einbettbar ist, und möchte dabei Entwicklerfreundlichkeit für App-Entwicklung mit hardwarenaher GPU-Nutzung verbinden
- Die offene Runtime Wander stellt eine Low-Level-3D-API auf der GPU bereit; darauf aufbauend wurde ein Experiment umgesetzt, das den Open-Source-2D-Vektor-Renderer von Rive anbinden
- Derzeit steht das Projekt kurz vor der Open Alpha; sobald Compiler und Plattform-Integration bereit sind, ist ein Show HN oder Launch HN geplant
- So wie Unity die plattformübergreifende Spieleentwicklung vereinfacht hat, konzentriert sich Renderlet darauf, die Ausführung verschiedenster visueller Anwendungen in vielen Umgebungen zu erleichtern
Das Portabilitätsproblem, das Renderlet lösen will
- Für Adobe war es eine große Herausforderung, große Anwendungen wie Photoshop und Acrobat auf Desktop, Web, Mobile und in der Cloud lauffähig zu machen
- Die Web-Versionen von Lightroom und Photoshop haben einen langen Weg über JavaScript, Google PNaCl, asm.js und WebAssembly genommen
- Für die Zielgeräte musste die GPU-Architektur jeweils neu gedacht werden, außerdem waren Single-Thread-Builds und eine Neugestaltung der UI auf Basis von Web Components nötig
- Die Web-Builds funktionieren heute gut, aber der Weg dorthin hat 10 Jahre Arbeit gekostet
- Der Grafik-Stack bleibt weiterhin ein Engpass für Portabilität; WebAssembly wurde als Grundlage gewählt, weil es überall ausführbar und einbettbar ist und die für Echtzeitgrafik nötige Performance liefern kann
- Renderlet betont eine Architektur aus in sich geschlossenen Grafikmodulen, die sich miteinander verbinden lassen, sodass sie auf jeder Umgebung und innerhalb beliebiger Apps ausgeführt werden können
- Der Entwickler ist als Solo-Gründer zu YC gestoßen und entwickelt Renderlet seit den letzten sechs Monaten
Experiment zur Integration des Rive Renderers
- Nachdem Rive seine 2D-Vektor-Engine als Open Source veröffentlicht hatte, wurde getestet, ob sich der Rive Renderer auf dem GPU-Backend von Renderlet ausführen lässt
- Der Rive Renderer besteht aus einer hochstufigen 2D-API, ähnlich wie SVG
- Wander ist der Open-Source-Runtime-Teil von Renderlet und bietet eine Low-Level-3D-API auf der GPU
- Im Ergebnis ließ sich die Bibliothek des Rive Renderers auf dem GPU-Backend von Renderlet ausführen, wodurch auch in 3D-Apps ein 2D-Vektor-Backend genutzt werden kann
- Ein Funktionsbeispiel ist im Vimeo-Video zu sehen
- Technische Details sind unter Using renderlet with rive-renderer zusammengefasst
- Der Code der Runtime Wasm Renderer Wander ist unter renderlet/wander öffentlich verfügbar
1 Kommentare
Hacker-News-Kommentare
Es ist besser, die PAL-Phase zu überspringen und direkt zu
SetupRuntimezu gehen. Nicht-Grafikentwickler kennen solche Details oft nicht, und es ist nicht wünschenswert, der API unnötige zusätzliche Schritte hinzuzufügen. Da PAL anderswo nicht verwendet wird, wäre es besser, WebGPU zu nutzen. (IPalsollte ein Mitglied vonIRuntimesein und ist bereit, im WebGPU-Kontext entfernt zu werden).SetupRuntimebeginnen, Notwendigkeit der API-Vereinfachung, Integration vonIPalinIRuntimeund geplante Entfernung.Dieses Projekt könnte eine großartige Widget-Toolkit- und erstaunliche Canvas-Basis für die Entwicklung plattformübergreifender GUIs werden. Mit dem C/C++-Backend und dem WASM-Ziel ließe sich in nahezu jeder Sprache ein FFI aufbauen.
Ich frage mich, was für Text- und Font-Unterstützung geplant ist. Manche Grafik-Engines unterstützen Text nicht in allen gewünschten Formen. Die Frage ist, ob OTF- oder WOFF2-Dateien geladen und beliebige Zeichenketten angezeigt werden können.
Großes Interesse an dem Projekt. Es gibt einige Fragen zu Runtime, Event-Loop, FFI und Besitzverhältnissen von Window-Pointern. Außerdem besteht Interesse an Audio-Plugins und VSTs, wobei es Einschränkungen beim Event-Loop und Window-Management gibt. JUCE ist de facto die Lösung, aber veraltet und umständlich.
Dieses Projekt ist wirklich großartig und genau das, wovon ich in den letzten Jahren geträumt habe. WASM hat großes Potenzial als portable Einheit für Grafik-, Audio- und Multimedia-Berechnungen.
Ich arbeite daran, WASM in der Godot Engine zum Laufen zu bringen. Mich würde interessieren, wie die Probleme mit der Zugänglichkeit von Shared Array Buffers in Safari und dem für Online-Spiele wichtigen Zugang zu Werbenetzwerken überwunden wurden. Außerdem wird das Problem Single-Thread vs. regulärer Build angesprochen.
Ich freue mich, mehr Projekte im Bereich 3D-Grafik/WASM zu sehen. Es wird nach Tipps gefragt, um in YC aufgenommen zu werden. Seit Jahren wird an einem Port von Unreal Engine 5 auf WebGPU und WebAssembly gearbeitet. Es gibt einen Multithread-Renderer und ein Asset-Streaming-System, sodass Nutzer nicht das gesamte Spiel bzw. die gesamte App im Voraus herunterladen müssen. Außerdem muss nicht die komplette Anwendung auf einmal in den Speicher geladen werden. Es wurde auch eine vollständige Hosting-Plattform samt Backend aufgebaut, über die Entwickler ihre Projekte online bereitstellen können.
Der Vortrag bei wasm I/O war beeindruckend, und es freut mich zu sehen, dass diese Arbeit Aufmerksamkeit bekommt.
Es wird gefragt, ob der Artikel von Ian Hickson, einem der Hauptentwickler von Flutter, gelesen wurde. Darin wird das Konzept erläutert, mit WASM ein vollständig plattformübergreifendes UI-Framework zu haben, und genau dieses Konzept nutzt Flutter.
Für den CAD-Kernel wird
manifoldnachdrücklich empfohlen, das sich in Apps integrieren lässt.manifoldzur Integration in Apps.