Uber shader
A single large shader that compiles every material feature behind preprocessor switches, branches or static permutations, instead of one shader per effect.
Rather than hand-author dozens of small shaders, developers write one "uber" shader containing all paths — normal mapping, detail layers, emissive, fog — gated by #ifdefs and uniform flags. At build time the toolchain generates the static permutations (shader variants) it needs; at runtime dynamic branching can pick paths on the GPU.
The appeal is maintainability: one source of truth, consistent lighting across materials. The cost is combinatorial explosion — N independent features imply up to 2^N variants, exploding compile times and memory (Unity's shader variant stripping exists precisely to tame this). Modern hardware made dynamic branching cheap enough that some engines branch at runtime instead.