Реализация свертки в пиксельном шейдере несколько дорогостоящая по отношению к очень большому количеству выборки текстур.
Прямым способом реализации фильтра свертки является создание N x N запросов на фрагмент с использованием двух циклов для каждого фрагмента. Простой расчет говорит о том, что изображение 1024x1024, размытое галорианским ядром 4x4, нуждается в поиске 1024 x 1024 x 4 x 4 = 16M
.
Что можно сделать по этому поводу?
- Можно ли использовать некоторую оптимизацию, которая потребует меньше поисков? Меня не интересуют оптимизации, зависящие от ядра, например, для гауссовых (или они специфичны для ядра?)
- Можно ли, по крайней мере, сделать эти поиски быстрее, каким-то образом используя локальность пикселей, с которыми можно было бы работать?
Спасибо!