В зависимости от приложения, наиболее важным фактором, вероятно, будет то, что вы не хотите иметь ситуацию блокировки, когда текущему кадру нужен материал, который использует незагруженный шейдер, и вы должны перезагрузить / скомпилировать его, прежде чем кадр сможет продолжить рендеринг. , следовательно, блокирует рендеринг и, возможно, вызывает сбой в частоте кадров. Если вы можете избежать этого и предварительно перезагрузить шейдеры непосредственно перед тем, как они понадобятся, тогда все должно быть в порядке.
Но я бы сначала выполнил некоторое профилирование памяти, чтобы посмотреть, сколько памяти занимают шейдеры - мне кажется, что это микрооптимизация (если только у вас не слишком много загруженных шейдеров). Я думаю, вы бы сэкономили гораздо больше памяти, сосредоточившись на текстурах.