New preprint: raytracing hardware (RT-core) accelerated MMC

12 views
Skip to first unread message

Qianqian Fang

unread,
Dec 2, 2025, 12:40:04 PM (9 days ago) Dec 2
to mcx-users, mmc-...@googlegroups.com

hi everyone,

I mentioned about a new MMC that my students had been previously working on - I am excited to let you know that a preprint describing this work is now available on arxiv:

https://arxiv.org/abs/2511.22779

check out my below post for some details

https://www.linkedin.com/feed/update/urn:li:activity:7401408388875628544/


The algorithm is called RT-MMC. Differing from our tetrahedral-mesh based MMC, RT-MMC is a triangular-mesh based MC and can take advantage the modern GPU graphics ray-tracing pipelines and ray-tracing hardware (RT-cores).

RT-MMC is currently implemented using NVIDIA OptiX raytracing framework (which is built on top of CUDA), however, we mapped all photon transport computation to event-based raytracing pipelines (an abstraction that applies to all modern raytracing libraries), making this work easy to be extended to many other emerging computer graphics raytracing frameworks, including DirectX, Vulcan and Metal.

On GPUs with RT hardware, RT-MMC showed 1.5x to 4.5x speed acceleration across a range of benchmarks compared to our OpenCL based MMC, which is quite significant.


I have merged the RT-MMC code to mmc's github repository, currently under the "optix_single_as_arbitrary_sources" branch

https://github.com/fangq/mmc/tree/optix_single_as_arbitrary_sources

to compile, you need to have CUDA and OptiX (a header-only library) installed, and run "make optix" for building a binary, or "make optixmex" for matlab mex files. We don't have makefiles for building optix-enabled pmmc yet.

once compiled, you can run the RT-MMC based simulations (need NVIDIA GPUs, without RT-core is OK) using --compute optix or cfg.compute='optix'. The binary supports 4 compute backends simultaneously: sse, opencl, cuda and optix.

A word of warning: 

the code is a technical preview and is still unstable. While the core is solid and validated, the optix backend does not have all the advanced features as sse/opencl/cuda backends. It does not output detected photon/trajectory/diffuse reflectance/photon replay/photon sharing etc. For sources, it supports pencil/disk/gaussian/zgaussian/isotropic/cone/arcsine/line/slit, but no pattern, fourier, pattern3d support yet. For compatibility, users still need to input a tetrahedral mesh, even though only the surfaces are extracted and passed to RT-MMC. Clearly, more work will be needed to port the full set of functionalities from standard mmc to the optix backend.

Qianqian

rtmmc_diagram.jpg
Reply all
Reply to author
Forward
0 new messages