Hello everyone,
Our group are trying to make the best of OptiX engine to accelerate ray-tracing in Monte Carlo simulation of photons in turbid media. But we are not sure of its feasibility yet.
Here is the story. In turbid media (represented by a volumetric domain, using either voxel or mesh), each photon independently travels in a stochastic manner. Basically, the trajectory of each photon could be segmented into pieces, the length and direction of each segment is determined by a stochastic process. Simultaneously, along the path the energy of the photon is absorbed and deposited locally in the corresponding voxels/meshes. Therefore, this ray-tracing process is parallelizible and we have already implemented it using CUDA and achieved significant speed improvement. Our code and software is available here: http://mcx.space/.
After a quick look at OptiX (paper published by Nvidia and Williams College, July 2010), I found a few differences,
- In OptiX, the scene is represented using hierarchy nodes. I was wondering how to use it to deal with volumetric domain (voxel/mesh) with heterogeneity of optical properties. (This heterogeneity will significantly affect both the stochastic process and energy deposit calculations in the voxel/mesh where the ray just traversed.)
- In OptiX, the rays bounce back and forth between surfaces of different objects, while in Monte Carlo, not only the reflection/transmission is happening on the boundary between different media, but also the ray could be scattered anywhere inside the volume(nature of stochastic process). We do have heard that a subsurface retracing is introduced from the most recent GTC. Still, we are not sure if this stochastic process is feasible using OptiX and are wondering how much improvement we could get.
If you have any experience using this technique in Monte Carlo simulations and are willing to share your code with us, please do not hesitate to contact me. Many thanks!
Also, any general idea to clear this up would be much appreciated!