Uber shader
Un único shader grande que compila todas las funciones de material tras conmutadores del preprocesador, ramas o permutaciones estáticas, en lugar de un shader por efecto.
En vez de escribir a mano docenas de shaders pequeños, se escribe un shader «über» que contiene todas las rutas —mapeado de normales, capas de detalle, emisión, niebla— controladas por #ifdef y banderas uniform. En tiempo de compilación la cadena de herramientas genera las permutaciones estáticas (variantes de shader) necesarias; en tiempo de ejecución la ramificación dinámica puede elegir rutas en la GPU.
El atractivo es el mantenimiento: una sola fuente de verdad, iluminación coherente entre materiales. El coste es la explosión combinatoria —N funciones independientes implican hasta 2^N variantes, que disparan tiempos de compilación y memoria (el recorte de variantes de Unity existe justo para domar esto)—. El hardware moderno abarató la ramificación dinámica lo bastante como para que algunos motores ramifiquen en ejecución.