Минимальные шаги для реализации прохода только на глубину - PullRequest
0 голосов
/ 29 января 2020

У меня есть приложение OpenGL ES 3.1, которое отображает сцену в FBO с вложением цвета и глубины / трафарета. Он использует обычные методы для рисования (glBindBuffer, glDrawArrays, glBlend *, glStencil * et c.). Теперь моя задача - создать проход только для глубины, который заполняет привязку глубины теми же значениями, что и основной проход.

Мой вопрос: какое минимальное количество шагов необходимо для достижения этой цели и избежать использования графического процессора делать лишнюю работу (ненужные вызовы шейдеров и т. д. c.)? Достаточно ли отключить цветовое вложение или нужно также установить нулевые шейдеры, отключить смешивание и т. Д. c.

1 Ответ

0 голосов
/ 29 января 2020

Полагаю, это нужно до запуска основного прохода, в противном случае вы просто сохраните глубину основного прохода.

Предпечатная проверка

  1. Создание специализированных буферов, которые содержит только данные me sh, необходимые для вычисления положения (которые перемежаются со всеми непозиционными данными).
  2. Создание специализированных вершинных шейдеров (которые вычисляют только выходную позицию).
  3. Связывание программ с помощью самого простого действующего фрагментного шейдера.

Рендеринг

  1. Рендеринг прохода только для глубины с использованием специализированных буферов и шейдеры, маскируя все цветовые записи.
  2. Визуализация основного прохода с полными буферами и шейдерами.

Опции

На шаге (2) выше может быть полезно загрузить результаты глубины прохода только в качестве начальной глубины основного прохода. Это даст вам лучшую точность теста на ранних стадиях за счет повторного считывания значения глубины. Большинство мобильных графических процессоров имеют скрытое удаление поверхности, поэтому это не всегда будет net выигрыш - это зависит от вашего контента, целевого графического процессора и от того, насколько хорош ваш порядок прорисовки спереди назад.

Вы, вероятно, захотите использовать специализированные буферы (данные о местоположении, чередующиеся в одной области буфера, без чередования позиций в секунду) для основного рисования, так как многие графические процессоры оптимизируют вычисления без позиции, если примитив отбирается.

Специализированные буферы и оптимизированные шейдеры также могут использоваться для отображения теней и других подобных техник только для глубины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...