SLANG.D: Fast, Modular and Differentiable Shader Programming
SLANG.D: Fast, Modular and Differentiable Shader Programming
复制标题
DOI:
10.1145/3618353
复制
发表时间:
2023-12
期刊:
影响因子:
--
通讯作者:
Sai Praveen Bangaru;Lifan Wu;Tzu-Mao Li;Jacob Munkberg;Gilbert Bernstein;Jonathan Ragan-Kelley;Frédo Durand;Aaron E. Lefohn;Yong He
中科院分区:
文献类型:
--
作者:
Sai Praveen Bangaru;Lifan Wu;Tzu-Mao Li;Jacob Munkberg;Gilbert Bernstein;Jonathan Ragan-Kelley;Frédo Durand;Aaron E. Lefohn;Yong He
We introduce SLANG.D, an extension to the Slang shading language that incorporates first-class automatic differentiation support. The new shading language allows us to transform a Direct3D-based path tracer to be fully differentiable with minor modifications to existing code. SLANG.D enables a shared ecosystem between machine learning frameworks and pre-existing graphics hardware API-based rendering systems, promoting the interchange of components and ideas across these two domains. Our contributions include a differentiable type system designed to ensure type safety and semantic clarity in codebases that blend differentiable and non-differentiable code, language primitives that automatically generate both forward and reverse gradient propagation methods, and a compiler architecture that generates efficient derivative propagation shader code for graphics pipelines. Our compiler supports differentiating code that involves arbitrary control-flow, dynamic dispatch, generics and higher-order differentiation, while providing developers flexible control of checkpointing and gradient aggregation strategies for best performance. Our system allows us to differentiate an existing real-time path tracer, Falcor, with minimal change to its shader code. We show that the compiler-generated derivative kernels perform as efficiently as handwritten ones. In several benchmarks, the SLANG.D code achieves significant speedup when compared to prior automatic differentiation systems.