Alle Projekte

01 / RENDERING SYSTEMS

Renderer

Ich habe einen plattformübergreifenden 2D-Vektorrenderer entworfen und implementiert.

AUFGABE
Architektur und Implementierung eines neuen Renderers
TECHNOLOGIEN
Rust · wgpu · WGSL · WASM

PROTOPIE / STUDIO XID

Cross-platform Rendering

Das Projekt führte das Rendering von ProtoPies plattformspezifischen DOM- und nativen Ansichten in einer gemeinsamen GPU-Engine zusammen. Ich habe die Architektur und die zentralen Rendering-Pfade eines 2D-Vektorrenderers mit Rust und wgpu entworfen und implementiert.

ENTSCHEIDUNG 01 / KONSISTENZ

Geometry Consistency

Wenn Strichbreite und -ausrichtung in jedem Verarbeitungsschritt separat interpretiert werden, können berechnete Grenzen vom sichtbaren Ergebnis abweichen. Ich habe eine gemeinsame Interpretation entworfen, die einmal berechnet und in mehreren Schritten verwendet wird.

STROKE INPUTShared planone interpretationBoundslayout extentsPaintappearanceGeometryshape datawidth · align · paint
Gemeinsame Strichinterpretation für Bounds, Paint und Geometry — Konzeptdiagramm.

Außerdem habe ich Änderungen, die einen Neuaufbau der Geometrie erfordern, von reinen Darstellungsänderungen wie Farbe getrennt. Das erhält die Konsistenz und vermeidet unnötige Arbeit.

ENTSCHEIDUNG 02 / RENDER GRAPH

Render Graph

Operationen wie Blur und Compositing verwenden Ergebnisse vorheriger Schritte. Ihre Ausführung muss daher die Abhängigkeiten zwischen Render-Pässen berücksichtigen. Der Render Graph bestimmt die Reihenfolge und verwaltet, wann temporäre Texturen für Zwischenergebnisse benötigt werden.

scenepass Apass Bpass Cpass DsubmitDEPENDENCIEStemporary texture lifetime
Schematische Darstellung von Pass-Abhängigkeiten und der Nutzungsdauer temporärer Texturen.

Die Ausführungsplanung und das Aufzeichnen der GPU-Befehle wurden getrennt. So ließen sich Graph-Aufbau und Backend-Implementierung unabhängig bearbeiten.

ENTSCHEIDUNG 03 / FEHLERBEHANDLUNG

Error Recovery

Wann ein erneuter Versuch sinnvoll ist

Vorübergehende Fehler werden in einem späteren Frame erneut versucht. Hat sich das Render-Ziel geändert, wird es zuerst neu konfiguriert.

Wenn die Eingabe geändert werden muss

Arbeit, die mit derselben Eingabe dauerhaft fehlschlägt, wird erst nach einer Eingabeänderung erneut ausgeführt.

NÄCHSTES PROJEKTInteractive 3D