Какова самая быстрая память записи в шейдерах? - PullRequest
0 голосов
/ 11 июня 2018

Варианты локального хранения информации, которая будет отброшена после выполнения программы шейдинга, включают:

  • C, как объявления памяти: пример, int array[100]; в глобальной области видимости.
  • Текстуры
  • SSBOs

Могут быть и другие, о которых я не подозреваю.

РЕДАКТИРОВАТЬ:

Каждый шейдер работает со своими собственными данными, это на обычном конвейере рендеринга.

Какие из них обеспечат самый быстрый доступ, учитывая, что данныебудет сброшен после завершения программы.И каждый фрагмент будет независим от любого другого фрагмента (им не нужно обмениваться данными).

1 Ответ

0 голосов
/ 11 июня 2018

Если объявленные вами массивы не слишком велики, локальные или глобальные переменные (подобные C) в шейдере будут самыми быстрыми.Эти переменные хранятся в регистрах или в памяти, которая находится ближе (так быстрее) к шейдерному блоку.

Все другие упомянутые вами опции (текстуры и SSBO) используют более медленную память.Они предназначены для данных, которые могут быть видны различным шейдерам или вызовам шейдеров.Если данные выполнения, с которыми вы работаете, слишком велики для того, чтобы поместиться в обычную переменную, они могут обеспечить запасное «пустое место».Хотя ожидайте гораздо более медленной производительности.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...