На самом деле проблема не столько в производительности, сколько в том, что нужно взять столько точек привязки. Во многих реализациях допускается только 16 точек привязки текстуры (для каждой стадии шейдера), поэтому вы использовали бы половину из них только для теней. Даже если они не используются, они все равно занимают эти ресурсы.
Было бы лучше использовать сэмплер карты теней текстуры 2D-массива (sampler2DArrayShadow
). У вас все равно будет униформа, сообщающая, сколько слоев массива заполнено полезными данными.
Кроме того, таким образом вы не жестко запрограммируете ограничение в своем шейдере. Поэтому, если вы решите, что верхний предел карт теней составляет всего 6 или его следует увеличить до 10, вам не нужно менять код шейдера.
Недостатком, конечно, является то, что все слои текстуры массива должны быть одинакового размера. Поэтому, если вам нужно, чтобы некоторые из ваших карт теней были меньше, вы не сможете этого сделать.