Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.11.2010, 18:28
forhaxed вне форума Посмотреть профиль Отправить личное сообщение для forhaxed Найти все сообщения от forhaxed
  № 1  
Ответить с цитированием
forhaxed

Регистрация: Jun 2009
Сообщений: 35
По умолчанию Dynamic Blur

Доброго времени суток %username%.

Появилась необходимость создания "Динамического блюра", раскрою:

Есть некий фон (например векторный), и есть например шар, который может двигаться по фону. Сам по себе этот шар прозрачный, но он заблюривает фон. Т.е. получается эффект "грязного стекла", где шар - грязное стекло.

Есть идея грабить в Sprite весь этот фон, его заблюрить, а потом отрисовывать заблюренный фон по маске шара. Но этот способ, как мне кажется, очень ресурсоемкий.
Какие идеи?

Старый 25.11.2010, 18:30
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 2  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
Для таких вещей есть шейдеры.

Навскидку, в данном случае самое правильное решение - шейдер, который используется как фильтр. ИМХО.

Старый 25.11.2010, 18:33
forhaxed вне форума Посмотреть профиль Отправить личное сообщение для forhaxed Найти все сообщения от forhaxed
  № 3  
Ответить с цитированием
forhaxed

Регистрация: Jun 2009
Сообщений: 35
chaboapok, можно ссылку?

Старый 25.11.2010, 18:50
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 4  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
класс flash.filters.ShaderFilter
шейдеры делаются в программе adobe pixel bender
на сайте адоба есть adobe pixel bender guide и adobe pixel bender reference
в описании flash as programming есть глава 17 работа с шейдерами Pixel bender

и примеры в пиксель бендере есть, простенькие.

Старый 25.11.2010, 21:00
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 5  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Но этот способ, как мне кажется, очень ресурсоемкий
Вы один раз заблюрили. Все. Больше никаких расчетов - просто показываем что нужно по маске.

Цитата:
Для таких вещей есть шейдеры.
Вот смотрите - берем шейдер и пихаем ему одну картинку. Он нам в ответ выдает другую - уже с некой перерисованной облатстью. То есть мы бегаем по всем пикселям и смотрим, попадают ли они в нужную область и, если да, то что-то делаем.
По сути дела шейдер каждый раз производит какие-то операции + он вынужден бегать по всем пикселям. В случае с маской смазывание происходит один раз и далее - просто показ того, что находится под маской.
ИМХО, худшего решения, чем шейдеры, на AS3 не написать =)
__________________
...вселенская грусть

Старый 25.11.2010, 21:06
forhaxed вне форума Посмотреть профиль Отправить личное сообщение для forhaxed Найти все сообщения от forhaxed
  № 6  
Ответить с цитированием
forhaxed

Регистрация: Jun 2009
Сообщений: 35
gloomyBrain, это все замечательно, но фон не статичный.

Старый 25.11.2010, 21:27
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 7  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Ну ок, не статичный. Берем BitmapData.draw(), отрисовываем ограничивающий прямоугольник нашего шарика, смазываем его. Можно конечно делать то же самое и шейдером, при небольшом размере неизвестно, что будет быстрее.

ЗЫ
насчет шейдеров - у них есть shaderPrecision (точность), которую если поставить на маленькую, о вроде как быстрее работает

ЗЗЫ
В интернете точно есть примеры реализации блюра через шейдеры. Косяк в том, что чтобы сделать эффект от них похожим на обычный фильтр, придется прогонять картинку через шейдер несколько раз (ибо циклы в PixelBender не поддерживаются для FP)
__________________
...вселенская грусть

Старый 26.11.2010, 00:58
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 8  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
Цитата:
ИМХО, худшего решения, чем шейдеры, на AS3 не написать
не спорю - шейдеры имеют свои недостатки.
но если вы приводите ТАКИЕ аргументы -- значит вы шейдерами никогда не пользовались.
пример шейдера блюра идет в комплекте с пиксель бендером.
Циклы действительно не поддерживаются, но прогонять картинку несколько раз не надо%) Конечно, было б удобней с циклами, но вцелом, и без них обойтись можно.

шейдеры компилятся в специальный ассемблер и выполняются видеокартой, а всякие bitmapdata.draw() -- интерпретатором флеша, который славится особой тормознутостью. Эффект "прозрачного шарика" на шейдере будет летать, а на битмапдате будет считаться по кадру в несколько минут %). И это несмотря на то, что и там и там будет "бегать по всем пикселам"

насчет остального - да, возможно. Шейдеры мне показались оптимальными только навскидку, а так как вы пишите тоже можно и будет работать Наверно вы правы с том, что шейдер, возможно, для такого - мощновато. Но тут опять же, надо смотреть что за задача.

Старый 26.11.2010, 02:54
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 9  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
если вы приводите ТАКИЕ аргументы -- значит вы шейдерами никогда не пользовались
Пользовался, поэтому и привожу =)

Цитата:
шейдеры компилятся в специальный ассемблер и выполняются видеокартой
Видеокарта, кстати, тоже должна быть специальная. Из списка поддерживаемых.

При этом не забывайте - PB и FP выполняются в разных потоках, по сему польза от PB теряется из-за медленного обмена данными между этими потоками

ЗЫ
Цитата:
а всякие bitmapdata.draw()
А шейдеру Вы что будете отправлять?
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 26.11.2010 в 02:57.
Старый 26.11.2010, 20:29
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 10  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
Цитата:
Видеокарта, кстати, тоже должна быть специальная. Из списка поддерживаемых.
Впервые слышу. Подозреваю, что в списке их много, а те что не в списке - все равно совместимы.

Цитата:
При этом не забывайте - PB и FP
что такое РВ FP?

Цитата:
А шейдеру Вы что будете отправлять?
а! Так вот вы о чем
вобщем, вы наверное забыли. Шейдеры можно использовать как фильтры, как функцию наложения, и как просто черный "ящик", который из нескольких картинок делает одну. Так вот, отправлять шейдеру через draw() картину надо (и то не всегда) только в последнем случае. А если работать через фильтры - можно вполне без отрисовок типа draw().

говорю же - с графикой через шейдеры часто работа идет быстрее и более "гладко", чем без них. Если у вас это было не так - то либо у вас что-то сверх специфическое, либо вы что-то не так делали.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
blur , Dynamic

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.