frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Lossless Float Image Compression

https://aras-p.info/blog/2025/07/08/Lossless-Float-Image-Compression/
116•ingve•7mo ago

Comments

kevingadd•6mo ago
Mesh optimizer's performance here is a nice reminder: the state of the art in general purpose compression is hard to beat, but special purpose still has room for improvement.
twic•6mo ago
And not only that, but you can use a special-purpose optimiser for a different domain and somehow get great results!
willvarfar•6mo ago
That you can chain one compressor with a second reminds me of the QOI (a png-competitor) whose output is often competitive with png (which uses gzip) _before_ it's output gets compressed with something as mundane as zstd or gzip.
kevingadd•6mo ago
My understanding is that chaining compressors is a classic technique for image compression. IIRC PNG and Basis are both implemented as initial transformation/pre-filtering/conditioning pass(es) designed to make the image data more compressible before feeding it to a codec like gzip or zstd.

This definitely works for things that aren't images too. I previously proved that you could improve the compression ratio for WebAssembly significantly by performing lossless transforms on the module before feeding it to gzip or brotli (though the gains are much smaller for brotli since it's so good to begin with): https://github.com/WebAssembly/design/issues/1180

ttoinou•6mo ago
Vidvox HAP and Resolume DXV codecs also have a fast lossless compression stage
hcs•6mo ago
Exe filters are cool, I think I first saw the split stream thing in the kkrunchy writeup https://fgiesen.wordpress.com/2011/01/24/x86-code-compressio..., looks like it was first in PPMexe.
ACCount36•6mo ago
One classic transformation for executable code is to convert memory offsets to absolute addresses for compression. Absolute addresses are more compressible than relative ones.

Probably the single oldest trick in the code compression book.

msk-lywenn•6mo ago
Isn’t it the other way around? Absolute addresses are all different while relatives often repeat, leading to better compression.
ACCount36•6mo ago
In sane code, there are more function calls than there are functions. Imagine, now, that there's a function at 0x1337, and it's called from 69 different places in the code.

If we're using relative addresses, this would, of course, result in 69 different addresses to compress - each relative address being the difference between 0x1337 and the position of the code that calls it.

If we're using absolute addresses, we get the same exact address 0x1337 repeated 69 times - which is way more compressor friendly.

msk-lywenn•6mo ago
Thanks. I was initially thinking of memory addresses for data. Indeed, it's a nice trick for code.
NooneAtAll3•6mo ago
Reading through author's float compression series, I can't unnotice that in this post plot axis got switched - and it is a lot... easier? more elegant? to have speed on the vertical somehow

at least for me

virtualritz•6mo ago
Relevant discussion on Academy Software Foundation Slack where the author, Aras, 1st posted a link to the blog post about 2.5 weeks ago:

https://academysoftwarefdn.slack.com/archives/CMLRW4N73/p175...

ksec•6mo ago
As I said before JPEG XL lossless performance is really really slow. I am wondering if it is inherently its spec or its implementation.
djray•6mo ago
What you gain in performance, you somewhat sacrifice in flexibility, at least in comparison with OpenEXR.

OpenEXR was designed for modularity, allowing efficient access to individual layers or channels. This is crucial in VFX workflows where only specific passes (like normals or diffuse) might be needed at any one time. This access is possible because EXR stores channels separately and supports tiled or scanline-based access.

The custom compression method Aras proposes - using meshoptimizer on 16K pixel chunks, followed by zstd as a second compressor step - achieves significantly faster decompression and better compression speeds than EXR ZIP, HTJ2K, or JPEG-XL lossless. However, it trades off random access and requires decompressing the entire image at once, which increases memory usage. Individual frames for a VFX production can be multiple gigabytes (i.e. dozens of 32-bit layers at 4K resolution).

The author's proposal is still compelling, and I wonder if a variant could find its way into some sort of archival format.

aras_p•6mo ago
(author here) I think yes and no -- while it is true that the "MOP" quick test I tried does not allow to access/decompress individual EXR channels, it does allow to access "chunks" of the image. Unlike say EXR ZIP that splits up image into 16 scanline chunks where each is independent, this splits up into 16K pixel chunks where each is completely independent from each other. So you can access a chunk without decompressing the whole image.

That said, if someone were to investigate ideas like this furher, then yes, making "layers" within EXR be able to get decompressed independently would be a thing to look at. Making individual "channels" perhaps not so much; it is very likely that if someone needs say "indirect specular" layer, then they need all the channels inside of it (R, G, B).

Al Lowe on model trains, funny deaths and working with Disney

https://spillhistorie.no/2026/02/06/interview-with-sierra-veteran-al-lowe/
48•thelok•2h ago•5 comments

Hoot: Scheme on WebAssembly

https://www.spritely.institute/hoot/
107•AlexeyBrin•6h ago•19 comments

OpenCiv3: Open-source, cross-platform reimagining of Civilization III

https://openciv3.org/
798•klaussilveira•20h ago•243 comments

Stories from 25 Years of Software Development

https://susam.net/twenty-five-years-of-computing.html
44•vinhnx•4h ago•6 comments

Reinforcement Learning from Human Feedback

https://rlhfbook.com/
68•onurkanbkrc•5h ago•5 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
1048•xnx•1d ago•589 comments

Start all of your commands with a comma (2009)

https://rhodesmill.org/brandon/2009/commands-with-comma/
466•theblazehen•2d ago•168 comments

The AI boom is causing shortages everywhere else

https://www.washingtonpost.com/technology/2026/02/07/ai-spending-economy-shortages/
74•1vuio0pswjnm7•7h ago•78 comments

France's homegrown open source online office suite

https://github.com/suitenumerique
518•nar001•5h ago•239 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
188•jesperordrup•11h ago•65 comments

Coding agents have replaced every framework I used

https://blog.alaindichiappari.dev/p/software-engineering-is-back
197•alainrk•5h ago•297 comments

A Fresh Look at IBM 3270 Information Display System

https://www.rs-online.com/designspark/a-fresh-look-at-ibm-3270-information-display-system
29•rbanffy•4d ago•5 comments

Selection Rather Than Prediction

https://voratiq.com/blog/selection-rather-than-prediction/
4•languid-photic•3d ago•0 comments

Software factories and the agentic moment

https://factory.strongdm.ai/
57•mellosouls•3h ago•59 comments

72M Points of Interest

https://tech.marksblogg.com/overture-places-pois.html
22•marklit•5d ago•1 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

https://arcadeblogger.com/2026/02/02/unseen-footage-of-atari-battlezone-cabinet-production/
108•videotopia•4d ago•27 comments

Where did all the starships go?

https://www.datawrapper.de/blog/science-fiction-decline
62•speckx•4d ago•65 comments

U.S. Jobs Disappear at Fastest January Pace Since Great Recession

https://www.forbes.com/sites/mikestunson/2026/02/05/us-jobs-disappear-at-fastest-january-pace-sin...
21•alephnerd•1h ago•10 comments

Show HN: Look Ma, No Linux: Shell, App Installer, Vi, Cc on ESP32-S3 / BreezyBox

https://github.com/valdanylchuk/breezydemo
271•isitcontent•21h ago•36 comments

Learning from context is harder than we thought

https://hy.tencent.com/research/100025?langVersion=en
198•limoce•4d ago•109 comments

Monty: A minimal, secure Python interpreter written in Rust for use by AI

https://github.com/pydantic/monty
282•dmpetrov•21h ago•151 comments

Making geo joins faster with H3 indexes

https://floedb.ai/blog/how-we-made-geo-joins-400-faster-with-h3-indexes
153•matheusalmeida•2d ago•47 comments

Show HN: Kappal – CLI to Run Docker Compose YML on Kubernetes for Local Dev

https://github.com/sandys/kappal
20•sandGorgon•2d ago•10 comments

British drivers over 70 to face eye tests every three years

https://www.bbc.com/news/articles/c205nxy0p31o
176•bookofjoe•2h ago•160 comments

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
551•todsacerdoti•1d ago•266 comments

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
423•ostacke•1d ago•110 comments

Show HN: I spent 4 years building a UI design tool with only the features I use

https://vecti.com
366•vecti•23h ago•167 comments

An Update on Heroku

https://www.heroku.com/blog/an-update-on-heroku/
465•lstoll•1d ago•305 comments

Show HN: If you lose your memory, how to regain access to your computer?

https://eljojo.github.io/rememory/
345•eljojo•23h ago•212 comments

Ga68, a GNU Algol 68 Compiler

https://fosdem.org/2026/schedule/event/PEXRTN-ga68-intro/
40•matt_d•4d ago•16 comments