Uploaded December 2021 | Updated September 2026, 1 week ago
Cleverly combining existing algorithms sometimes results in magic:
4D Perlin noise + marching-cubes + Snell's law + OpenCL parallelization
4D Perlin noise provides iso-values on a 3D Cartesian lattice. With the marching-cubes algorithm (paulbourke.net/geometry/polygonise/), it is possible to generate triangulated isosurfaces from the lattice.
Turns out such a 3D lattice already is one of the ideal acceleration structures for raytracing. Any ray only has to check for possible intersections with iso-surface triangles contained within the traversed grid cells. This makes it run in real time on non-RTX GPUs. Light rays from the camera traverse the lattice and check for intersections with the triangles that marching-cubes generates on-the-fly from the isovalues. Triangles never leave registers.
Cleverly combining existing algorithms sometimes results in magic:
4D Perlin noise + marching-cubes + Snell's law + OpenCL parallelization
4D Perlin noise provides iso-values on a 3D Cartesian lattice. With the marching-cubes algorithm (paulbourke.net/geometry/polygonise/), it is possible to generate triangulated isosurfaces from the lattice.
Turns out such a 3D lattice already is one of the ideal acceleration structures for raytracing. Any ray only has to check for possible intersections with iso-surface triangles contained within the traversed grid cells. This makes it run in real time on non-RTX GPUs. Light rays from the camera traverse the lattice and check for intersections with the triangles that marching-cubes generates on-the-fly from the isovalues. Triangles never leave registers.
![FluidX3D [FLUID SIMULATION] - Real Time Free Surface LBM with Volume-of-Fluid
FluidX3D is a real time 3D fluid simulation based on the lattice Boltzmann method. It is written in OpenCL C (GPU code) and optimized to the physical limit (video memory bandwith, ~520GB/s).
All demonstrations in the video are simulated and visualized in real time on a Nvidia Titan Xp. Graphics are done with the OpenCL C version of Line3D, the fastest graphics engine ever written for primitive shapes like lines, dots and circles. It can handle up to 2 billion lines per second.
The free surface is done with the volume-of-fluid (VoF) extension to LBM. It allows simulating free surfaces with a sharp interface layer. Having to avoid race conditions makes an efficient GPU implementation of VoF is quite challenging. Currently there is no surface tension yet; the curvature estimation algorithm is still under construction.
The volume force (gavity) is implemented with the Gou forcing scheme.
Hardware Setup:
CPU: Intel Core i7-8700K @ 4,5GHz all core
GPU: Nvidia Titan Xp
RAM: 2x8GB Corsair Vengeance LPX DDR4 3200MHz CL16
Mainboard: ASUS ROG STRIX Z370-I GAMING
SSD 1: Samsung 970 PRO 512GB
SSD 2: Samsung 860 EVO 1TB
CPU Cooler: Cooltek LP53
PSU: Corsair SF600
Housing: Fractal Design Node 202
Timestamps:
0:00 - Intro
0:02 - honey coiling
0:34 - large drop impact
0:45 - drop splashing in flowing water
0:55 - throwing drop sideways in resting water
1:00 - eternal periodic water tap
1:07 - dam break without obstacles
1:18 - asymmetric dam break with two connected chambers
1:29 - droplet impact
1:39 - eternal periodic fountain
1:50 - dam break with cuboid obstacle
2:06 - more honey coiling (just because it is so cool)
More information at http://www.projectphysx.de
Music: Notaker - Fatal System Error FluidX3D [FLUID SIMULATION] - Real Time Free Surface LBM with Volume-of-Fluid](https://i.ytimg.com/vi/a1u2g9ahIDk/mqdefault.jpg)
![FluidX3D [FLUID SIMULATION] - Smashing the Memory Wall with FP16 | 100 Subscriber Special
FluidX3D is a real time 3D fluid simulation based on the lattice Boltzmann method. It is written in OpenCL C (GPU code) and optimized to the physical limit (video memory bandwith, ~520GB/s).
All demonstrations in the video are simulated and visualized in real time on a Nvidia Titan Xp. Graphics are done with the OpenCL C version of Line3D, the fastest graphics engine ever written for primitive shapes like lines, dots and circles. It can handle up to 2 billion lines per second.
LBM performance is only limited by video memory bandwidth - the so-called memory wall. Storing the LBM distribution functions in memory as FP16 instead of FP32 cuts the memory bandwidth requirements in half, doubling the simulation speed at the cost of a bit of accuracy. My implementation has a hardware efficiency of up to 95%, meaning that 520 GB/s of the total 548 GB/s of video memory bandwidth are used. This results in a peak performance of 5.2 GLUPs (giga lattice updates per second, how many LBM lattice points are processed in 1 second) for the D3Q19 velocity set.
More information at http://www.projectphysx.de
Music: Notaker - Fatal System Error FluidX3D [FLUID SIMULATION] - Smashing the Memory Wall with FP16 | 100 Subscriber Special](https://i.ytimg.com/vi/aWFi__zMUkk/mqdefault.jpg)






![PhysX3D [GRAVITY SIMULATION] Sonnensystem
Hier zu sehen ist unser Sonnensystem mit allen größeren Monden und Asteroiden mit einem Durchmesser über 160km. Die Daten aller Objekte stammen aus der JPL-Datenbank:
http://ssd.jpl.nasa.gov/horizons.cgi
Das ganze Programm inklusive der Grafikausgabe ist in Java ausschließlich unter Verwendung der Standardbibliotheken geschrieben.
Auch wenn es so aussieht, als würden sich die Planeten auf Keplerbahnen bewegen, richten sich die Bahnen nach den Planeten. Denn die Berechnung im Hintergrund ist das n-Körper-Problem; jedes Objekt beeinflusst jedes andere.
Ich habe das Bildflackern (zu sehen im letzten Video) behoben, indem alles zunächst auf ein BufferedImage gezeichnet wird, das dann auf den Bildschirm geworfen wird. Dadurch ist die Bildrate auch noch wesentlich flüssiger.
Mehr Informationen auf: http://www.projectphysx.de
Song: CMA - Youre Not Alone PhysX3D [GRAVITY SIMULATION] Sonnensystem](https://i.ytimg.com/vi/f0hyr041gKU/mqdefault.jpg)

