I've decided to take the über shader approach. Due to this, I'm going to have all of my uniforms, attributes and varyings floating around at the top of my shader. I started using #ifdef / #endif preprocessors to check whether all this data needs to be included into the shader or not, but it gets messy quickly and difficult to read. Would it be a bad practice to just remove all of these preprocessors, and have the compiler optimize them out? Shader compilers typically do this anyway, so I would think this would possibly speed up the process since I wouldn't be including all the extra preprocessor text and those checks, right?