Это очень странно. Скорее всего, у вас проблемы с драйверами. Я запустил включенный код шейдера на моем Nvidia 540M под Windows, и позволил ему работать в цикле. В этом цикле я однажды вызвал шейдерную программу и измерил время (также я проверил с обратной связью преобразования, правильно ли работает шейдер). Большинство циклов заканчивались в течение 2-3 миллисекунд, с некоторыми пиками в 25 мс. Однако удаление идентификатора const
не повлияло на производительность. Это довольно маленькие значения, которые можно измерить, но, по вашему описанию, показатель производительности const
должен наблюдаться даже здесь.
#version 150
const int permutations[256] = int[256](
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
...
246, 247, 248, 249, 250, 251, 252, 253, 254, 255
);
flat out int num1[32];
void main(){
for(int i = 0; i < 32; i++){
num1[i] = (permutations[2*i]+permutations[2*i+1])*(permutations[2*i+2]+permutations[2*i+3]);
}
}
Возможно, если вы не возражаете, я мог бы попытаться запустить вашу программу на моем оборудовании, но ее нужно будет скомпилировать для Windows, и, пожалуйста, включите все динамические библиотеки.