Пакетная обработка 3D-графики

На многих сайтах/статьях написано «партия! партия! партия!'. Может кто-нибудь объяснить, что представляет собой «пакетная обработка» по отношению к шейдерам?

А именно, делает

  1. изменение текстур
  2. изменение произвольных переменных шейдера

означает, что что-то не может быть «пакетным»?


person jameszhao00    schedule 11.11.2010    source источник


Ответы (2)


Самый простой способ обобщить это — попытаться сделать как можно меньше вызовов API, чтобы нарисовать то, что вам нужно. Этому способствуют использование массивов вершин или VBO (даже необязательных в современных API), текстурных атласов и избежание необходимости изменения состояния. Удивительно, сколько треугольников может нарисовать современный графический процессор за то время, которое требуется вам, чтобы развернуться и настроить следующий вызов рисования.

person Ben Jackson    schedule 11.11.2010
comment
И применяя это к вашим двум точкам, изменение вещей сводит на нет пакетную обработку. Изменение текстур обычно не так уж плохо, если обе текстуры как в VRAM, но постоянное изменение переменных шейдера может быть медленным. - person ssube; 11.11.2010
comment
Спасибо. Как современный игровой движок обрабатывает матрицы преобразования при пакетной обработке (которая изменяется для каждого объекта)? - person jameszhao00; 11.11.2010
comment
матрицы преобразования будут установлены как константы шейдера, когда это необходимо. Это не большая проблема, потому что большая часть сцены — это мир. Он статичен и не нуждается в преобразовании. Если это так: преобразуйте данные во время загрузки, прежде чем загружать их в буфер вершин. - person Nils Pipenbrinck; 11.11.2010