|
|
|||||
2d filters via GPU
Действительно ли можно? Попросили меня сделать пост-эффекты, обеспечивающие блюмы и hdr. Первый уронил фпс в полтора, второй - в два раза. Блюм - это наложенный с альфаканалом bData.clone через BlurFilter, а hdr - тот же блюр, только с предварительным threshold.
В какую сторону вообще копать, чтобы заставить изображение рассчитываться на видеокарте?
__________________
Дебаггер не предлагать |
|
|||||
Не уверен, но вроди если сделать фильтры через шейдеры то будет поддержка GPU. Читайте Pixel Bender
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Нене, фильтрами нереально. AGAL учите - там шанс есть.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Агал давно уже выучен, настроен и рисует мне вью, на который и добавляется собственно пост-эффект. То есть я снимаю с него отрендеренную bitmapData, а потом уже блюрю и всячески извращаюсь
__________________
Дебаггер не предлагать |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Ну так в несколько проходов на агале и делайте. http://www.nulldesign.de/2011/12/07/nd2d-blur/
GPU = только АГАЛ, к сожалению (скажите спасибо тем, кто решил сделать пиксельбендеровские шейдера слабо похожими на те, что видеокарта поддерживает).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Дело в том, что агал не умеет считывать цвет "соседнего" пикселя во фрагментном шейдере. А значит сразу обламывается с блюром. Да и hdr не сильно то получится сделать.
Посмотрел PB. Ужаснулся. Язык без циклов - это пять
__________________
Дебаггер не предлагать |
|
|||||
Если я правильно их понял - у них идут те же операции с битмапДата, только сильно уж высокоуровневые, переданные на "чтение" по uv. Дублированные-передублированные естественно. Тут как минимум нужно учитывать количество мест под текстурные семплеры на видяху.
Есть ещё один вариант(для блюра) - дважды рендерить сцену. (Для настоящего hdr+glow - вообще четырежды - на затемнённые, на высветленные, обычную и четвёртую, блюрящуюся) В оптимизированном варианте второй раз конечно не саму сцену, а Sprite на x+1 перед вьюпортом, на котором лежит текстура с изменяющимися в шейдере uv. Но всё равно конкретно моя сцена будет недовольна необходимостью на каждый кадр грузить в гпу новый семплер. Ну и как мизерикорд. На опенгл двойной блюр по xy роняет фпс в два раза. Четвертной - в шесть. И это для маленьких спрайтов. А у меня блюр надо класть в идеале на 1080p =)
__________________
Дебаггер не предлагать Последний раз редактировалось BuKT; 29.12.2011 в 00:42. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Цитата:
По-моему народ с ND2D как-то так и сделал. Ну проходов может быть много, да. Но не всю сцену рендерить несколько раз, по текстуре её проходы только. Но на gpu. Но может быть медленнее даже пиксельбендеровского фильтра, надо тестить.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Цитата:
__________________
Дебаггер не предлагать |
Часовой пояс GMT +4, время: 20:00. |
|
« Предыдущая тема | Следующая тема » |
|
|