Да, это обычный способ ведения дел.
- Визуализация чего-либо в текстуре.
- Нарисуйте полноэкранный квад с шейдером, который читает эту текстуру и выполняет некоторые операции.
Простые эффекты (например, оттенки серого, коррекция цвета и т. Д.) Могут быть выполнены путем считывания одного пикселя и вывода одного пикселя в фрагментный шейдер. Более сложные операции (например, вихревые шаблоны) могут быть выполнены путем считывания одного пикселя из местоположения смещения и вывода одного пикселя. Еще более сложные операции можно выполнить, прочитав несколько пикселей.
В некоторых случаях потребуется несколько временных текстур. Например. размытие с большим радиусом часто делается следующим образом:
- Визуализация в текстуру.
- Визуализация в другую (меньшую) текстуру с шейдером, который вычисляет каждый выходной пиксель как среднее значение для нескольких исходных пикселей.
- Используйте эту меньшую текстуру для рендеринга в другую небольшую текстуру с шейдером, который делает правильное размытие по Гауссу или что-то в этом роде.
- ... повтор
Во всех вышеперечисленных случаях каждый выходной пиксель должен быть независимым от других выходных пикселей. Он может просто использовать еще один входной пиксель.
Примером операции обработки, которая не отображается должным образом, является Summed Area Table, где каждый выходной пиксель зависит от входного пикселя и значения смежного выходного пикселя. Тем не менее, можно делать такие виды на графическом процессоре ( пример pdf ).