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

Вернуться   Форум Flasher.ru > Flash > Pixel Bender/AGAL

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
По умолчанию Transition Bender (бабочка)

UPD: Окончательная рабочая версия с демкой и инструкциями тут.

Код:
<languageVersion : 1.0;>

kernel TransitionBend
<   namespace : "Transitions";
    vendor : "Vadim BELLinSKY";
    version : 1;
    description : "Transition Bend";
>
{
    
    // ширина изображения
    parameter float width
    <
        minValue:       0.0;
        maxValue:       2880.0;
        defaultValue:   0.0;
    >;
    
    // высота изображения
    parameter float height
    <
        minValue:       0.0;
        maxValue:       2880.0;
        defaultValue:   0.0;
    >;
    
    // степень сплющивания при переходе
    parameter float shrinking
    <
        minValue:       0.0;
        maxValue:       1.0;
        defaultValue:   0.25;
    >;

    // степень затенения
    parameter float shading
    <
        minValue:       0.0;
        maxValue:       1.0;
        defaultValue:   0.5;
    >;
    
    // фаза перехода от первого изображения ко второму
    parameter float phase
    <
        minValue:       0.0;
        maxValue:       1.0;
        defaultValue:   0.0;
    >;

    input image4 src1;
    input image4 src2;
    output pixel4 dst;
    
    const float PI    = 3.1415926353;
    const float PI_2  = PI * 0.5;
    const float PI2   = PI * 2.0;
    
    #define width2   float(width * 0.5)
    #define height2  float(height * 0.5)
    #define period1  float(PI_2 / height)
    #define period2  float(PI / width)
    
    void
    evaluatePixel()
    {
        float2 here = outCoord();
        
        float angle1 = here.y * period1 - (phase * 0.75 - 0.5) * PI2;
              angle1 = clamp(angle1, 0.0, PI);
        
        float angle2 = here.x * period2;
        
        float dx  = (width2 - here.x);
              dx /= cos(angle1);
        
        float dy  = (height2 - here.y);
              dy *= 1.0 + shrinking * sin(phase * PI) * (1.0 + sin(angle2));
        
        
        if (angle1 > PI_2)
        {
            dst = sampleNearest(src1, float2(width2 + dx, height2 - dy));
        }
        else
        {
            dst = sampleNearest(src2, float2(width2 - dx, height2 - dy));
        }
        
        if (abs(dx) > width2 || abs(dy) > height2)
        {
            dst.a = 0.0;
        }
        
        dst.rgb *= 1.0 - (1.0 - abs(cos(angle1))) * shading;

    }
}
Код AS3:
shader.data.width.value		= [_ширина изображения_];
shader.data.height.value	= [_высота изображения_];
shader.data.src1.input		= _bitmapData1_;
shader.data.src2.input		= _bitmapData2_;
shader.data.shrinking.value	= [_степень сплющивания от 0 до 1_]; // можно опустить, по умолчанию 0.25;
shader.data.shading.value	= [_степень затенения от 0 до 1_]; // можно опустить, по умолчанию 0.5;
shader.data.phase.value		= [_фаза от 0 до 1_];
__________________
Поймай яблоко 2!


Последний раз редактировалось Zebestov; 07.06.2012 в 12:38.
Старый 27.01.2011, 03:39
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Здорово!
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 27.01.2011, 03:51
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Спасибо )
__________________
Поймай яблоко 2!

Старый 28.01.2011, 11:44
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Очень круто!
У тебя есть блог, и ты молчишь )?

Старый 28.01.2011, 14:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Красиво

Старый 28.01.2011, 15:00
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Очень круто!
У тебя есть блог, и ты молчишь )?
Спасибо!
Блог я только начал, потому и помалкиваю )

Цитата:
Сообщение от etc Посмотреть сообщение
Красиво
И опять-таки благодарю )
__________________
Поймай яблоко 2!

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

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

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


 


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


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