No More Shading Languages: Compiling C++ to Vulkan Shaders
dc.contributor.author | Devillers, Hugo | en_US |
dc.contributor.author | Kurtenacker, Matthias | en_US |
dc.contributor.author | Membarth, Richard | en_US |
dc.contributor.author | Lemme, Stefan | en_US |
dc.contributor.author | Kenzel, Michael | en_US |
dc.contributor.author | Yazici, Ömercan | en_US |
dc.contributor.author | Slusallek, Philipp | en_US |
dc.contributor.editor | Knoll, Aaron | en_US |
dc.contributor.editor | Peters, Christoph | en_US |
dc.date.accessioned | 2025-06-20T07:25:25Z | |
dc.date.available | 2025-06-20T07:25:25Z | |
dc.date.issued | 2025 | |
dc.description.abstract | Graphics APIs have traditionally relied on shading languages, however, these languages have a number of fundamental defects and limitations. By contrast, GPU compute platforms offer powerful, feature-rich languages suitable for heterogeneous compute. We propose reframing shading languages as embedded domain-specific languages, layered on top of a more general language like C++, doing away with traditional limitations on pointers, functions, and recursion, to the benefit of programmability. This represents a significant compilation challenge because the limitations of shaders are reflected in their lower-level representations. We present the Vcc compiler, which allows conventional C and C++ code to run as Vulkan shaders. Our compiler is complemented by a simple shading library and exposes GPU particulars as intrinsics and annotations. We evaluate the performance of our compiler using a selection of benchmarks, including a real-time path tracer, achieving competitive performance compared to their native CUDA counterparts. | en_US |
dc.description.sectionheaders | Graphics Simulators, Systems and Compilers | |
dc.description.seriesinformation | High-Performance Graphics - Symposium Papers | |
dc.identifier.doi | 10.2312/hpg.20251167 | |
dc.identifier.isbn | 978-3-03868-291-2 | |
dc.identifier.issn | 2079-8687 | |
dc.identifier.pages | 10 pages | |
dc.identifier.uri | https://doi.org/10.2312/hpg.20251167 | |
dc.identifier.uri | https://diglib.eg.org/handle/10.2312/hpg20251167 | |
dc.publisher | The Eurographics Association | en_US |
dc.rights | Attribution 4.0 International License | |
dc.rights.uri | https://creativecommons.org/licenses/by/4.0/ | |
dc.subject | CCS Concepts: Software and its engineering → Compilers; Computing methodologies → Rendering; Ray tracing | |
dc.subject | Software and its engineering → Compilers | |
dc.subject | Computing methodologies → Rendering | |
dc.subject | Ray tracing | |
dc.title | No More Shading Languages: Compiling C++ to Vulkan Shaders | en_US |