Help with Shadow Volume Branch
@mmathai has a branch that implemented shadow volumes and we would love help getting it into in shape for merging. I am happy to help where I can, but I thought someone from VTK-m should take the lead. And, unfortunately, Manish's funding for the rest of the year doesn't align with this task, so he can't dedicate the time to make the necessary changes, but I'm sure he will be available for input or answer any questions.
I believe the current state of the code is working, but the code needs some clean up to go from research-quality to production-quality.
Manish can clarify or correct any details, but I think from a high level the algorithm behaves the following way:
- Before final volume rendering, each rank needs to preprocess data for shadows by doing an initial ray tracing given light position
- In parallel, ranks construct a local, course shadow volume, then MPIAllGather (poor scaling at large scale: num_ranks x resolution), and accumulate alpha along rays for global shadow volume
- Add finally add shadow volume alphas to volume rendering of the data
This works for a single light source. Currently, additional light sources would double execution time for each additional light -- need to do each step for each light.