C++ Compile Time Polymorphism for Ray Tracing

dc.contributor.authorZellmann, Stefanen_US
dc.contributor.authorLang, Ulrichen_US
dc.contributor.editorMatthias Hullin and Reinhard Klein and Thomas Schultz and Angela Yaoen_US
dc.date.accessioned2017-09-25T06:55:38Z
dc.date.available2017-09-25T06:55:38Z
dc.date.issued2017
dc.description.abstractReducing the amount of conditional branching instructions in innermost loops is crucial for high performance code on contemporary hardware architectures. In the context of ray tracing algorithms, typical examples for branching in inner loops are the decisions what type of primitive a ray should be tested against for intersection, or which BRDF implementation should be evaluated at a point of intersection. Runtime polymorphism, which is often used in those cases, can lead to highly expressive but poorly performing code. Optimization strategies often involve reduced feature sets (e.g. by simply supporting only a single geometric primitive type), or an upstream sorting step followed by multiple ray tracing kernel executions, which effectively places the branching instruction outside the inner loop. In this paper we propose C++ compile time polymorphism as an alternative optimization strategy that does on its own not reduce branching, but that can be used to write highly expressive code without sacrificing optimization potential such as early binding or inlining of tiny functions. We present an implementation with modern C++ that we integrate into a ray tracing template library. We evaluate our approach on CPU and GPU architectures.en_US
dc.description.sectionheadersAccelerated Rendering
dc.description.seriesinformationVision, Modeling & Visualization
dc.identifier.doi10.2312/vmv.20171268
dc.identifier.isbn978-3-03868-049-9
dc.identifier.pages129-136
dc.identifier.urihttps://doi.org/10.2312/vmv.20171268
dc.identifier.urihttps://diglib.eg.org:443/handle/10.2312/vmv20171268
dc.publisherThe Eurographics Associationen_US
dc.subjectI.3.7 [Computer Graphics]
dc.subjectThree Dimensional Graphics and Realism
dc.subjectRaytracing
dc.titleC++ Compile Time Polymorphism for Ray Tracingen_US
Files
Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
129-136.pdf
Size:
13.03 MB
Format:
Adobe Portable Document Format
Collections