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

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

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

Регистрация: Jun 2002
Сообщений: 391
По умолчанию Шейдер на большой области.

Приветствую.
Есть шейдер, что-то делает каждый кадр. Нужно покрыть им всю рабочую область (1600х800). Пробовал через beginShaderFill и через applyFilter -- тупит безбожно даже на "пустом" шейдере.
При этом в Pixel Bender то же самое летает.
Есть способы залечить?

Старый 07.03.2009, 20:28
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 2  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Вам никто не ответит. Потому что с таким "никаким" описанием никто не станет напрягаться и догадываться что, как и где вы делали!
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать!

Старый 07.03.2009, 20:50
mort вне форума Посмотреть профиль Отправить личное сообщение для mort Найти все сообщения от mort
  № 3  
Ответить с цитированием
mort

Регистрация: Jun 2002
Сообщений: 391
Да как бы особо нечего описывать.

Код AS3:
package app {
	import flash.display.BitmapData;
	import flash.display.DisplayObject;
	import flash.display.Shader;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageQuality;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;	
 
	public class Main extends Sprite 
	{
		private var shader:Shader;
 
		public function Main() 
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.frameRate = 60;
			stage.quality = StageQuality.LOW;
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
			//
			var loader:URLLoader = new URLLoader();
			loader.dataFormat = URLLoaderDataFormat.BINARY;
			loader.addEventListener(Event.COMPLETE, prepareShader);
			loader.load(new URLRequest('pb/test.pbj'));
 
			addEventListener(Event.ENTER_FRAME, render); 
		}
 
		private function prepareShader(event:Event):void
		{
			var loader:URLLoader = event.target as URLLoader;
			shader = new Shader(loader.data);
		}
 
		private function render(event:Event = null): void 
		{
			if(shader)
			{
				graphics.clear(); 						
				graphics.beginShaderFill(shader);
				graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
				graphics.endFill();
			}
		}	
	}
}
Шейдер -- просто вывод цвета.

При размере мувика 1600х800 получается 8-12 фпс (атлон 3000). Аналогично если использовать drawTriangles или делать applyFilter для битмапа.

В пикселбендере тот же шейдер в таком размере дает огромные фпс.

Вопрос -- можно ли достичь того же во флеше.

Старый 07.03.2009, 21:16
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 4  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Незнаю что там у вас за шейдер, а если сделать его как фильтр?:
Код AS3:
private function prepareShader(event:Event):void
{
	var loader:URLLoader = event.target as URLLoader;
	shader = new Shader(loader.data);
	this.filters = [new ShaderFilter(shader)];
}
render() убрать.
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать!

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

Регистрация: Jun 2002
Сообщений: 391
То же самое.

Старый 07.03.2009, 23:22
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 6  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
Вообще pixelbender-движки в flash player и в toolkit разные, то что в редакторе все летает совсем не означает, что и в плеере все будет шевелиться шустро.

Старый 08.03.2009, 00:13
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 7  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Да и в Pixel Bender шейдеры не обновляэться каждый кадр )

Попробуйте применить фильтр к флешке размеров 1000х800 будет лучше или нет,а то я у себя попробовал шейдер инвертирования цветов на размере 1280х800, с ФПС 60, с применением шейдера как фильтра каждый кадр, то ФПС падало всего на пару единиц...
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать!

Старый 08.03.2009, 12:03
mort вне форума Посмотреть профиль Отправить личное сообщение для mort Найти все сообщения от mort
  № 8  
Ответить с цитированием
mort

Регистрация: Jun 2002
Сообщений: 391
Цитата:
Сообщение от badun Посмотреть сообщение
Вообще pixelbender-движки в flash player и в toolkit разные, то что в редакторе все летает совсем не означает, что и в плеере все будет шевелиться шустро.
Не означает, но и обратное не очевидно. Падение скорости в 6 раз даже в стендэлон при том, что, по идее, трудится видеокарта -- с чего, вообще?

Добавлено через 6 минут
Цитата:
Сообщение от 2morrowMan Посмотреть сообщение
Да и в Pixel Bender шейдеры не обновляэться каждый кадр )
Возможно. Но вот когда кручу инпут-рулики, все меняется гладко и фпс не падает. В плеере такого и рядом нет.

Цитата:
Сообщение от 2morrowMan Посмотреть сообщение
Попробуйте применить фильтр к флешке размеров 1000х800 будет лучше или нет,а то я у себя попробовал шейдер инвертирования цветов на размере 1280х800, с ФПС 60, с применением шейдера как фильтра каждый кадр, то ФПС падало всего на пару единиц...
А Вы уверены, что фильтр пересчитывался каждый кадр? Попробуйте, например, цвет передавать в шейдер.

Изменение размеров области не выход. Так можно до 100х100 доуменьшать, при том, что в пикселбендере тот же самый фпс на весь экран


Последний раз редактировалось mort; 08.03.2009 в 13:22.
Старый 08.03.2009, 13:07
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от mort Посмотреть сообщение
по идее, трудится видеокарта
Нет, видеокарта даже во Flash 10 валяет дурака.

Старый 08.03.2009, 13:11
mort вне форума Посмотреть профиль Отправить личное сообщение для mort Найти все сообщения от mort
  № 10  
Ответить с цитированием
mort

Регистрация: Jun 2002
Сообщений: 391
Цитата:
Сообщение от __etc Посмотреть сообщение
Нет, видеокарта даже во Flash 10 валяет дурака.
Есть ли способ проверить наверняка?

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

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

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


 


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


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