Uploaded January 2022 | Updated September 2026, 1 week ago
How do visual quality and combined compute+render time compare for different variants of raytracing?
Compute time alone of this simulation is 16 minutes. Rasterization adds another 5 minutes, flat triangle raytracing 8 minutes. With normal vector interpolation it's 10 minutes. A second raytracing pass vastly elongates render time to 31 minutes.
Resolution is 1080p, and 599 frames are rendered.
1 raytracing pass means the camera ray enters the fluid and gets split in reflection and internal ray; the internal ray exits the fluid again and becomes the refraction ray. Per pixel, a total of 4 rays are computed (camera ray, reflection ray, internal ray, refraction ray).
The 2nd pass means that both reflection and refraction ray again can intersect fluid and become reflected and refracted. With 2 raytracing passes, the entire simulation box is reflected on / refracted through every single dropelt. Per pixel, a total of 10 rays are computed (camera ray, 3x reflection ray, 3x internal ray, 3x refraction ray).
Entire simulation in 4K: youtu.be/UUYrWUpPQwY
From Boxes to photorealistic Fluid: youtu.be/u83qaxuT6eA
See my published research paper in Microplastics and Nanoplastics:
microplastics.springeropen.com/articles/10.1186/s43591-021-00018-8
The large simulation domain is made possible by FP32/FP16 mixed precision with novel 16-bit number formats:
arxiv.org/pdf/2112.08926.pdf
This is a Volume-of-Fluid lattice Boltzmann method (LBM) simulation of a 7 mm diameter terminal velocity (9.55 m/s) raindrop impact (D3Q19 SRT) at 20° inclination. Velocity, density and fluid mass are solved at 108 Million lattice points (504x504x428) for 13752 time steps, equivalent to 10 milliseconds in real time. The simulation required 12 GB video memory.
For reproducibility: The dimensionless numbers for this setup are Re = 63618, We = 8864, Fr = 36.44, Ca = 0.1393, Bo = 6.674.
The simulation software used is FluidX3D, an OpenCL implementation of the lattice Boltzmann method. FluidX3D runs at peak hardware efficiency on the worlds fastest data-center GPUs (8799/5232 MLUPs/s on the Nvidia A100/V100 @ D3Q19 SRT FP32), on gaming GPUs and CPUs and it even runs my smartphone.
The rendering is done by FluidX3D as well. Simulated light rays from the camera traverse the LBM lattice and check for intersections with the triangles that marching-cubes generates on-the-fly from the isovalues. Triangles never leave registers.
The 3D lattice that the LBM provides 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 - when the lattice is not too large - even run in real time on non-RTX GPUs.
I am the lead developer of FluidX3D. The implementation is detailed in my Master's thesis, which is freely available on ResearchGate:
researchgate.net/publication/349552856_High_Performance_Free_Surface_LBM_on_GPUs
The Volume-of-Fluid extension is detailed in this research paper:
mdpi.com/2079-3197/10/2/21
Timestamps:
00:00 Intro
00:02 Video Comparison
00:12 Freeze Frame
00:17 Outro
#FluidX3D #OpenCL #Raytracing #GPU #LBM
Music: admo - On The Nightway
How do visual quality and combined compute+render time compare for different variants of raytracing?
Compute time alone of this simulation is 16 minutes. Rasterization adds another 5 minutes, flat triangle raytracing 8 minutes. With normal vector interpolation it's 10 minutes. A second raytracing pass vastly elongates render time to 31 minutes.
Resolution is 1080p, and 599 frames are rendered.
1 raytracing pass means the camera ray enters the fluid and gets split in reflection and internal ray; the internal ray exits the fluid again and becomes the refraction ray. Per pixel, a total of 4 rays are computed (camera ray, reflection ray, internal ray, refraction ray).
The 2nd pass means that both reflection and refraction ray again can intersect fluid and become reflected and refracted. With 2 raytracing passes, the entire simulation box is reflected on / refracted through every single dropelt. Per pixel, a total of 10 rays are computed (camera ray, 3x reflection ray, 3x internal ray, 3x refraction ray).
Entire simulation in 4K: youtu.be/UUYrWUpPQwY
From Boxes to photorealistic Fluid: youtu.be/u83qaxuT6eA
See my published research paper in Microplastics and Nanoplastics:
microplastics.springeropen.com/articles/10.1186/s43591-021-00018-8
The large simulation domain is made possible by FP32/FP16 mixed precision with novel 16-bit number formats:
arxiv.org/pdf/2112.08926.pdf
This is a Volume-of-Fluid lattice Boltzmann method (LBM) simulation of a 7 mm diameter terminal velocity (9.55 m/s) raindrop impact (D3Q19 SRT) at 20° inclination. Velocity, density and fluid mass are solved at 108 Million lattice points (504x504x428) for 13752 time steps, equivalent to 10 milliseconds in real time. The simulation required 12 GB video memory.
For reproducibility: The dimensionless numbers for this setup are Re = 63618, We = 8864, Fr = 36.44, Ca = 0.1393, Bo = 6.674.
The simulation software used is FluidX3D, an OpenCL implementation of the lattice Boltzmann method. FluidX3D runs at peak hardware efficiency on the worlds fastest data-center GPUs (8799/5232 MLUPs/s on the Nvidia A100/V100 @ D3Q19 SRT FP32), on gaming GPUs and CPUs and it even runs my smartphone.
The rendering is done by FluidX3D as well. Simulated light rays from the camera traverse the LBM lattice and check for intersections with the triangles that marching-cubes generates on-the-fly from the isovalues. Triangles never leave registers.
The 3D lattice that the LBM provides 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 - when the lattice is not too large - even run in real time on non-RTX GPUs.
I am the lead developer of FluidX3D. The implementation is detailed in my Master's thesis, which is freely available on ResearchGate:
researchgate.net/publication/349552856_High_Performance_Free_Surface_LBM_on_GPUs
The Volume-of-Fluid extension is detailed in this research paper:
mdpi.com/2079-3197/10/2/21
Timestamps:
00:00 Intro
00:02 Video Comparison
00:12 Freeze Frame
00:17 Outro
#FluidX3D #OpenCL #Raytracing #GPU #LBM
Music: admo - On The Nightway




![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)





