|
|
|||||
Регистрация: Jun 2002
Сообщений: 391
|
Шейдер на большой области.
Приветствую.
Есть шейдер, что-то делает каждый кадр. Нужно покрыть им всю рабочую область (1600х800). Пробовал через beginShaderFill и через applyFilter -- тупит безбожно даже на "пустом" шейдере. При этом в Pixel Bender то же самое летает. Есть способы залечить? |
|
|||||
Регистрация: Aug 2007
Сообщений: 467
|
Вам никто не ответит. Потому что с таким "никаким" описанием никто не станет напрягаться и догадываться что, как и где вы делали!
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать! |
|
|||||
Регистрация: Jun 2002
Сообщений: 391
|
Да как бы особо нечего описывать.
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 для битмапа. В пикселбендере тот же шейдер в таком размере дает огромные фпс. Вопрос -- можно ли достичь того же во флеше. |
|
|||||
Регистрация: Aug 2007
Сообщений: 467
|
Незнаю что там у вас за шейдер, а если сделать его как фильтр?:
render() убрать.
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать! |
|
|||||
Регистрация: Jun 2002
Сообщений: 391
|
То же самое.
|
|
|||||
Регистрация: Dec 2007
Сообщений: 269
|
Вообще pixelbender-движки в flash player и в toolkit разные, то что в редакторе все летает совсем не означает, что и в плеере все будет шевелиться шустро.
|
|
|||||
Регистрация: Aug 2007
Сообщений: 467
|
Да и в Pixel Bender шейдеры не обновляэться каждый кадр )
Попробуйте применить фильтр к флешке размеров 1000х800 будет лучше или нет,а то я у себя попробовал шейдер инвертирования цветов на размере 1280х800, с ФПС 60, с применением шейдера как фильтра каждый кадр, то ФПС падало всего на пару единиц...
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать! |
|
|||||
Регистрация: Jun 2002
Сообщений: 391
|
Цитата:
Добавлено через 6 минут Возможно. Но вот когда кручу инпут-рулики, все меняется гладко и фпс не падает. В плеере такого и рядом нет. Цитата:
Изменение размеров области не выход. Так можно до 100х100 доуменьшать, при том, что в пикселбендере тот же самый фпс на весь экран Последний раз редактировалось mort; 08.03.2009 в 13:22. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Нет, видеокарта даже во Flash 10 валяет дурака.
|
|
|||||
Регистрация: Jun 2002
Сообщений: 391
|
Есть ли способ проверить наверняка?
|
Часовой пояс GMT +4, время: 20:57. |
|
« Предыдущая тема | Следующая тема » |
|
|