The raspberry pi GPU is a SIMD device (single instruction multiple data). When it is executing a fragment shader it is trying to run the same code for multiple pixels at the same time. When it encounters an if statement, potentially the if statement could be true for some pixels and false for others...