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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Question Большая водная поверхность

Приветствую
В процесе работы над диздоком одной игры встал вопрос - делать ли поддержку фулскрина. Суть вопроса в том, что в основном игровом режиме большую часть экрана будет занимать анимированная водная поверхность, а насколько мне известно, с большими текстурами Flash не очень хорошо дружит. Да, вид в игре изометрический. В стандартном("оконном") режиме вода реализована следующим образом:
1. Есть статическая текстура - довольно-таки реалистично нарсованная водная поверхность.
2. Есть текстура для искажений, используется в DisplacementMapFilter. По размерам она в 2 раза больше статической, состоит из 4 тайлов, в фильтре смещается путем смены параметров матрицы трансформации для метода BitmapData.draw.
3. Так как полученный результат не очень впечетлил, была добавлена еще одна текстура, длиной в два раза больше статической, но равная по высоте. Похожа на статическую текстуру, но на ней более сильно выражено горизонтальная "растяжка" волн. Состоит из 2 тайлов, повторяющихся по горизонтали, соответственно, скроллится по оси Х. Альфа выставлена в 0.5, что в результате наложения двух картинок позволяет получить эффект изменющихся волн, к тому же искаженных DisplacementMapping-ом.
Надеюсь, не очень запутал...
В общем, немного погуглив, понял что с таким расточительным отношениям к размеру текстур я далеко не уйду. Плюс, нашел информацию, что DisplacementMapFilter с большими BitmapData начинает сильно просаживать FPS. Какие пока вижу решения:
1. Генерировать все текстуры с множества тайлов(подходящих друг к другу) - множества, так как хочется создать довольно реалистичную воду(такая общая стилистика игры), без ярко выраженных повторяющихся элементов.
2. Попробовать использовать для DisplacementMapping-а Pixel Bender.

Что можете посоветовать? Алгоритмы, хитрости, стоит ли копать в указанных направлениях, стоит ли вообще в таком случае делать фулскрин?

Старый 03.02.2012, 08:45
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 2  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Неповторимость тайлинга можно реализовать, например, используя т.н. «Принцип Цикады»
__________________
Дебаггер не предлагать

Старый 04.02.2012, 11:02
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 3  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Спасибо за совет, алгоритм выглядит интересным, до этого использовал Texture Splatting c добавкой рандома.
Попробовал шейдеры, вроде везде повключал ускорение на GPU, результат не особо радует. Алгоритм таков:
При смене размеров сцены генерируем спрайт с тайлами, размер равен размеру сцены, рисуем его в битмапу - это будет база для применения шейдерного фильтра. По-хорошему надо бы еще отдельно сгенерировать битмапу для тектуры смещения, но я просто добавляю начальный сдвиг к координатам и использую данные с одной текстуры. Таким образом, в шейдер передаем: текстуру воды, время, и размер текстуры(для зацикливания текстуры в шейдере - аналогов TextureWrapping из OpenGL для Flash я не нашел, увы...может чего подскажите, чтобы убрать из шейдера операцию?). В итоге получаем визуально приемлимый результат(с тайлами и цветами еще надо поиграться) для нормального режима. В фулскрине даже при разрешении 1366х768 выжать больше 18.3 FPS не получилось. А ведь в игре планируются частицы(Flintparticles), работа с сервером на Socket...Видимо, остается только делать много анимированных тайлов(бедный дизайнер) + Texture Splatting + использовать «Принцип Цикады».

Да, вот результат:
http://c4.site90.com/flash/water/new/
Графика не моя, используется только для демонстрации, взял с одной похожей по тематике игрушки.
Для фулскрина в консоли нужно ввести комманду "/fs"(без кавычек).

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

Теги
DisplacementMapping , PixelBender , Вода , изометрия

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

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


 


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


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