added save/load shader functionality with warnings