Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с ShaderFilter (http://www.flasher.ru/forum/showthread.php?t=144954)

Nesterva 26.09.2010 00:12

Проблема с ShaderFilter
 
Здравствуйте! Стоит задача сделать анимацию блика на кнопке с использованием шейдера. Делаю так: блик - это мувиклип, на него накладывается ShaderFilter, который придает блику форму кнопки.
Код в Pixel Bender Toolkit:
Код:

    input image4 foreground;
    input image4 background;
    output pixel4 dst;
 
    void evaluatePixel()
    {
        float4 a = sampleLinear(background, outCoord());  // кнопка
        float4 b = sampleLinear(foreground, outCoord());  // блик
     
        if (a.a <1.0) // если на кнопке прозрачный пиксель
            b.a = a.a;
      dst = b;
    }

Код в as3:
Код AS3:

        skin = new Button();
        addChild(skin);
 
        var blik:MovieClip = new Blik();
        blik.width = skin.width;
        blik.height = skin.height;
        skin.addChild(blik);
 
        var bd:BitmapData = new BitmapData(skin.width, skin.height);
        bd.draw(skin);
 
        var shader:Shader = new Shader(new ShaderClass());
        shader.data.background.input = bd;
        bd.draw(blik);
        shader.data.foreground.input = bd;
 
        f = new ShaderFilter(shader);
        blik.filters = [f];

В результате никакого прозрачного блика - просто белая полоса. В чем может быть проблема? :wacko:

Добавлено через 1 час 33 минуты
Т.е. проблема заключается в потере прозрачности

chabapok 26.09.2010 23:15

вы используете один битмэпдата для бэкграунда и для форграунда. когда делается shader.data.background.input = bd --- это означает не копирование данных, это передача параметра по ссылке. может поэтому? Создайте две разных битмэпдаты.


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

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