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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.12.2007, 12:43
aQuestion вне форума Посмотреть профиль Найти все сообщения от aQuestion
  № 1  
Ответить с цитированием
aQuestion
Banned
[+5 08.09.07]
[+4 17.01.08]
 
Аватар для aQuestion

Регистрация: Dec 2005
Сообщений: 556
Цитата:
Сообщение от Adobe
The amount of... blur... Values that are a power of 2 (such as 2, 4, 8, 16 and 32) are optimized to render more quickly than other values.
отсюда родилась такая мысль, заменять не-двоестепенные фильтры дающими близкий результат двоестепенными, например new BlurFilter (3, 3, 1) на new BlurFilter (2, 2, 3). вопрос №1, соответственно, как посчитать подходящий параметр квалити?

Цитата:
Сообщение от Adobe
Although you can use additional numeric values up to 15 to increase the number of times the blur is applied, higher values are rendered more slowly. Instead of increasing the value of quality, you can often get a similar effect, and with faster rendering, by simply increasing the values of the blurX and blurY properties.
отсюда вопрос №2, какое значение квалити делает вышеописанную замену бесмысленной?

окей, по вопросу №1 предварительные результаты таковы:
Код:
function getBlurParams (blurAmount:Number)
{
	var lesserAmount:Number = Math.pow (2,
		Math.floor (parseFloat ((Math.log (blurAmount) * Math.LOG2E).toFixed(8))));
	// assume linear dependance on (blurAmount - lesserAmount)
	// border cases: must be 1 for 0, and 3 for 1
	var quality:Number = 1 +
		2 * (blurAmount - lesserAmount);
	return [ lesserAmount, quality ];
}

for (var i=2; i<10; i++)
	trace (i + ": " + getBlurParams (i));
и вывод сего:
Цитата:
Сообщение от Output tab
2: 2,1
3: 2,3
4: 4,1
5: 4,3
6: 4,5
7: 4,7
8: 8,1
9: 8,3
если посмотреть на примере 7: 4,7, то "ширину мазка" такая эвристика подбирает неплохо, но "резкость", разумеется и рядом не валялась. по вопросу №2 мне кажется такие значения квалити (от 3х и выше) сделают замену принципиально нецелесообразной, но надобно проверить.

edit: по вопросу №2,
Код:
import flash.display.BitmapData;
import flash.filters.BlurFilter;
import flash.geom.Point;
import flash.utils.getTimer;

var bd:BitmapData = new BitmapData (123, 456, true, 789);
var i:uint = 0, t:uint = 0, p:Point = new Point ();

var f1:BlurFilter = new BlurFilter (3, 3, 1);
var f2:BlurFilter = new BlurFilter (2, 2, 3);

t = getTimer ()
for (i=0; i<1000; i++)
	bd.applyFilter (bd, bd.rect, p, f1);
trace (getTimer () - t);

t = getTimer ()
for (i=0; i<1000; i++)
	bd.applyFilter (bd, bd.rect, p, f2);
trace (getTimer () - t);
дает 15хх против 17хх, а в случае 7,7,1 против 4,4,7 - 15хх против 36хх.

ВЫВОД: на идею забиваем.


Последний раз редактировалось iNils; 03.12.2007 в 15:42.
Создать новую тему Ответ Часовой пояс GMT +4, время: 10:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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