Note — this fork fixes the release build and adds a WebAssembly target.
Release fixes. The tagged release workflow could not produce macOS binaries at all (the universal link failed), and the binaries it did produce were not self-contained. Fixed here: macOS is built per-architecture and
lipo'd together, OpenEXR's libdeflate/OpenJPH/Imath are always built internally instead of picking up a system copy, Windows links the static CRT, and Linux links libstdc++ statically. CI now fails the build if any binary is not self-contained.WebAssembly.
hdrgenbuilds under Emscripten and runs on node:emcmake cmake -S . -B build-wasm -DCMAKE_BUILD_TYPE=Release cmake --build build-wasm --target hdrgen node build-wasm/hdrgen.js -m 1000 img*.jpg -o out.hdr -r resp.rspIt takes the same arguments and real file paths as the native binary. Memory and threading both clear wasm32 comfortably; JPEG decoding differs slightly from native unless built with
-DPANLIB_JPEG_REPRODUCIBLE_DCT=ON. Seedoc/WASM.mdfor the full measurements.Requires the panlib cross-compilation fixes, so
external/panlibpoints at adulbrich/panlib until they are upstreamed.
Although this repository builds only a few tools, the panlib library that underpins these tools is extensive. Its main focus is on high dynamic-range (HDR) image manipulation, but most operations support 16-bit/channel and 8-bit/channel as well. Much of the library is tailored to support the Photosphere image cataloger and HDR builder app, which is not available for 64-bit targets and needs updating. Volunteers on getting it working again are encouraged to step up.
These are the tools we currently build:
- takes a set of low dynamic-range (LDR) images in a common 8-bit/channel format and merges them into an HDR format
- translates between various HDR and LDR formats and optionally performs numerous operations during conversion
- batch-converts a set of HDR images into 16-bit/channel TIFFs appropriate for input to HDR video encoders such as ffmpeg
- computes and prints optimal multiplier to get input HDR image pixels within the given value bounds
- warps an HDR or LDR image according to the specified input grid vertex locations
- performs a variety of comparisons and so forth between images or bitmaps to compute an output bitmap as a bilevel BMP
Most tools will give a usage message if executed without arguments. If you have specific questions, please write to Greg Ward at GJWard@lbl.gov or post to the appropriate Discourse forum, here.