Создание фильтра размытия с помощью шейдера - доступ к соседним пикселям из фрагментного шейдера?

Я хочу создать эффект размытия с помощью фрагментного шейдера в OpenGL ES 2.0. Алгоритм, который меня интересует, - это просто усредняющее размытие - добавляю все соседние пиксели себе и делю на 9 для нормализации.

Однако у меня есть 2 проблемы:

1) требуется ли мне сначала выполнить рендеринг в буфер кадра, а затем переключить цели рендеринга? Или есть более простой способ

2) предположим, что я привязываю свое "исходное" изображение к размытию как текстуру 0, и я выводю свою размытую текстуру. Как мне получить доступ к пикселям, которые не те, с которыми я сейчас имею дело? Вертикальный шейдер вызвал меня для пикселя i, но мне нужно получить доступ к пикселям вокруг меня. Как? И как мне узнать, что я крайний случай (буквально на краю экрана)

(3: есть ли более подходящий алгоритм, чтобы получить размытое размытие из матового стекла)

10
задан Nektarios 27 July 2011 в 18:53
поделиться