2 Punkte von GN⁺ 2024-04-03 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2024-04-03
Hacker-News-Kommentare
  • Es ist besser, die PAL-Phase zu überspringen und direkt zu SetupRuntime zu 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. (IPal sollte ein Mitglied von IRuntime sein und ist bereit, im WebGPU-Kontext entfernt zu werden).

    • Empfehlung zur Nutzung von WebGPU: PAL-Phase auslassen, direkt mit SetupRuntime beginnen, Notwendigkeit der API-Vereinfachung, Integration von IPal in IRuntime und 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.

    • Potenzial für plattformübergreifende GUI-Entwicklung: Aufbau von FFI in verschiedenen Sprachen möglich, Vorteile von C/C++-Backend und WASM-Ziel.
  • 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.

    • Frage zu Text- und Font-Unterstützung: Unterstützung verschiedener Arten der Textdarstellung, Laden von OTF-/WOFF2-Dateien und Anzeige von Zeichenketten.
  • 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.

    • Interesse an Audio-Plugins und VSTs: Fragen zu Runtime, Event-Loop, FFI und Window-Management, Potenzial als Alternative zu JUCE.
  • 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.

    • Hervorhebung des Potenzials von WASM: Möglichkeiten von WASM 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.

    • Arbeit an Godot Engine und WASM: Probleme mit Shared Array Buffers in Safari, Zugang zu Werbenetzwerken, Single-Thread- vs.-regulärer-Build-Thema.
  • 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.

    • Portierung von Unreal Engine 5 auf WebGPU und WebAssembly: Multithread-Renderer, Asset-Streaming-System, kein vollständiger Download von Spiel/App nötig, Aufbau von Hosting-Plattform und Backend.
  • Der Vortrag bei wasm I/O war beeindruckend, und es freut mich zu sehen, dass diese Arbeit Aufmerksamkeit bekommt.

    • Positive Reaktion auf den Vortrag bei wasm I/O: Eindrucksvoller Vortrag und wachsende Aufmerksamkeit für die Arbeit.
  • 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.

    • WASM-Nutzung im Zusammenhang mit Flutter: Konzept eines plattformübergreifenden UI-Frameworks, Verbindung zu Flutter.
  • Für den CAD-Kernel wird manifold nachdrücklich empfohlen, das sich in Apps integrieren lässt.

    • Empfehlung für einen CAD-Kernel: Empfehlung von manifold zur Integration in Apps.