I created a RAW to HDRI stacker in (mostly) Common Lisp
Details
- External ID
- 48419065
- Source
- HN
- Company
- —
- Product
- I created a RAW to HDRI stacker in (mostly) Common Lisp
- Website domain
- github.com
- Launched
- June 5, 2026
- Cohort
- —
- Upvotes
- 35
- Upvotes percentile
- 0.8080601092896175
- Tags
- —
- Fetched at
- Sept. 7, 2026, 9:26 p.m.
- Updated at
- Sept. 7, 2026, 9:26 p.m.
Description
This is an upgrade of a tool I created 15 years ago in Python to learn OOP and solve some inadequacies in the HDR stacking tools I could find at the time. The problem was, none of them were really "batch friendly". None of them properly preserved the metadata I wanted them to stuff into the output file. There were probably some other reasons also, I just can't remember them now.It got the job done, but was very slow. Python was what I knew at the time and even with NumPy, I was limited in the speed I could squeeze out of it. (I also made some very specific, conscious, architectural choices to be extra frugal with RAM, which impacted performance further.)This new version is SUBSTANTIALLY faster than the old one. This time around the exercise was more about having some fun in Lisp using an AI agent REPL skill I created and exploring SIMD in SBCL via the built-in sb-simd library.It uses LibRaw (via its C API wrapper and CFFI) for reading and and a custom multi-threaded pure Lisp implementation of (a subset) of OpenEXR I created for writing the output files. The threading helps speed up the otherwise expensive deflate based codec and goes a long way towards speeding up the end-to-end pipeline. The core processing / compositing logic is pure Lisp.Cool features:* Buffer parallel (threaded) LibRaw reads* Frugal use of memory (RAW read as 16 bit INT and is only upcast to float during actual stacking)* AVX2 acceleration of 16 bit INT up-cast and HDR stacking loop* Threaded OpenEXR writes* EXIF to EXR metadata preservation of the "center" exposure bracket, which essentially forwards meaningful telemetry regarding the radiometric "reality" of the scene when it was photographed downstream to subsequent consumers.You can learn more about it and the "algorithm" it uses from the repo. The math for HDR stacking is really very simply if you know basic compositing and understand how digital camera sensors work.
Enrichment
- Theme
- lightweight and on-device AI runtimes
- Vertical
- Media & entertainment
- Function
- Dev tools
- Audience
- Prosumer
- AI stance
- Not AI
- Project type
- Hobby / open-source project
- Normalized one-liner
- raw image to hdri stacking tool
- Manually corrected
- False
Could you build this?
Partial A batch processing script can be written with AI, but accurately fusing multi-exposure camera RAW files into floating-point HDR radiance maps with color calibration and EXIF retention requires specialized computational photography knowledge.
What it would actually take: Building a robust RAW to HDRI stacker requires integrating low-level RAW decoding libraries (e.g., LibRaw) to unpack Bayer sensor patterns, black levels, and white balance matrices without clipping. The stacker must align handheld or tripod exposures using feature detection or optical flow, estimate camera response functions (Debevec or Robertson algorithms), merge samples into a 32-bit linear radiance map, and faithfully serialize metadata to OpenEXR or Radiance HDR formats. This requires computational photography and color science expertise.
Discussion
No comments on this launch.
Competitors
Other products that read as similar to this one — 97 launches clear the similarity bar, closest 8 shown.
Attention rank: #21 of 98 (itself plus its competitors, highest first — normalized so YC and Product Hunt are compared fairly).
Launched 214 days after the earliest competitor.
- I built Wool, a lightweight distributed Python runtime · hn · 2026-03-14 · 15 upvotes · similarity 0.48
- Fast and lightweight hash implementations (xdigest) · hn · 2026-02-19 · 5 upvotes · similarity 0.43
- I built a local Elixir/Python pipeline to curate 14,000 RAW photos · hn · 2026-04-20 · 5 upvotes · similarity 0.41
- btrc · hn · 2026-03-02 · 5 upvotes · similarity 0.40
- Forkrun · hn · 2026-03-27 · 151 upvotes · similarity 0.40
- Threadprocs · hn · 2026-03-23 · 64 upvotes · similarity 0.39
- I got tired of print(x.shape) so I built runtime type hints for Python · hn · 2026-03-18 · 7 upvotes · similarity 0.39
- Overfitted a 900KB Transformer to Compress a 100MB CSV into 7MB · hn · 2026-06-23 · 112 upvotes · similarity 0.38
Other launches for this product
- No other launches for this product.
Same idea, different domain
Nobody's really built a dev tools tool for Sales yet.