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

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

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

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
У нас есть текущие x,y и текстура, которую нужно "закрутить".
Откуда у нас текущие? У нас же есть только координаты вершин и всё, разве нет?

Добавлено через 54 секунды
Цитата:
Оставь в покое вершинный шейдер.
Рисуем в пиксельном, читай выше что написано.
Я и рисовал в нем, я отправил в него измененные UV, комментарии в шейдере есть. Эффект тот же самый, изменились только угловые UV.
__________________
Я заклинаю вас действовать иначе.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Ты пытаешься крутить меш, изменяя его вершины, надо "крутить" x,y, передаваемые в:
Цитата:
fragmentCode = "tex ft0, v0, fs0 <2d,nearest,clamp>\n";
Как ещё объяснить?

Добавлено через 4 минуты
Оставь вершинный код базовым, какой есть.

Добавлено через 4 минуты
И крути в пиксельном.

Добавлено через 6 минут
Знать о вершинах и разрешений экрана не нужно, нужны только обычные uv в v0 и сила закручивания, передаваемая константой.
__________________
Дети не должны знать о своих родителях

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

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Код AS3:
function(x:Number, y:Number, strength:Number):Point {
    return new Point(Math.sin(x * strength, y)); // Вертикальная волна с амплитудой длиною в текстуру.
}
По твоей формуле написал шейдер
Код AS3:
			name = "screen";
 
			vertexCode += "mov op, va0\n"; 
			vertexCode += "mov v0, va1\n"; // uv
 
			// distortion
			vertexCode += "mov v1, vc0\n"; // stageWidth, stageHeight
 
			fragmentCode = "mov ft1, v0\n"; // uv
			fragmentCode += "mul ft2.x, ft1.x, v1.x\n"; // u * stageWidth
			fragmentCode += "sin ft2.x, ft2.x\n"; // sin(u * stageWidth)
			fragmentCode += "add ft1.x, ft1.x, ft2.x\n"; // u = sin(u * stageWidth)
 
			fragmentCode += "tex ft0, ft1, fs0 <2d,nearest,clamp>\n";
			fragmentCode += "mov oc, ft0\n";
Результат
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 53
Размер:	170.3 Кб
ID:	31943  
__________________
Я заклинаю вас действовать иначе.

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

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

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

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

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Опробуй, синусоидальный дисторшен:
Код AS3:
package game.view.filters 
{
	import starling.textures.Texture;
	import flash.display3D.Context3D;
	import flash.display3D.Program3D;
	import starling.animation.IAnimatable;
	import starling.filters.FragmentFilter;
	import flash.display3D.Context3DProgramType;
 
 
	/**
	 * Шейдер волнового деформирования изображения.
	 * @author Tails
	 */
	public class Wave extends FragmentFilter{
 
		// Приват
		private var _programWave:Program3D;					// Шейдер отрисовки
		private var _programNormal:Program3D;				// Обычный шейдер
		private var _parameters:Vector.<Number>;			// Вектор для передачи параметров фильтра
 
 
		/**
		 * Создать фильтр волнового деформирования.
		 */
		public function Wave() {
 
			/**
			 * [0]	- Количество волн.
			 * [1]	- Ширина волны по горизонтали.
			 * [2]	- Y смещение
			 * [3]	- 0
			 */
			_parameters			= new <Number>[50, .1, 3.14, 0];
			_parameters.fixed	= true;
		}
 
 
		// ГЕТТЕР-СЕТТЕРЫ
		/// Количество волн.
		public function get waveNum():Number {
			return _parameters[0];
		}
		public function set waveNum(value:Number):void {
			_parameters[0] = value;
		}
		/// Ширина волны по горизонтали.
		public function get waveSize():Number {
			return _parameters[1];
		}
		public function set waveSize(value:Number):void {
			_parameters[1] = value;
		}
		/// Отступ волны сверху, где полный цикл = 2PI
		public function get waveStep():Number {
			return _parameters[2];
		}
		public function set waveStep(value:Number):void {
			_parameters[2] = value;
		}
 
 
		// ОПРЕДЕЛЕНИЕ
		override protected function activate(pass:int, context:Context3D, texture:Texture):void {
			if(_parameters[1] > 0){
				context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, _parameters);
				context.setProgram(_programWave);
			}else {
				context.setProgram(_programNormal);
			}
		}
        protected override function createPrograms():void {
 
			var fragmentProgramCode:String =
				// Перенос координат в переменную + смещение для синуса
				"mov ft0, v0										\n" + 
 
				// Количество волн по вертикали:
				"mul ft0.x, ft0.y, fc.x 							\n" + 
				"add ft0.x, ft0.x, fc.z 							\n" + 
				"sin ft0.x, ft0.x 									\n" + 
 
				// Уменьшаем велечину волны по горизонтали:
				"mul ft0.x, ft0.x, fc0.y 							\n" + 
				"add ft0.x, v0.x, ft0.x 							\n" + 
				"tex ft0, ft0, fs0 <2d, clamp, linear, mipnone> 	\n" +
				"mov oc, ft0 										\n";
 
			_programWave 	= assembleAgal(fragmentProgramCode, STD_VERTEX_SHADER);
			_programNormal 	= assembleAgal(STD_FRAGMENT_SHADER, STD_VERTEX_SHADER);
        }
 
 
		// УДАЛЕНИЕ
		public override function dispose():void{
			_programNormal.dispose();
			_programWave.dispose();
			super.dispose();
		}
	}
}
__________________
Дети не должны знать о своих родителях

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

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

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

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

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

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

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

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

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

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

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


 


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


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