{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,3]],"date-time":"2026-07-03T19:32:30Z","timestamp":1783107150624,"version":"3.54.6"},"reference-count":34,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2019,7,12]],"date-time":"2019-07-12T00:00:00Z","timestamp":1562889600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100002347","name":"Bundesministerium f\u00fcr Bildung und Forschung","doi-asserted-by":"crossref","award":["Metacca, ProThOS"],"award-info":[{"award-number":["Metacca, ProThOS"]}],"id":[{"id":"10.13039\/501100002347","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100005690","name":"Universit\u00e4t des Saarlandes","doi-asserted-by":"crossref","award":["MMCI, IVCI"],"award-info":[{"award-number":["MMCI, IVCI"]}],"id":[{"id":"10.13039\/501100005690","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Graph."],"published-print":{"date-parts":[[2019,8,31]]},"abstract":"<jats:p>Monte-Carlo Renderers must generate many color samples to produce a noise-free image, and for each of those, they must evaluate complex mathematical models representing the appearance of the objects in the scene. These models are usually in the form of shaders: Small programs that are executed during rendering in order to compute a value for the current sample.<\/jats:p>\n          <jats:p>Renderers often compile and optimize shaders just before rendering, taking advantage of the knowledge of the scene. In principle, the entire renderer could benefit from a-priori code generation. For instance, scheduling can take advantage of the knowledge of the scene in order to maximize hardware usage. However, writing such a configurable renderer eventually means writing a compiler that translates a scene description into machine code.<\/jats:p>\n          <jats:p>\n            In this paper, we present a framework that allows generating entire renderers for CPUs and GPUs without having to write a dedicated compiler: First, we provide a rendering library in a functional\/imperative language that elegantly abstracts the individual rendering concepts using higher-order functions. Second, we use\n            <jats:italic>partial evaluation<\/jats:italic>\n            to combine and specialize the individual components of a renderer according to a particular scene.\n          <\/jats:p>\n          <jats:p>Our results show that the renderers we generate outperform equivalent high-performance implementations written with state-of-the-art ray tracing libraries on the CPU and GPU.<\/jats:p>","DOI":"10.1145\/3306346.3322955","type":"journal-article","created":{"date-parts":[[2019,7,12]],"date-time":"2019-07-12T19:04:08Z","timestamp":1562958248000},"page":"1-12","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":15,"title":["Rodent"],"prefix":"10.1145","volume":"38","author":[{"given":"Ars\u00e8ne","family":"P\u00e9rard-Gayot","sequence":"first","affiliation":[{"name":"Saarland University, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Richard","family":"Membarth","sequence":"additional","affiliation":[{"name":"Saarland University, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Roland","family":"Lei\u00dfa","sequence":"additional","affiliation":[{"name":"Saarland University, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Sebastian","family":"Hack","sequence":"additional","affiliation":[{"name":"Saarland University, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Philipp","family":"Slusallek","sequence":"additional","affiliation":[{"name":"Saarland University, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2019,7,12]]},"reference":[{"key":"e_1_2_2_1_1","volume-title":"Proceedings of High Performance Graphics. Eurographics Association, 119--128","author":"\u00c1fra Attila T.","year":"2016","unstructured":"Attila T. \u00c1fra , Carsten Benthin , Ingo Wald , and Jacob Munkberg . 2016 . Local Shading Coherence Extraction for SIMD-efficient Path Tracing on CPUs . In Proceedings of High Performance Graphics. Eurographics Association, 119--128 . Attila T. \u00c1fra, Carsten Benthin, Ingo Wald, and Jacob Munkberg. 2016. Local Shading Coherence Extraction for SIMD-efficient Path Tracing on CPUs. In Proceedings of High Performance Graphics. Eurographics Association, 119--128."},{"key":"e_1_2_2_4_1","unstructured":"Benedikt Bitterli. 2016. Rendering resources. https:\/\/benedikt-bitterli.me\/resources\/  Benedikt Bitterli. 2016. Rendering resources. https:\/\/benedikt-bitterli.me\/resources\/"},{"key":"e_1_2_2_5_1","volume-title":"5th Asian Symposium, APLAS 2007, Singapore, November 29-December 1, 2007, Proceedings. 222--238","author":"Carette Jacques","year":"2007","unstructured":"Jacques Carette , Oleg Kiselyov , and Chung-chieh Shan. 2007 . Finally Tagless, Partially Evaluated. In Programming Languages and Systems , 5th Asian Symposium, APLAS 2007, Singapore, November 29-December 1, 2007, Proceedings. 222--238 . Jacques Carette, Oleg Kiselyov, and Chung-chieh Shan. 2007. Finally Tagless, Partially Evaluated. In Programming Languages and Systems, 5th Asian Symposium, APLAS 2007, Singapore, November 29-December 1, 2007, Proceedings. 222--238."},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.5555\/645387.651549"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1109\/2945.998664"},{"key":"e_1_2_2_8_1","unstructured":"Philip Dutre Paul Heckbert Vincent Ma Fabio Pellacini Robert Porschka Mahesh Ramasubramanian Cyril Soler and Greg Ward. 2001. Global Illumination Compendium.  Philip Dutre Paul Heckbert Vincent Ma Fabio Pellacini Robert Porschka Mahesh Ramasubramanian Cyril Soler and Greg Ward. 2001. Global Illumination Compendium."},{"key":"e_1_2_2_9_1","volume-title":"Parital Computation of Programs. In RIMS Symposium on Software Science and Engineering","author":"Futamura Yoshihiko","year":"1982","unstructured":"Yoshihiko Futamura . 1982 . Parital Computation of Programs. In RIMS Symposium on Software Science and Engineering , Kyoto, Japan , 1982, Proceedings. 1--35. Yoshihiko Futamura. 1982. Parital Computation of Programs. In RIMS Symposium on Software Science and Engineering, Kyoto, Japan, 1982, Proceedings. 1--35."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/RT.2008.4634631"},{"key":"e_1_2_2_11_1","unstructured":"Andrew S. Glassner (Ed.). 1989. An Introduction to Ray Tracing. Academic Press Ltd. London UK UK.   Andrew S. Glassner (Ed.). 1989. An Introduction to Ray Tracing. Academic Press Ltd. London UK UK."},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/218380.218470"},{"key":"e_1_2_2_13_1","volume-title":"Elements of Software Science (Operating and Programming Systems Series)","author":"Halstead Maurice H.","unstructured":"Maurice H. Halstead . 1977. Elements of Software Science (Operating and Programming Systems Series) . Elsevier Science Inc ., New York, NY, USA. Maurice H. Halstead. 1977. Elements of Software Science (Operating and Programming Systems Series). Elsevier Science Inc., New York, NY, USA."},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/3197517.3201380"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/243439.243447"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/15886.15902"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2492045.2492060"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276489"},{"key":"e_1_2_2_19_1","volume-title":"Shader Metaprogramming. In Proceedings of the ACM SIGGRAPH\/EUROGRAPHICS Conference on Graphics Hardware (HWWS '02)","author":"McCool Michael D.","unstructured":"Michael D. McCool , Zheng Qin , and Tiberiu S. Popa . 2002 . Shader Metaprogramming. In Proceedings of the ACM SIGGRAPH\/EUROGRAPHICS Conference on Graphics Hardware (HWWS '02) . Eurographics Association, Aire-la-Ville, Switzerland, Switzerland, 57--68. Michael D. McCool, Zheng Qin, and Tiberiu S. Popa. 2002. Shader Metaprogramming. In Proceedings of the ACM SIGGRAPH\/EUROGRAPHICS Conference on Graphics Hardware (HWWS '02). Eurographics Association, Aire-la-Ville, Switzerland, Switzerland, 57--68."},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3192366.3192413"},{"key":"e_1_2_2_21_1","unstructured":"NVIDIA. 2019. CUDA Toolkit Documentation. http:\/\/docs.nvidia.com\/cuda\/cuda-c-programming-guide\/index.html visited 10\/01\/19.  NVIDIA. 2019. CUDA Toolkit Documentation. http:\/\/docs.nvidia.com\/cuda\/cuda-c-programming-guide\/index.html visited 10\/01\/19."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1778765.1778803"},{"key":"e_1_2_2_23_1","volume-title":"Mark","author":"Pharr Matt","year":"2012","unstructured":"Matt Pharr and William R . Mark . 2012 . ispc: A SPMD Compiler for High-Performance CPU Programming. In 2012 Innovative Parallel Computing (InPar). IEEE , 1--13. Matt Pharr and William R. Mark. 2012. ispc: A SPMD Compiler for High-Performance CPU Programming. In 2012 Innovative Parallel Computing (InPar). IEEE, 1--13."},{"key":"e_1_2_2_24_1","unstructured":"Pixar 1988. RenderMan Interface Specification. Pixar. version 3.0.  Pixar 1988. RenderMan Interface Specification. Pixar. version 3.0."},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/3136040.3136044"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2499370.2462176"},{"key":"e_1_2_2_27_1","unstructured":"James Reinders. 2007. Intel Threading Building Blocks - Outfitting C++ for Multi-Core Processor Parallelism. O'Reilly. http:\/\/www.oreilly.com\/catalog\/9780596514808\/index.html   James Reinders. 2007. Intel Threading Building Blocks - Outfitting C++ for Multi-Core Processor Parallelism. O'Reilly. http:\/\/www.oreilly.com\/catalog\/9780596514808\/index.html"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/2814204.2814220"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/2945.468387"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1111\/cgf.12473"},{"key":"e_1_2_2_31_1","unstructured":"Sony Pictures Imageworks 2017. Open Shading Language Specification. Sony Pictures Imageworks. version 1.9.  Sony Pictures Imageworks 2017. Open Shading Language Specification. Sony Pictures Imageworks. version 1.9."},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/218380.218498"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2601097.2601199"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/358876.358882"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1109\/SEARIS41720.2017.9183547"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276491"}],"container-title":["ACM Transactions on Graphics"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3306346.3322955","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3306346.3322955","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T00:25:44Z","timestamp":1750206344000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3306346.3322955"}},"subtitle":["generating renderers without writing a generator"],"short-title":[],"issued":{"date-parts":[[2019,7,12]]},"references-count":34,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2019,8,31]]}},"alternative-id":["10.1145\/3306346.3322955"],"URL":"https:\/\/doi.org\/10.1145\/3306346.3322955","relation":{},"ISSN":["0730-0301","1557-7368"],"issn-type":[{"value":"0730-0301","type":"print"},{"value":"1557-7368","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,7,12]]},"assertion":[{"value":"2019-07-12","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}