I love #vulkan (spir-v) specialization constants! So much better than mashing strings or macroing defines. Just write your ubershader and let the driver fold, prune and unfold producing a fastest smallest program without sweating a brow at optimization.
I.e. a layer of meta-specialization is desirable that produces a uniform struct with some parameters and puts everything else in specialization constants.
Add push constants and embedded constants for high dynamic range of constantness 😅
Although I see a familiar problem where there's a spectrum between fully static and fully dynamic parameters 🤨