first of here is the minimal example that this is about: https://github.com/TheJhonny007/TextureTracerDebug
The shader in question is in the resources folder. It takes an SSBO with photons and traces them through a grid. In each grid cell a photon hits it accumulates the intensity the photon has at a specific wavelength.
My problem with this shader is, that it does run perfectly for 100,000 photons, but doesn’t produce a result for 1,000,000 photons.
I tested it on a machine with SUSE Linux Enterprise 12 64 Bit, an NVIDIA Quadro P6000 and an Intel® Xeon® CPU E5-2690 v4. I also have 132 GB of RAM.
Things I tried:
- Memory usage:
Max allowd SSBO size: 2.00 GB
Actually used SSBO size:
Grid 1.50 GB
Photons 0.02 GB
None of my SSBOs are larger than the allowed size. So it isn’t an SSBO memory problem.
Used UBO size: 8 KB -> lower than the 16 KB minimum and therefore not an UBO issue.
- Changing code:
When removing some logic it works. See lines 113 and 140.
Why is that? I can’t see any logic error. Also it shouldn’t be a logic error since the number of photons is also relevant for success…
If you need more info please ask. I am really desperate here :(
If you want to compile the program you need GLUT, GLEW and GLM. You may need to adjust the CMAKE file a little bit.
I print the resulting grid to console. With 100’000 photons I get a result with photons starting at around line 255, where as with 1’000’000 photons the grid is empty.