OmaStudio 0.2 : prise en charge des RAW 16 bits en moyen format et architecture de démon Rust persistant
Note —OmaStudio a été mis à jour avec une architecture de démon Rust persistant offrant une profondeur de couleur RGB 48 bits, un pipeline 16 bits sans perte pour les capteurs moyen format de plus de 100 MP comme le Fujifilm GFX et le Hasselblad, ainsi qu'une édition en direct à 60 FPS.

Sommaire
Résumé : Avec la version 0.2 d'OmaStudio, les images sont traitées de bout en bout en 16 bits par canal. L'article explique pourquoi la différence entre 8 bits et 16 bits devient évidente lors du débouchage des ombres, le daemon Rust persistant qui ne relit pas le fichier à chaque mouvement de curseur, l'aperçu à double tampon via
/dev/shm, la sortie 16 bits en TIFF, PNG, JXL et AVIF, ainsi que le bouton de réinitialisation ajouté pour les rendus de film.
Si la plage dynamique offerte par les capteurs plein format (35 mm) en photographie est impressionnante, le monde du moyen format (Medium Format) est une tout autre ligue. Les capteurs géants de plus de 100 mégapixels produits par des systèmes comme le Fujifilm GFX 100 II, le GFX 100S, le Hasselblad X2D 100C et le Phase One offrent une conversion analogique-numérique (ADC) 16 bits complète par pixel et une plage dynamique de plus de 15 stops.
De nombreux logiciels de retouche photo, pour accélérer l'aperçu, réduisent ces riches données à 8 bits (256 niveaux par canal) lors de leur chargement en mémoire. Mais lorsque vous débouchagez des ombres profondes (+4 EV, +100 Shadows) ou tentez de récupérer des dégradés de ciel difficiles, les marches entre les tons se cassent ; des lignes de couleur disgracieuses (banding) et des déchirures de couleur (posterization) apparaissent dans les ombres.
Avec la mise à jour OmaStudio 0.2.0 publiée aujourd'hui, nous avons levé tous les obstacles techniques devant la photographie de moyen format et de studio sur bureau Linux. OmaStudio dispose désormais d'un pipeline de traitement mathématique sans perte entièrement 16 bits (16 bits par canal / RGB 48 bits) et d'une architecture à daemon Rust persistant.
Pourquoi 16 bits ? Le gouffre entre 8 bits et 16 bits
La profondeur de luminosité et de couleur d'un pixel est déterminée de façon exponentielle par son nombre de bits :
- 8 bits : $2^8 = 256$ niveaux par canal (16,7 millions de couleurs au total).
- 16 bits : $2^{16} = 65 536$ niveaux par canal (281 billions de couleurs au total).
- Comparaison de la récupération des ombres et de la quantification des tons : Précision tonale 256x
Pipeline de traitement 8 bits
256 niveaux
Escalier et posterization
Lorsque les ombres profondes sont débouchées (+4 EV), les tons intermédiaires s'épuisent ; au lieu d'une transition fluide, des marches de couleur dures apparaissent.
- Répartition des tons : [1] … [2] … [3] (pas grossier) · Déchirure de couleur : · Lignes de banding marquées
Pipeline linéaire 16 bits
65 536 niveaux
Transition soyeuse et fluide (zéro banding)
Chaque canal de couleur est calculé avec une précision de 65 536 ; même le plus petit micro-détail des ombres est préservé avec une texture de film organique.
- Répartition des tons : [256] -> [257] -> [258]… · Qualité de transition : · Haute précision tonale
En particulier dans les fichiers .RAF de la série Fujifilm GFX et les formats .3FR / .DNG de Hasselblad, les informations cachées dans les ombres sont incroyablement riches. Grâce au moteur de traitement 16 bits :
- Zéro banding : Les détails extraits des ombres profondes apparaissent avec une texture de film naturelle et organique, car les marches de tons intermédiaires sont interpolées en douceur.
- Highlight Rolloff (atténuation douce des hautes lumières) : Les zones très lumineuses comme un coucher de soleil, des lumières de scène ou une robe de mariée blanche s'atténuent progressivement et en douceur au lieu de brûler brutalement en blanc.
- Étalonnage couleur DaVinci sans perte : Les contrôles 3-Way Lift/Gamma/Gain et 8-Band HSL tournent mathématiquement sur des matrices float à 65 536 niveaux.
Nouvelle architecture : le daemon persistant Rust Engine
Dans l'ancienne architecture, chaque mouvement de curseur (slider) déclenchait un sous-processus séparé (omastudio-engine render), et le fichier RAW de 112 Mo devait être relu depuis le disque. Compte tenu de la taille énorme des données 16 bits, cette méthode n'était pas viable.
Avec OmaStudio 0.2, nous avons renouvelé de fond en comble la colonne vertébrale du système :
1. Hot RAM Cache (cache mémoire chaud)
Lorsqu'une photo est ouverte, la couche shim C LibRaw fonctionne en mode output_bps = 16. Les pixels bruts du capteur sont chargés une seule fois en mémoire avec un demosaicing AHD/DHT de haute qualité et conservés dans un tampon RAM chaud au sein de DaemonCache.
2. Ping-pong à double tampon (Double-Buffered) /dev/shm
L'interface (Quickshell / QML) et le moteur Rust communiquent via /dev/shm, la mémoire partagée directement basée sur la RAM du noyau Linux :
- Le premier mouvement de curseur est écrit dans le tampon
/dev/shm/omastudio_preview_0.ppm. - Le deuxième mouvement est écrit dans le tampon
/dev/shm/omastudio_preview_1.ppm. - La texture GPU est échangée (swap) à l'écran à 60 FPS sans qu'un seul pixel ne scintille (zero flicker).
3. Protocole JSON-RPC ligne par ligne
Afin de ne pas laisser de processus zombie en arrière-plan lorsque le panneau du bureau est fermé, un protocole JSON-RPC ligne par ligne via stdin, conforme aux standards AGENTS.md, a été mis en place (load, adjust, ai_auto, ai_social, save_recipe, exit).
- Architecture à processus persistant et mémoire partagée d'OmaStudio : IPC /dev/shm à 60 FPS
- Couche interface : fenêtre Wayland accélérée par GPU, contrôles de toile tactiles et roues chromatiques. (Quickshell UI (Qt 6 QML), texture zero flicker)
Pont IPC bidirectionnel
RPC stdin + /dev/shm
- Requête : stdin JSON-RPC : Pixel : /dev/shm Ping-Pong PPM
Latence d'E/S disque nulle
- Couche moteur : Démon d'arrière-plan persistant. Dématriçage LibRaw unique, cache RAM chaud 16 bits. (omastudio-engine (Rust), Rayon multicœur)
Standard de studio : véritable export master 16 bits
Autant il est essentiel de retoucher une photo en 16 bits à l'écran, autant il l'est de pouvoir livrer en 16 bits à l'impression laboratoire ou au client. Le moteur d'export d'OmaStudio a été entièrement mis à jour :
- TIFF 16 bits (RVB 48 bits) : Sortie TIFF sans perte à 16 bits par pixel pour les grands tirages fine-art.
- PNG 16 bits : PNG en profondeur de couleur complète 48 bits pour le web et l'archivage.
- JXL et AVIF 10/12/16 bits : En alimentant les encodeurs de nouvelle génération JPEG XL (
cjxl) et AVIF (avifenc) avec des données intermédiaires 16 bits, le gamut étendu (WCG) et la plage dynamique HDR sont entièrement préservés. - Réduction intelligente en 8 bits : Pour les formats traditionnels comme JPEG et WebP, l'espace colorimétrique est compressé en toute sécurité en 8 bits à la plus haute qualité.
Film Looks & Styles : bouton RESET réactif
À la suite des retours de nos utilisateurs, un bouton RESET intelligent et réactif a été intégré à l'en-tête du panneau Film Looks & Styles. Ce bouton, qui apparaît lorsqu'une simulation de film (Fuji Classic Chrome, Velvia 50, Kodak Portra, etc.) est sélectionnée, réinitialise en un seul clic toutes les courbes de tons et les dérives colorimétriques, ramenant la photo au profil neutre d'origine du capteur.
Comparaison des performances (fichier RAF Fujifilm de 112 Mo)
| Opération / Métrique | Ancienne version (0.1) | Nouvelle version (0.2 - démon 16 bits) | Gain / Différence |
|---|---|---|---|
| Profondeur de couleur du traitement | 8 bits (256 niveaux) | 16 bits (65 536 niveaux) | 256 fois plus de précision tonale |
| Qualité de récupération des ombres | Postérisation des couleurs | Zéro banding / transitions soyeuses | Large plage dynamique |
| Temps de réponse des curseurs | ~450 ms (lecture disque) | 108 ms (Rayon en RAM) | 4,5 fois plus rapide |
| Fork de processus | 1 PID à chaque déplacement de curseur | 0 PID (un seul démon persistant) | Aucun pic CPU |
| Profondeur d'export master | TIFF 8 bits | TIFF 16 bits (RVB 48 bits) | Livraison studio professionnelle |
Mise à jour et installation
Pour mettre à jour votre installation existante d'OmaStudio, il vous suffit de récupérer le dépôt et de compiler :
git pull origin master
cargo build --release --locked
install -m 755 target/release/omastudio-engine ~/.local/bin/
omastudio
Nous sommes heureux d'avoir rendu à l'édition RAW moyen format, dans le monde de l'open source, les performances et la richesse colorimétrique qu'elle mérite.
- GitHub : github.com/ozdil/omarchy-omastudio
- Licence : MIT License
Mon analyse
- Les données moyen format exigent 16 bits : un aperçu réduit en 8 bits crée de la postérisation lorsqu'on ouvre les ombres.
- Ouvrir le fichier une seule fois suffit : le RAW est chargé une fois en mémoire, les réglages suivants sont seulement recalculés.
- La livraison doit aussi être en 16 bits : TIFF et PNG 16 bits pour l'impression et l'archivage, conversion 8 bits sécurisée pour le web.