“Photon: A Modular, Research-Oriented Rendering System” by Chang and Ouhyoung

  • ©Tzu-Chieh Chang and Ming Ouhyoung

  • ©Tzu-Chieh Chang and Ming Ouhyoung

  • ©Tzu-Chieh Chang and Ming Ouhyoung


Entry Number: 45


    Photon: A Modular, Research-Oriented Rendering System




    To develop a graphics project with ease and confidence, the reliability and extensibility of the underlying framework are essential. While there are existing options, e.g., pbrt-v3 [Pharr et al. 2016] and Mitsuba [Jakob 2010], they either focus on education or not being updated for a long time. We would like to present an alternative solution named Photon. Photon [Chang 2019] is an open-source and cross-platform 1 rendering system that, in its core, is designed with modularity and research in mind. The goal of our system is to provide a set of building blocks to facilitate the implementation of new rendering algorithms, as well as a unified foundation for comparing the performance of different methods. In addition, our system comes with both CLI and GUI applications, and the latter is particularly useful for interactive visualization of the rendering progress. A Blender add-on is also available for content creation and can export 3-D assets to our scene description format. In this article, we first propose a tri-layer software architecture that encapsulates common graphics concepts as independent modules, while maintaining the ability to fine-tune the behavior of each submodule. Secondly, we demonstrate the flexibility of the architecture by implementing several rendering algorithms, then showcasing some useful features. Finally, we conclude with a general comparison between similar systems and planned features for future releases.


    • Laurent Belcour. 2018. Efficient Rendering of Layered Materials using an Atomic Decomposition with Statistical Operators. ACM Transactions on Graphics 37, 4 (2018), 1. https://doi.org/10.1145/3197517.3201289 
    • Benedikt Bitterli. 2016. Tungsten renderer. https://benedikt-bitterli.me/tungsten.html. Tzu-Chieh Chang. 2016–2019. Photon renderer. https://github.com/TzuChieh/Photonv2. 
    • Holger Dammertz, Johannes Hanika, Alexander Keller, and Hendrik P. A. Lensch. 2010. A Hierarchical Automatic Stopping Condition for Monte Carlo Global Illumination. 
    • Toshiya Hachisuka and Henrik Wann Jensen. 2009. Stochastic Progressive Photon Mapping. ACM Trans. Graph. 28, 5, Article 141 (Dec. 2009), 8 pages. https://doi. org/10.1145/1618452.1618487 Toshiya Hachisuka, Shinji Ogaki, and Henrik Wann Jensen. 2008. Progressive Photon Mapping. ACM Trans. Graph. 27, 5, Article 130 (Dec. 2008), 8 pages. https://doi. org/10.1145/1409060.1409083 
    • Wenzel Jakob. 2010. Mitsuba renderer. http://www.mitsuba-renderer.org. 
    • Henrik Wann Jensen. 1996. Global Illumination Using Photon Maps. In Proceedings of the Eurographics Workshop on Rendering Techniques ’96. Springer-Verlag, London, UK, UK, 21–30. http://dl.acm.org/citation.cfm?id=275458.275461 
    • Cao Jiayin. 2016. SORT. https://jerrycao1985.github.io/SORT/. 
    • Matt Pharr, Wenzel Jakob, and Greg Humphreys. 2016. Physically Based Rendering: From Theory to Implementation (3rd ed.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.