Uber shader
Un unico grande shader che racchiude ogni funzionalità dei materiali dietro switch del preprocessore, branch o permutazioni statiche, invece di uno shader per ogni effetto.
Invece di scrivere a mano decine di shader piccoli, gli sviluppatori ne scrivono uno «uber» con tutti i percorsi (normal mapping, strati di dettaglio, emissivo, nebbia), attivati da #ifdef e flag uniform. In fase di build la toolchain genera le permutazioni statiche necessarie (le shader variant); a runtime il branching dinamico può scegliere i percorsi sulla GPU.
Il vantaggio è la manutenibilità: un'unica fonte di verità e un'illuminazione coerente tra i materiali. Il prezzo è l'esplosione combinatoria: N funzionalità indipendenti implicano fino a 2^N varianti, con tempi di compilazione e memoria alle stelle (lo stripping delle varianti di Unity esiste proprio per domarla). L'hardware moderno ha reso il branching dinamico abbastanza economico da spingere alcuni motori a ramificare a runtime.