вот не надо, фризы присутствуют разово при компиляции шейдера для всяких специфичных текстур и режимов сцены
у шейдерных процов есть особенность - они очень шустро всё считают, но как дело доходит до всяких условий типа if () {} else {} или case - скорость резко улетучивается, по-этому от условий стараются избавляться как только можно, и вместо одного сокмпилированного шейдера с тучей условий компилируют кучку шейдеров из одного исходника в котором вагончик #ifdef .... #endif на все случаи жизни.
сам понимаешь, тупнячком убрать все #ifdef и заменить их на if () {} - ума много не надо и времени тоже, и фризы пропадут сразу же ведь шейдер будет только один, вот только видеокарты стошнит очень сильно в плане скорости от такого кода.