Do You Like Physics Simulations aaaannnd C++? Me Too!
summary
Ports Matthias Müller’s JavaScript fluid demo into C++ using CMake, MSVC and an OpenGL widget, ends up running about 21,000 particles on a laptop after fixing Y‑axis and scale bugs and converting JS reference semantics to C++ references. Implements C++23 modules, replaces flat arrays with mdspan, rewrites loops into ranges and tests parallel execution for drawing vs simulation, finding drawing parallelizes well but math-bound simulation limits speed. Adds sand and floating material by changing densities, uses consteval/if consteval for compile‑time tuning.
AI-written summary · about
chapters (18)
- 0:00Introduction and goals
- 3:36Fluid physics foundation
- 6:23Translating JS to C++
- 8:24Modernizing with ranges
- 10:03Using MDspan for data
- 11:50Fixing simulation bugs
- 14:18Advanced range techniques
- 16:48String formatting and scaling
- 19:12Fixing physics and references
- 22:18Implementing C++ modules
- 25:47Module structure and cycles
- 28:38Refactoring into modules
- 31:10Simulation loop breakdown
- 34:01Parallel algorithms
- 37:11Compile-time optimizations
- 39:22Graphics rendering optimization
- 42:26Adding materials and analysis
- 45:46Conclusion and takeaways
related talks
39mComputational Physics, Beyond the Glass
45mNatural physics simulations and canvas hackery
37mCreative Coding for Fun and (Non)Profit
27mA JavaScript framework for computational simulations
27mCreating natural simulations in a web browser
59mCreative Coding with C++
40mPhysics in Clojure
49mRapid Prototyping of Graphics Shaders in Modern C++
