No More Shading Languages: Compiling C++ to Vulkan Shaders

dc.contributor.authorDevillers, Hugoen_US
dc.contributor.authorKurtenacker, Matthiasen_US
dc.contributor.authorMembarth, Richarden_US
dc.contributor.authorLemme, Stefanen_US
dc.contributor.authorKenzel, Michaelen_US
dc.contributor.authorYazici, Ömercanen_US
dc.contributor.authorSlusallek, Philippen_US
dc.contributor.editorKnoll, Aaronen_US
dc.contributor.editorPeters, Christophen_US
dc.date.accessioned2025-06-20T07:25:25Z
dc.date.available2025-06-20T07:25:25Z
dc.date.issued2025
dc.description.abstractGraphics 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.sectionheadersGraphics Simulators, Systems and Compilers
dc.description.seriesinformationHigh-Performance Graphics - Symposium Papers
dc.identifier.doi10.2312/hpg.20251167
dc.identifier.isbn978-3-03868-291-2
dc.identifier.issn2079-8687
dc.identifier.pages10 pages
dc.identifier.urihttps://doi.org/10.2312/hpg.20251167
dc.identifier.urihttps://diglib.eg.org/handle/10.2312/hpg20251167
dc.publisherThe Eurographics Associationen_US
dc.rightsAttribution 4.0 International License
dc.rights.urihttps://creativecommons.org/licenses/by/4.0/
dc.subjectCCS Concepts: Software and its engineering → Compilers; Computing methodologies → Rendering; Ray tracing
dc.subjectSoftware and its engineering → Compilers
dc.subjectComputing methodologies → Rendering
dc.subjectRay tracing
dc.titleNo More Shading Languages: Compiling C++ to Vulkan Shadersen_US
Files
Original bundle
Now showing 1 - 2 of 2
Loading...
Thumbnail Image
Name:
hpg20251167.pdf
Size:
6.82 MB
Format:
Adobe Portable Document Format
Loading...
Thumbnail Image
Name:
paper1029_mm1.pdf
Size:
11.28 KB
Format:
Adobe Portable Document Format