Один универсальный шейдер или несколько узконаправленных?

Здравствуйте. В процессе освоения DirectX (использую 11-ю версию, но думаю это значения не имеет) у меня появился следующий вопрос. У меня имеется несколько текстурированных объектов. Для отображения одних нужна только текстура, для других требуется прозрачность, третьим цвет вертексов, а некоторым всё вместе. Вопрос заключается в том, стоит ли писать для каждого типа объектов свой узконаправленный шейдер, или лучше использовать один универсальный, но выполняющий бесполезную работу для некоторых типов объектов (создающий нулевую прозрачность, или умножающий на белый цвет). Сложности добавляет то, что рисую 2D с выключенным z-буфером, следовательно, порядок отображения определяется не используемыми шейдерами, а необходимым порядком наложения слоёв. То есть, при использовании нескольких узконаправленных шейдеров могут возникать ситуации, когда я использую шейдер поддерживающий цвет вертексов, потом шейдером с прозрачностью, затем снова с цветом и т.д. Иначе говоря количество смен шейдеров за кадр может доходить до нескольких десятков, при использовании всего 4-х шейдеров.

По сути, вопрос звучит так: "Что выгоднее: сменить несколько десятков раз используемый шейдер, или совершить пару лишних умножений для миллиона-другого пикселей (излишки универсального шейдера содержатся в пиксельной его части

)?"

Буду особо благодарен за ответ на вопрос: почему?