>>314061238
Laymen explanation with limited understanding, but shaders are programs that can be run on GPUs instead of CPUs. Since GPUs can run lots of these programs at once, you can process lots of pixels quickly. The trade off is that GPUs aren't as flexible as CPUs.
Because of this limitation, it's a lot easier and to write and faster to run a specific shader for each material than a generalized shader that can render every material you want to use, the way you want to display it.
One of the things that GPUs do much worse is branching. If a single thread in a GPU gets given an instruction like "if (x)", it's flexible enough to determine what x is and only calculate the result of that if statement with that variable. GPUs are bad at this. They tend to go "Ok, what's the range of x? It can be 1-10? Ok, I'll work out the result of if(1), if(2), if(3), if(4) etc" and only then determine what x actually was.
Why not make GPUs more flexible? Because then the GPU cores would require more transistors, and that runs into size, power and heat limitations. That's why a CPU might have 8 cores, while a GPU could have 2000+ "cores" (shader processors).