2013-03-03 3 views
1

Должен ли я избегать лишних вычислений в шейдерах в opengl?Сколько работы нужно делать в шейдерах в opengl?

Например: Вещи, которые необходимо рассчитать в каждом кадре, таком как освещение. Должен ли я выполнять вычисления, отправьте результаты в шейдеры, или я просто буду делать вычисления в шейдерах?

+5

Как я помню, что на графическом процессоре должно выполняться все, что можно распараллеливать, что-то последовательное должно выполняться на процессоре. – Patashu

+0

Также учтите, что существует несколько типов шейдеров; Обычно в вершинных шейдерах происходит некоторое освещение, а в результатах используются фрагментарные шейдеры. – Dithermaster

+5

Этот вопрос слишком широк для ответа. Какие вычисления вы делаете, где зависит от того, что именно эти вычисления, какой визуальный эффект делает их в других местах и ​​т. Д. Это не то, на что вы можете дать общую рекомендацию. –

ответ

5

GPU vs CPU - это огромная тема для обсуждения, и, как отмечает @Nicol Bolas, вопрос ищет общее решение, в котором на результат повлияет множество факторов.

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

Вы можете прочитать немного больше о профилировании графических процессоров на NVIDIA и AMD сайтов разработчиков или с помощью функции поиска для GPU профилирование учебники/блог, таких как this.

GPGPU стал основной темой обсуждения в мире параллельного программирования, поскольку графические процессоры были разработаны с учетом параллелизма. Также нередко добавлять несколько графических процессоров в систему, используя такие технологии, как SLI, для дальнейшего распараллеливания обработки. Это один из принципов комментария @ Patashu в пользу параллельной обработки для GPU. Если вам интересно узнать больше, вы можете покопаться на двух наиболее популярных платформах параллельного программирования на базе графического процессора OpenCL и CUDA.

тема также обсуждается немного больше в следующих постах:

Было бы неплохо, чтобы прочитать на GPU gems серия среди других публикаций. Вероятно, вы найдете результаты, которые были у других, с разделением рабочей нагрузки.

Смежные вопросы