Благодаря наличию вычислительных шейдеров как для DirectX, так и для OpenGL теперь можно реализовать множество алгоритмов без прохождения процесса растрирования и вместо этого использовать вычисления общего назначения на графическом процессоре для решения проблемы.
Для некоторых алгоритмов это кажется интуитивным каноническим решением, потому что они изначально не основаны на растеризации, а шейдеры на основе растеризации кажутся обходным решением для использования мощности графического процессора (простой пример: создание текстуры шума. Здесь не нужно растеризовать квадраторы). ).
Учитывая алгоритм, который может быть реализован обоими способами, есть ли общие (потенциальные) преимущества в производительности по сравнению с использованием вычислительных шейдеров по сравнению с обычным маршрутом? Есть ли недостатки, на которые мы должны обратить внимание (например, есть ли какие-то необычные издержки при переключении с / на вычисление шейдеров во время выполнения)?
Есть ли другие преимущества или недостатки, которые следует учитывать при выборе между ними?
источник
Ответы:
Нет правильного ответа, если вы собираетесь напрямую воспользоваться преимуществами compute shadrs / GPGPU appraoch, это сильно зависит от типа алгоритма, который вы реализуете, compute shaders и CUDA / OpenCL - более обобщенный подход для преодоления некоторых ограничений этого старого хакерского языка. Самые важные преимущества, которые вы получите:
На мой взгляд , если вы хотите пойти по пути вычислительных шейдеров, хотя некоторые алгоритмы могут быть более подходящими, есть некоторые соображения, которые вы должны принять во внимание:
Тем не менее, я уверен, что это здорово для будущего и будет отличным опытом обучения. Удачи!
источник