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