Разница в производительности между геометрическим шейдером и вершинным шейдером
В настоящее время я рендеринг модели около 1 миллиона вершин. И внутри вершинного шейдера я делаю некоторые сложные вычисления для каждой вершины. Теперь я хотел бы увеличить разрешение модели. У меня есть два вопроса по этому поводу:
- целесообразно ли использовать геометрический шейдер для увеличения разрешения до очень больших коэффициентов, таких как 64 раза?
- Если я введу геометрический шейдер, мне, возможно, потребуется переместить мои вычисления из вершинного шейдера в геометрический шейдер. Делает ли это работа в шейдере verterx такая же, как и в шейдере geometry, с точки зрения производительности.
1 ответ:
Целесообразно ли использовать геометрический шейдер для увеличения разрешения до очень больших коэффициентов, таких как 64 раза.
Абсолютно нет. Хотя GS Могут усиливать геометрию и выполнять тесселяцию, это не совсем то, для чего они предназначены. Их основные цели-обработка данных обратной связи преобразования (особенно аппаратных средств, которые могут обрабатывать многопоточный вывод) и многоуровневый рендеринг.
Если я введу геометрический шейдер, мне, возможно, потребуется переместить мои вычисления из вершины шейдер к шейдеру геометрии. С точки зрения производительности выполнение операции в шейдере verterx-это то же самое, что и в шейдере geometry.
Делайте так мало работы в GS, как это разумно. GS происходит после кэша post-T&L, и вы хотите извлечь из этого как можно больше. Поэтому выполняйте столько реальной работы по преобразованию, сколько это целесообразно в вершинном шейдере.