Для целей этого разговора я предполагаю, что под «потоком» вы подразумевали «вызов» .«Темы» не существуют в GLSL;только "вызовы".
В первом случае для вершинного шейдера имеет смысл иметь 600 * 3 потока, а для фрагментного шейдера - 1 поток.
Нет, не будет.
Частота вызовов VS полностью зависит от того, как вы предоставили эти треугольники.Например, если они действительно являются одним и тем же треугольником, и вы использовали буфер индекса для извлечения одинаковых областей памяти для каждой из 3 вершин, то вполне возможно, что VS будет выполнена точно и только 3 раза.
Фрагмент шейдера еще менее четко определен.Возможно, аппаратное обеспечение осознало, что все потенциальные вызовы растеризатора будут перезаписывать одни и те же места ... и, возможно, это не так.Кроме того, большинство растеризаторов будут выполнять несколько вызовов, даже если будет записан только один фрагмент из треугольника.Эти скрытые вызовы используются для вычисления градиентов для текстурных координат и, как правило, существуют для ускорения работы общего случая.
Во втором случае имеет смысл, чтобы вершинный шейдер имел только три потока ифрагментный шейдер должен иметь 1920 * 1080 потоков.
Он может работать больше этого.
Чтобы один треугольник покрывал каждый пиксель на экране, этот треугольник, вероятно, будет иметьбыть больше, чем защитная полоса рендерера.Это означает, что треугольник, вероятно, придется обрезать до объема просмотра.
Таким образом, в то время как VS создаст один треугольник, растеризатор, скорее всего, увидит 2 или даже 3 треугольника.
Этоозначает, что между краями этих треугольников будут области перекрытия, где будут существовать те «скрытые» вызовы FS, о которых я говорил.Таким образом, у вас, скорее всего, будет больше вызовов FS, чем у пикселей.
Итак, сколько потоков фактически генерируется на каждом этапе конвейера?
Вы не знаете,Вы не можете знать.И вообще говоря, вы не должны пытаться узнать.
Есть ли способ хотя бы частично повлиять на количество создаваемых потоков?
Да: сделать больше или меньше вещей.Это даст вам больше или меньше призывов.Это все, что дает вам OpenGL, и все, что вам нужно.