Everybody loves 3d programming till they have to sort the world traingles based the MVP matrix.

257m@lemmy.ml to Programmer Humor@programming.dev – 222 points –

Image of character from Team Fortress 2 saying "I fear no man" labelled Opengl Programmers "But that thing..." Tranparency "It scares me."

8

You can use an O(n) radix sort on the Z-values because IEEE-754 floats share the integer property that leftmost bits always have higher values than rightward ones.

Oh that just made it click in my head why they would do it as sign, exponent, mantissa and not sign, mantissa, exponent. I mean yes I've been taught it's for sorting purposes, but this really helped it fit better. Thanks!

Thanks man, I'll look into it when I have the time. This should work on all IEEE compliant systems right?

Yes, but... "leftmost" in this case means MSB-sidemost, so little-endian systems will start sorting from the MSB only after loading the full value in a register; if you try sorting directly from memory in binary chunks smaller than the float size, first locate where the MSB is stored.

I made a pact with myself in 2005 or so that I would never sort triangles by hand ever again. Since then I have been using higher level APIs and I have not regretted it.