эффекты постобработки рендеринга в реальном времени - PullRequest
3 голосов
/ 02 апреля 2011

У меня вопрос по поводу эффектов постобработки рендеринга в реальном времени.

как они вообще работают? то есть как вы получаете доступ к окончательному изображению, чтобы внести в него изменения?

Вы делаете это для текстуры? если да, то как убедиться, что текстура соответствует размеру экрана?

спасибо!

1 Ответ

6 голосов
/ 02 апреля 2011

Основной рабочий процесс:

  • Рендеринг сцены в цель / текстуру рендеринга (размер экрана, обычно того же формата)
  • Сброс цели рендеринга - либо на другую цель рендеринга / текстуру, либо на текущий буфер)
  • Установить пиксельный шейдер для постобработки, привязать текстуру сцены к сэмплеру
  • Нарисуйте полноэкранный квад по сцене, используя фиктивный вершинный шейдер

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

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

...