FluidX3D v2.16 (bug fixes)
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
) witha*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()
andgraphics_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
):
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.
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!