# How It Works — From an .xmp file to the frame you keep. > How xMosaique reads a Lightroom XMP preset, renders it on the live camera feed as a GPU lookup table, and re-runs the same processing in floating point across the full sensor frame at capture. A preset is parsed once into a set of parameters, baked into a 3D lookup table for the viewfinder, and re-run at full floating-point precision over the uncompressed sensor frame when you press the shutter. One implementation, written in Rust, drives both paths — which is why the preview and the photograph agree. ## The path a photograph takes 1. **The file is parsed** — An .xmp preset is XML. Every Camera Raw attribute is read out of it into one set of parameters: white balance and exposure, tone and curves, HSL, colour grading, detail, effects and any masks. Attributes the engine does not recognise are ignored rather than treated as errors, so a preset exported by a newer Lightroom still loads with everything it does understand. 2. **The preset becomes a pipeline** — Those parameters become an ordered sequence of operations — white balance and exposure, then tone and curves, then colour, then the spatial work: clarity, dehaze, sharpening, masks, vignette and grain. The order is fixed, because the same adjustments applied in a different sequence do not produce the same photograph. 3. **The viewfinder gets a lookup table** — Everything that depends only on a pixel's own colour — curves, HSL, colour grading, Point Color — is baked once into a 3D lookup table the moment you switch presets. The GPU then applies that table to every frame at no further cost, which is what lets the look keep up with a live camera feed. 4. **The shutter runs the real thing** — Pressing the shutter re-runs the same pipeline in floating point across the whole uncompressed sensor frame, with none of the lookup table's interpolation in it. Halation and grain use identical code in both paths, so the texture you framed is the texture you get. 5. **The original is kept** — A clean copy of the frame is saved beside the processed one by default, and in RAW mode the untouched sensor data is written as its own ProRAW DNG. Applying a look is something you can undo by deleting a file, not something baked in without asking. ## Why the preview and the photograph match Most cameras that offer a live filter run one piece of code for the preview and a different one for the file, and the two drift — which is why the usual advice is to shoot flat and grade later. Here both paths call the same Rust implementation with the same parameters. The preview trades precision for speed, and nothing else: a lookup table sampled on a grid rather than the maths run per pixel. Everything about which operation happens, in what order, with what value, is shared. ## What a lookup table cannot hold A lookup table maps a colour to a colour, so it can only carry adjustments that depend on the pixel alone. Anything that has to look at a pixel's neighbours is spatial — clarity, dehaze, sharpening, noise reduction, vignetting, masks and grain — and runs as its own pass on both paths. That is also why a preset with several masks costs more in the viewfinder than one with none: each mask is a set of full-frame GPU passes on every frame, while its colour work was folded into the table for free. ## Fitted against Lightroom, not guessed at The HSL saturation and luminance operators were fitted against Lightroom's own output rather than reimplemented from a guess at the formula, so a preset built in Lightroom lands where its author put it. Where a control genuinely is not implemented, the engine renders it as neutral and can say so, rather than substituting something approximately similar. A preset is a set of numbers somebody chose deliberately; quietly rendering different ones is worse than rendering none. ## Nothing leaves the device There is no server. Parsing, rendering, capture and export all happen on the phone, and the photographs are written straight to your library. Signing in to Google Drive or OneDrive to fetch presets stores its token in the iOS Keychain and uses it to read .xmp files, nothing else. --- ## Download on the App Store xMosaique is an iPhone camera app that applies Adobe Lightroom and Camera Raw XMP presets live in the viewfinder, before capture. - **App Store**: https://apps.apple.com/us/app/xmosaique-preset-camera/id6800525371 - **Price**: Free. No subscription, no in-app purchases and no ads. - **Platform**: iPhone - **Requires**: iOS 18.0 or later - **Current version**: 1.3.2 — 2026-09-07 - **Android**: In development. Not released, and there is no sign-up list yet. --- - Canonical HTML page: https://xmosaique.com/how-it-works/ - This page in other languages: [Français (France)](https://xmosaique.com/fr/how-it-works.md) · [Deutsch (Deutschland)](https://xmosaique.com/de/how-it-works.md) · [हिन्दी (भारत)](https://xmosaique.com/hi/how-it-works.md) · [Indonesia (Indonesia)](https://xmosaique.com/id/how-it-works.md) · [Italiano (Italia)](https://xmosaique.com/it/how-it-works.md) · [日本語 (日本)](https://xmosaique.com/ja/how-it-works.md) · [한국어 (대한민국)](https://xmosaique.com/ko/how-it-works.md) · [简体中文](https://xmosaique.com/zh-Hans/how-it-works.md) · [繁體中文](https://xmosaique.com/zh-Hant/how-it-works.md) · [Português (Brasil)](https://xmosaique.com/pt-BR/how-it-works.md) · [Español (Latinoamérica)](https://xmosaique.com/es-419/how-it-works.md) · [Español (España)](https://xmosaique.com/es-ES/how-it-works.md) - All pages in this language: https://xmosaique.com/index.md - Consolidated brief (all pages, all languages): https://xmosaique.com/AI_info.md