Унифицированные массивы или текстуры для передачи данных фрагментным шейдерам? - PullRequest
0 голосов
/ 21 октября 2011

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

1 Ответ

2 голосов
/ 21 октября 2011

Текстуры - это способ получить огромное количество данных с плавающей запятой.

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

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

http://developer.download.nvidia.com/GPU_Programming_Guide/GPU_Programming_Guide.pdf

...