Skip to content

FluidX3D v2.16 (bug fixes)

Latest
Compare
Choose a tag to compare
@ProjectPhysX ProjectPhysX released this 02 May 19:07
· 3 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!