Когда следует использовать униформу в шейдерном программировании? - PullRequest
1 голос
/ 12 апреля 2010

В вершинном шейдере я вычисляю вектор, используя только униформу. Следовательно, результат этого вычисления одинаков для всех экземпляров вершинного шейдера. Должен ли я просто сделать этот расчет на процессоре и загрузить его как униформу? Что делать, если у меня есть десять таких расчетов? Если я загружаю таким образом много униформ, разве связь между CPU и GPU будет настолько медленной, что пересчет таких значений в вершинном шейдере будет на самом деле быстрее?

1 Ответ

1 голос
/ 13 апреля 2010

Я на самом деле зависит от соотношения количества форм / вершин. В случае, если вершины больше, чем однородные переменные, вероятно, лучше вычислять униформу на CPU, что является наиболее частым сценарием.

В случае, если значения униформ много, и их вычисления сложны (т.е. обратная матрица), в то время как число вершин мало, может быть лучше отключить загрузку ЦП и выполнить вычисления на GPU.

Пороговое значение отношения определить сложно, так как многие факторы влияют на выполнение шейдера. Обычно лучше вычислять большинство униформ на процессоре, чтобы разгрузить выполнение шейдера.

Примечание: после того, как вы установите одинаковые переменные, шейдерная программа сохраняет их значения до тех пор, пока они не будут повторно связаны.

...