C++ Compile Time Polymorphism for Ray Tracing (Unknown language)

In: Vision, Modeling & Visualization   ;  129-136  ;  2017

How to get this document?

Download
Commercial Copyright fee: €14.50 Basic fee: €4.00 Total price: €18.50
Academic Copyright fee: €4.50 Basic fee: €2.00 Total price: €6.50

Reducing 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.

Table of contents conference proceedings

The tables of contents are generated automatically and are based on the data records of the individual contributions available in the index of the TIB portal. The display of the Tables of Contents may therefore be incomplete.

1
LiteMaker: Interactive Luminaire Development using Progressive Photon Tracing and Multi-Resolution Upsampling
Krösl, Katharina / Luksch, Christian / Schwärzler, Michael / Wimmer, Michael | 2017
9
Appearance Bending: A Perceptual Editing Paradigm for Data-Driven Material Models
Mylo, Marlon / Giesel, Martin / Zaidi, Qasim / Hullin, Matthias / Klein, Reinhard | 2017
17
Structure-aware Stylization of Mountainous Terrains
Kratt, Julian / Eisenkeil, Ferdinand / Spicker, Marc / Wang, Yunhai / Weiskopf, Daniel / Deussen, Oliver | 2017
29
Visualization of Cardiac Blood Flow Using Anisotropic Ambient Occlusion for Lines
Köhler, Benjamin / Grothoff, Matthias / Gutberlet, Matthias / Preim, Bernhard | 2017
37
Template-Based 3D Non-Rigid Shape Estimation from Monocular Image Sequences
Kausch, Lisa / Hilsmann, Anna / Eisert, Peter | 2017
45
Data Driven Synthesis of Hand Grasps from 3-D Object Models
Majumder, Soumajit / Chen, Haojiong / Yao, Angela | 2017
53
Dense and Scalable Reconstruction from Unstructured Videos with Occlusions
Wei, Jian / Resch, Benjamin / Lensch, Hendrik P. A. | 2017
61
Visualization of Neural Network Predictions for Weather Forecasting
Roesch, Isabelle / Günther, Tobias | 2017
69
Improving Layout Quality by Mixing Treemap-Layouts Based on Data-Change Characteristics
Bethge, Joseph / Hahn, Sebastian / Döllner, Jürgen | 2017
77
User-study Based Optimization of Fast and Accurate Mahalanobis Brushing in Scatterplots
Fan, Chaoran / Hauser, Helwig | 2017
85
Temporal Focus+Context for Clusters in Particle Data
Staib, Joachim / Grottel, Sebastian / Gumhold, Stefan | 2017
95
Finite Time Steady Vector Field Topology - Theoretical Foundation and 3D Case
Friederici, Anke / Günther, Tobias / Rössl, Christian / Theisel, Holger | 2017
103
Interactive Visualization of Gaps and Overlaps for Large and Dynamic Sphere Packings
Gu, Feng / Yang, Zhixing / Kolonko, Michael / Grosch, Thorsten | 2017
111
Compression of Non-Manifold Polygonal Meshes Revisited
Buelow, Max von / Guthe, Stefan / Goesele, Michael | 2017
119
Efficient Lifted Relaxations of the Quadratic Assignment Problem
Burghard, Oliver / Klein, Reinhard | 2017
129
C++ Compile Time Polymorphism for Ray Tracing
Zellmann, Stefan / Lang, Ulrich | 2017
137
Pixel Cache Light Tracing
Jendersie, Johannes / Rohmer, Kai / Brüll, Felix / Grosch, Thorsten | 2017
145
Star Convex Cuts with Encoding Swaps for Fast Whole-Spine Vertebrae Segmentation in MRI
Rak, Marko / Tönnies, Klaus D. | 2017
153
Semantic-Aware Image Smoothing
Li, Weihao / Jafari, Omid Hosseini / Rother, Carsten | 2017
161
Improved Image Classification using Topological Persistence
Dey, Tamal Krishna / Mandal, Sayan / Varcho, William | 2017