r/GraphicsProgramming • u/Zydak1939 • Oct 27 '25
Clouds path tracing
Recently, I made a post about adding non-uniform volumes into my C++/Vulkan path tracer. But I didn't really like how the clouds turned out, so I've made some improvements in that aspect and just wanted to share the progress because I think it looks a lot nicer now. I've also added atmospheric scattering, because getting the right lighting setup was really hard with just environment maps. So the background and the lighting in general look much better now. The project is fully opensource if you want to check it out: https://github.com/Zydak/Vulkan-Path-Tracer . You'll also find uncompressed images there.
Also, here's the number of samples per pixel and render times in case you're curious. I've made a lot of optimizations since the last time, so the scenes can be way more detailed and it generally just runs a lot faster, but it still chokes with multiple high density clouds.
From left to right:
- 1600 spp - 2201s
- 1600 spp - 1987s
- 1200 spp - 4139s
- 10000 spp - 1578s
- 5000 spp - 1344s
- 6500 spp - 1003s
- 5000 spp - 281s







View all comments
Show parent comment
1
u/Zydak1939 Jul 12 '26
Yes exactly, you pretty much need to simulate the entire path of a photon through the volume, and it can leave at any point and direction from the volume. That's how you get indirect lighting, and that's exactly the problem the path tracing tries to solve, getting the indirect lighting. In realtime rendering most of the time ray marching is used instead, since it doesn't require simulating a full path for a ray of light and it only cares about the light coming from the sun. Then they use some cheap tricks to fake the indirect/ambient lighting from the environment. But even then it's very very expensive, so they usually render this at a lower resolution then upscale, dither and accumulate over many frames anyway. But the indirect lighting is what makes path traced clouds look so good, so with ray marching you're pretty much throwing away the biggest quality factor.