Skip to content
FilmFrame
Project · Active

FilmFrame

Personal camera app for my Pixel with manual controls, real film simulation LUTs on the GPU, and XPan-style crops.

Visit the site Source on GitHub Read the photo essay
KotlinJetpack ComposeCameraXOpenGLGPU Compute

What It Is

FilmFrame is a camera app I built (rather Claude did) for my Pixel because the stock camera app doesn’t give you real manual control. ISO, shutter speed, focus, white balance, the stuff you’d expect from a proper camera body, plus real film simulation applied via LUTs on the GPU in real-time.

The best feature though is that it does XPAN crop (65:24) and gives you focus/contrast control almost like a pro camera would. Realistically I didn’t really want to pay for a Fuji or Hasselblad to get that XPAN crop.

Film Stocks

17 film simulations including Kodak Portra 160/800, Ektar 100, Tri-X 400, Fuji Eterna, CineStill 800T, and Ilford HP5. Each has its own grain profile with luminance-weighted noise, not Perlin, actual per-crystal white noise like real film.

The LUT pipeline parses .cube files, builds Hald CLUT textures, and applies them in a GLSL fragment shader with trilinear interpolation. Live preview runs at camera frame rate.

XPan Mode

Hasselblad XPan-style panoramic crops: 65:24 (aka 2.7:1), 3:1, cinematic 2.39:1, plus the usual 16:9, 4:3, and 1:1. Full sensor data is preserved so you can uncrop later if you want (if you use DNG).

The Camera Nerd Stuff


← All projects