Как получить список пикселей / фрагментов, сгенерированных фрагментным шейдером? - PullRequest
1 голос
/ 02 февраля 2012

Фрагмент шейдера обращается к кадровому буферу.

Но как мне эффективно получить только пиксели / фрагменты, сгенерированные в результате выполнения? фрагмента шейдера?

Ответы [ 3 ]

3 голосов
/ 02 февраля 2012
  • Установите маску трафарета, чтобы каждый раз, когда вы рисуете фрагмент, эта маска будет иметь значение 1.
  • Извлечение маски трафарета и цветового буфера с функцией glReadPixels.
2 голосов
/ 02 февраля 2012

В общем случае это не так.

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

Но это все.

1 голос
/ 02 февраля 2012

Фрагментный шейдер обращается к кадровому буферу.

Не напрямую.Хотя более поздние версии OpenGL поддерживают операцию разброса в фрагментном шейдере, выполнение сбора становится для него более естественным.

Перед выполнением этапа обработки фрагмента, этап растеризации сначала определяет, в какие фрагменты записываются обрабатываемые в данный моментпримитивный.Это происходит через оценщик диапазона сканирования или тому подобное.Т.е. набор обрабатываемых фрагментов определяется до выполнения фрагмента шейдера.Затем единственное, что делает фрагментный шейдер, это вычисление значений, используемых на следующем этапе наложения для объединения в кадровый буфер.

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