Skip to content

FluidX3D v2.16 (bug fixes)

Compare
Choose a tag to compare
@ProjectPhysX ProjectPhysX released this 02 May 19:07
· 59 commits to master since this release

I'm doing my part! With the v2.16 update I've put down all remaining known bugs for good. 🖖😎❌🪳❌
WOULD YOU LIKE TO KNOW MORE?


Bug fixes in this release:

  • fixed that voxelization failed in Intel OpenCL CPU Runtime due to array out-of-bounds access
  • fixed that voxelization did not always produce binary identical results in multi-GPU compared to single-GPU
  • fixed that velocity voxelization failed for free surface simulations
  • fixed terrible performance on ARM GPUs by macro-replacing fused-multiply-add (fma) with a*b+c
  • fixed that Y/Z keys were incorrect for QWERTY keyboard layout in Linux
  • fixed that free camera movement speed in help overlay was not updated in stationary image when scrolling
  • fixed that cursor would sometimes flicker when scrolling on trackpads with Linux-X11 interactive graphics
  • fixed flickering of interactive rendering with multi-GPU when camera is not moved
  • fixed missing XInitThreads() call that could crash Linux interactive graphics on some systems
  • fixed z-fighting between graphics_rasterize_phi() and graphics_flags_mc() kernels

Other improvements:

  • simplified 10% faster marching-cubes implementation with 1D interpolation on edges instead of 3D interpolation, allowing to get rid of edge table
  • added faster, simplified marching-cubes variant for solid surface rendering where edges are always halfway between grid cells
  • refactoring in OpenCL rendering kernels

With GitHub I can track every bug from day it was discovered/fixed back to the day it was first introduced. This allows me to graph the number of open bugs over time, along with a curve weighted by their individual severity (minor 0.25, low 0.5, medium 1.0, high 2.0, showstopper 4.0):
grafik

Here is the distribution of days open, days till discovery and days till fix. I fixed 56% of bugs on the day of discovery. Notice the bimodal distribution of days open - a clear separation into "easy" and "nasty" bugs.
grafik

Lessons learned:

  • Since release there was 63 bugs in FluidX3D in total, with at max 41 open bugs at one time. 🖖😱 Now there is 0, at least until I find more. 🖖😎 For reference: FluidX3D is 12.1k lines of code.
  • Most bugs were a byproduct of big feature updates, like v2.0 (multi-GPU) and v2.1/v2.2 (voxelization). Of course at the time of introduction I didn't know that bugs slipped through, and I (or users) only discovered them later.
  • Only 17% of bugs were found by users, all the others I found myself with rigorous testing. It takes continuous poking around in the code to find these often super rare bugs.
  • 30% of bugs were actually bugs in the compiler, driver or operating system that needed a workaround on application side.
  • The latest v2.16 release is the best FluidX3D has ever been. The worst, most bugged version by this metric is v2.2. 🖖🤠

Have fun with the software!
-- Moritz


PS: Here's an amusing FluidX3D video from @SLGY, he's doing his part too!