Разница в производительности между геометрическим шейдером и вершинным шейдером


В настоящее время я рендеринг модели около 1 миллиона вершин. И внутри вершинного шейдера я делаю некоторые сложные вычисления для каждой вершины. Теперь я хотел бы увеличить разрешение модели. У меня есть два вопроса по этому поводу:

  1. целесообразно ли использовать геометрический шейдер для увеличения разрешения до очень больших коэффициентов, таких как 64 раза?
  2. Если я введу геометрический шейдер, мне, возможно, потребуется переместить мои вычисления из вершинного шейдера в геометрический шейдер. Делает ли это работа в шейдере verterx такая же, как и в шейдере geometry, с точки зрения производительности.
1 7

1 ответ:

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

Абсолютно нет. Хотя GS Могут усиливать геометрию и выполнять тесселяцию, это не совсем то, для чего они предназначены. Их основные цели-обработка данных обратной связи преобразования (особенно аппаратных средств, которые могут обрабатывать многопоточный вывод) и многоуровневый рендеринг.

Если я введу геометрический шейдер, мне, возможно, потребуется переместить мои вычисления из вершины шейдер к шейдеру геометрии. С точки зрения производительности выполнение операции в шейдере verterx-это то же самое, что и в шейдере geometry.

Делайте так мало работы в GS, как это разумно. GS происходит после кэша post-T&L, и вы хотите извлечь из этого как можно больше. Поэтому выполняйте столько реальной работы по преобразованию, сколько это целесообразно в вершинном шейдере.