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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.10.2011, 00:21
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 1  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
По умолчанию ShaderFilter на область объекта

Добрый вечер, возникла задача наложить на объект некий кастомный фильтр - ShaderFilter, но не на весь объект полностью, а имея возможность оставить какую-то кастомную область нефильтрованной (mmm... beer...), как это делается в DisplacementMapFilter через методы mapPoint и mapBitmap, коих к сожалению не наблюдается в ShaderFilter.

С масками и дублированием изображения не хочу заморачиваться, желательно обойтись только фильтрами. В качестве таргета может выступать не только битмапа, а любой DisplayObject, в т.ч. и с динамическим содержимым, копирование будет затруднительно.

Подскажите пожалуйста, как подружить эти фильтры между собой, или подскажите способ как это реализовать покрасивее.

Примерно такое хочу получить в результате:
Изображения
 
__________________
Стой! Опасная зона! Работа мозга!

Старый 09.10.2011, 14:25
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 2  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Напиши свой кастомный эффект в Pixel Bender'е

Старый 09.10.2011, 14:53
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 3  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Ээ вы писали вообще кастомные фильтры?
Это просто берётся и делается %)
mapPoint и mapBitmap - это не методы, а св-ва, в своём шейдере можно завести похожие.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 09.10.2011, 17:36
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 4  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
Да, да, сделал уже все...
Просто в ShaderFilter математически описываем функцию для "маски", если круг, квадрат и пр. - то все ок, а вот заюзать как-нибудь сложный графический объект, зараннее вручную отрисованный уже проблематично.
Вобщем обошелся примитивами через скрипт.
__________________
Стой! Опасная зона! Работа мозга!

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

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Всегда можно подать на вход шейдеру ещё одну битмапу. Вам 2-х битмап на входе (что автоматом есть в ShaderFilter ) - не хватило? Одна из них - бэк, вторая "маска", я думал так будет.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 09.10.2011, 18:42
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 6  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
-De-, а точно, в Pixel Bender Toolkit же 2 битмапы на вход можно...
Спасибо, сейчас гляну.
__________________
Стой! Опасная зона! Работа мозга!

Старый 09.10.2011, 18:51
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 7  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
А, ошибся чуть, 2 битмапы автоматом на входе если шейдер используется как BlendMode. Может, вам лучше его так использовать? Тогда просто обе битмапы будут автоматом генерится из того, что лежит.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 11.10.2011, 01:08
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 8  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
Не буду плодить темы, спрошу еще здесь.
Есть варианты оптимизации производительности при работе с Shader фильтрами, может какие-нибудь секреты-хаки?)

Фильтры накладываю на контейнер (Sprite) с динамическим содержимым. Фильтров может быть несколько штук, поэтому написал для них небольшой, своего рода, менеджер (addFilter, removeFilter, conatainsFilter и пр.), в нем хранится текущий массив фильтров. 1-3 фильтра в среднем может висеть на контейнере одновременно.

Параметры фильтра динамически меняются в зависимости от входных данных (в частности координаты мыши), поэтому приходится на MOUSE_MOVE обновлять параметры фильтров и обновлять их все _container.filters = _filters;

FPS держит на ПК при движении мышью и макс. кол-ве фильтров - 20-25(31), на нетбуке же показатели fps не радуют...

Вот и думаю, может есть в схеме слабое место, или тут уже ничем не помочь только алгоритмы шейдеров писать максимально легкие?
__________________
Стой! Опасная зона! Работа мозга!

Старый 11.10.2011, 01:37
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 9  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
По-моему один большой шейдер, который делает то же, что и три маленьких будет значительно быстрее.
Плохо помню, может быть можно менять параметры шейдеров без присваивания _container.filters = _filters;
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 11.10.2011, 01:51
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 10  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
Цитата:
По-моему один большой шейдер, который делает то же, что и три маленьких будет значительно быстрее.
Я тоже думаю, что быстрее, однако они и были разделены на логические группы в расчете на последующую комбинацию между собой. В этом то и вся фишка, чтобы их комбинировать.

Цитата:
Плохо помню, может быть можно менять параметры шейдеров без присваивания _container.filters = _filters;
Не, не работает так =)

Что точно влияет - контейнеру флаг обязателен cacheAsBitmap и не нужно вызывать в хандлере MOUSE_MOVE updateAfterEvent() у события.

Первое что еще приходит на ум - уменьшение активной области фильтра, т.е. контейнер уменьшить.
Второе - будет ли большой прирост производительности при замене динамического контента битмапой. Завтра это попробую сделать отрисовывая заранее контент, а динамику как-нибудь кусочками к битмапе можно ложить и убирать. Посмотреть много ли выиграю от такого.

Еще вот статью нашел:
http://www.derschmale.com/2009/07/23...ps-benchmarks/

Сами шейдеры тоже надо пооптимизировать.
__________________
Стой! Опасная зона! Работа мозга!

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

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

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


 


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


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