Von einer .xmp-Datei zum Bild, das du behältst.

Ein Preset wird einmal in einen Satz Parameter eingelesen, für den Sucher in eine 3D-Lookup-Tabelle gebacken und beim Auslösen mit voller Gleitkomma-Genauigkeit über das unkomprimierte Sensorbild neu gerechnet. Eine einzige Implementierung in Rust treibt beide Wege — deshalb stimmen Vorschau und Foto überein.

Zuletzt aktualisiert:

Der Weg einer Aufnahme

  1. Die Datei wird eingelesen

    Ein .xmp-Preset ist XML. Jedes Camera-Raw-Attribut wird daraus in einen gemeinsamen Parametersatz gelesen: Weißabgleich und Belichtung, Tonwerte und Kurven, HSL, Farbgradierung, Details, Effekte und etwaige Masken. Attribute, die die Engine nicht kennt, werden ignoriert statt als Fehler behandelt — ein Preset aus einem neueren Lightroom lädt also mit allem, was es versteht.

  2. Aus dem Preset wird eine Pipeline

    Aus diesen Parametern wird eine feste Abfolge von Operationen — Weißabgleich und Belichtung, dann Tonwerte und Kurven, dann Farbe, dann die räumliche Arbeit: Klarheit, Dunst entfernen, Schärfen, Masken, Vignette und Korn. Die Reihenfolge liegt fest, denn dieselben Korrekturen in anderer Folge ergeben nicht dasselbe Foto.

  3. Der Sucher bekommt eine Lookup-Tabelle

    Alles, was nur von der Farbe des Pixels selbst abhängt — Kurven, HSL, Farbgradierung, Punktfarbe — wird beim Wechsel des Presets einmal in eine 3D-Lookup-Tabelle gebacken. Die GPU legt diese Tabelle danach ohne weiteren Aufwand über jedes Einzelbild, und genau das lässt den Look mit einem Live-Stream mithalten.

  4. Der Auslöser rechnet das Echte

    Ein Druck auf den Auslöser lässt dieselbe Pipeline in Gleitkomma über das ganze unkomprimierte Sensorbild laufen, ohne die Interpolation der Lookup-Tabelle. Halation und Korn nutzen auf beiden Wegen denselben Code — die Textur, die du im Sucher hattest, ist die, die du bekommst.

  5. Das Original bleibt erhalten

    Eine unberührte Kopie des Bildes wird standardmäßig neben der bearbeiteten Fassung gespeichert, und im RAW-Modus landen die unveränderten Sensordaten in einem eigenen ProRAW-DNG. Einen Look anzuwenden lässt sich durch Löschen einer Datei rückgängig machen; es wird nichts ungefragt eingebrannt.

Warum Vorschau und Foto übereinstimmen

Die meisten Kameras mit Live-Filter fahren einen Code für die Vorschau und einen anderen für die Datei, und die beiden driften auseinander — daher der übliche Rat, flach zu fotografieren und später zu gradieren.

Hier rufen beide Wege dieselbe Rust-Implementierung mit denselben Parametern auf. Die Vorschau tauscht Genauigkeit gegen Tempo, und sonst nichts: eine auf einem Raster abgetastete Tabelle statt der Rechnung Pixel für Pixel. Welche Operation stattfindet, in welcher Reihenfolge, mit welchem Wert — das ist gemeinsam.

Was eine Lookup-Tabelle nicht fassen kann

Eine Lookup-Tabelle bildet Farbe auf Farbe ab, sie kann also nur Korrekturen tragen, die allein vom Pixel abhängen. Alles, was die Nachbarpixel ansehen muss, ist räumlich — Klarheit, Dunst entfernen, Schärfen, Rauschreduzierung, Vignettierung, Masken und Korn — und läuft auf beiden Wegen als eigener Durchgang.

Deshalb kostet ein Preset mit mehreren Masken im Sucher auch mehr als eines ohne: Jede Maske sind mehrere bildfüllende GPU-Durchgänge pro Frame, während ihre Farbarbeit kostenlos in der Tabelle steckte.

An Lightroom angepasst, nicht geraten

Die HSL-Operatoren für Sättigung und Luminanz wurden an Lightrooms eigene Ausgabe angepasst statt aus einer vermuteten Formel nachgebaut — ein in Lightroom gebautes Preset landet also dort, wo sein Autor es hingelegt hat.

Wo eine Steuerung wirklich nicht implementiert ist, rendert die Engine sie neutral und kann das melden, statt etwas ungefähr Ähnliches einzusetzen. Ein Preset ist ein Satz bewusst gewählter Zahlen; stillschweigend andere zu rendern ist schlimmer, als gar keine zu rendern.

Nichts verlässt das Gerät

Es gibt keinen Server. Einlesen, Rendern, Aufnehmen und Exportieren geschehen auf dem Telefon, und die Fotos gehen direkt in deine Mediathek.

Eine Anmeldung bei Google Drive oder OneDrive zum Holen von Presets legt ihr Token im iOS-Schlüsselbund ab und nutzt es, um .xmp-Dateien zu lesen — sonst nichts.