implemented fail safe automatic shader reload
failed shader compile will not destroy the program state but just use the one before