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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.12.2015, 20:54
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 21  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Дисторшена, но я уже сам по шейдеру составил. Изучаю сижу.
__________________
Я заклинаю вас действовать иначе.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
http://www.geeks3d.com/20110428/shad...ilter-in-glsl/
__________________
Дети не должны знать о своих родителях

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

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Cool Swirl shader on AGAL

Собственно вот, написал Swirl-shader. Результат можно посмотреть на флешке.

Эффект перемещается за курсором.
Управление персонажа на стрелки.

Aurorasmemories.swf   (134.6 Кб)


Код шейдера:
1) Во фрагментный шейдер посылаются 2 константы, первая содержит в себе позицию эффекта, радиус и угол закручивания. Вторая константа содержит в себе ширину и высоту экрана и необходимые константы.
Код AS3:
			vertexCode += "mov op, va0\n"; 
			vertexCode += "mov v0, va1\n"; // uv
 
			fragmentCode = "mov ft0, v0\n"; // uv
 
			// ---- SWIRL ----
			// fc0 = [x = 300, y = 300, radius = 400, angle = 0.8]
			// fc1 = [stageWidth, stageHeight, 8.0, 0]
			fragmentCode += "mul ft0.x, ft0.x, fc1.x\n"; // tc.x = tc.x * stageWidth
			fragmentCode += "mul ft0.y, ft0.y, fc1.y\n"; // tc.y = tc.y * stageHeight
			fragmentCode += "mov ft0.z, fc1.w\n"; // tc.z = 0
			fragmentCode += "sub ft0.x, ft0.x, fc0.x\n"; // dx = tc.x - center.x
			fragmentCode += "sub ft0.y, ft0.y, fc0.y\n"; // dy = tc.y - center.y
			fragmentCode += "mul ft1.x, ft0.x, ft0.x\n"; // dx * dx
			fragmentCode += "mul ft1.y, ft0.y, ft0.y\n"; // dy * dy
			fragmentCode += "add ft1.x, ft1.x, ft1.y\n"; // dx * dx + dy * dy
			fragmentCode += "sqt ft1.x, ft1.x\n"; // dist = sqrt(dx * dx + dy * dy)
			fragmentCode += "slt ft1.w, ft1.x, fc0.z\n"; // if (dist < radius)
			fragmentCode += "sub ft1.y, fc0.z, ft1.x\n"; // (radius - dist)
			fragmentCode += "div ft1.y, ft1.y, fc0.z\n"; // percent = (raius - dist) / raius
			fragmentCode += "mul ft1.y, ft1.y, ft1.y\n"; // percent * percent
			fragmentCode += "mul ft1.y, ft1.y, fc0.w\n"; // percent * percent * angle
			fragmentCode += "mul ft1.y, ft1.y, fc1.z\n"; // theta = percent * percent * angle * 8.0
			fragmentCode += "cos ft1.z, ft1.y\n"; // c = cos(theta)
			fragmentCode += "sin ft1.y, ft1.y\n"; // s = sin(theta)
			fragmentCode += "mov ft2.x, ft1.y\n"; // vec(s, ?, ?)
			fragmentCode += "mov ft2.y, ft1.z\n"; // vec(s, c, ?)
			fragmentCode += "mov ft2.z, ft0.z\n"; // vec(s, c, 0)
			fragmentCode += "dp3 ft1.x, ft0.xyz, ft2.xyz\n"; // dot(tc, vec(s, c, 0)) : y
			fragmentCode += "neg ft1.y, ft1.y\n"; // s = -s
			fragmentCode += "mov ft2.x, ft1.z\n"; // vec(c, ?, 0)
			fragmentCode += "mov ft2.y, ft1.y\n"; // vec(c, -s, 0)
			fragmentCode += "dp3 ft1.y, ft0.xyz, ft2.xyz\n"; // dot(tc, vec(c, -s, 0)) : x
			fragmentCode += "mul ft1.y, ft1.y, ft1.w\n"; // if (dist < radius) ? 1 : 0
			fragmentCode += "mul ft1.x, ft1.x, ft1.w\n"; // if (dist < radius) ? 1 : 0
			fragmentCode += "seq ft1.w, ft1.w, fc1.w\n"; // if (uv == 0) ? uv = 1 : 0
			fragmentCode += "mul ft0.xy, ft0.xy, ft1.w\n"; // tc.xy = if (uv == 1) ? tc.xy - center.xy : 0
			fragmentCode += "add ft0.xy, ft0.xy, ft1.yx\n"; // tc.xy = if (uv == 0) ? vec(dot(tc, vec(c, -s, 0)), dot(tc, vec(s, c, 0))) : 0
			fragmentCode += "add ft0.x, ft0.x, fc0.x\n"; // tc.x = tc.x + center.x
			fragmentCode += "add ft0.y, ft0.y, fc0.y\n"; // tc.y = tc.y + center.y
			fragmentCode += "div ft0.x, ft0.x, fc1.x\n"; // tc.x = tc.x / stageWidth
			fragmentCode += "div ft0.y, ft0.y, fc1.y\n"; // tc.y = tc.y / stageHeight
			// ---- END SWIRL ----
 
			fragmentCode += "tex ft0, ft0, fs0 <2d,nearest,clamp>\n";
			fragmentCode += "mov oc, ft0\n";
Послесловие: По какой-то причине у меня не работает AGAL2, из-за чего условия пришлось сделать кустарным методом.
Вложения
Тип файла: swf Aurorasmemories.swf (134.6 Кб, 328 просмотров)
__________________
Я заклинаю вас действовать иначе.


Последний раз редактировалось Bletraut; 27.12.2015 в 14:51.
Старый 27.12.2015, 14:23
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 24  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
На картинке.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 153
Размер:	180.4 Кб
ID:	31946  
__________________
Я заклинаю вас действовать иначе.

Старый 27.12.2015, 14:38
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 25  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Класс!
__________________
Дети не должны знать о своих родителях

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

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

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


 


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


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