Скорость ComputeShader против PixelShader - PullRequest
1 голос
/ 04 марта 2011

У меня вопрос по поводу ComputeShader по сравнению с PixelShader. Я хочу выполнить некоторую обработку в буфере, и это возможно как с пиксельным шейдером, так и с вычислительным шейдером, и теперь я задаюсь вопросом, есть ли какое-либо преимущество перед любым из них, особенно когда речь идет о скорости. У меня были проблемы с тем, чтобы использовать только 8-битные значения, но я должен иметь возможность обойти это.

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

Но мне не удалось найти какие-либо тесты для сравнения шейдеров, и теперь мне интересно, к какому из них я должен стремиться. Единственная цель - скорость.

1 Ответ

2 голосов
/ 15 апреля 2011

Насколько я понимаю, шейдеры - это шейдеры в том смысле, что они просто программы, запускаемые множеством потоков данных.Следовательно, в общем случае не должно быть различий с точки зрения вычислительной мощности / скорости при выполнении вычислений в пиксельном шейдере, в отличие от вычислительного шейдера. Однако ..

Чтобы выполнить вычисления на пиксельном шейдере, вы должны массировать ваши данные так, чтобы они выглядели как данные изображения, это означает, что вы должны сначала нарисовать квад, а такжеваш вывод должен иметь «форму» пикселя (в основном float4).Затем эти данные должны быть интерпретированы вашим приложением во что-то полезное

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

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

...