Спасибо за статью, вы на пути генерации процедурных карт). Поделитесь информацией насчет анимированных шумов, может какую-то ссылку дадите? Я так понимаю, что анимировать шум можно увеличив его размерность, т.е. изменять поверхность полны смещаясь по двумерному массиву. Проблемка пока в анимации 2d структур, поскольку 3d текстуру нельзя передать в шейдер на ios. В общем за любую информацию по этой части заранее спасибо.
И еще вопрос по части производительности. Воду я так понимаю вы воду рисуете фрагментным шейдером, или что-то недопоняла? У меня самый простецкий шейдер на iphone4 кладет fps ниже 30, если его на весь экран применять. Хотя там по сути совсем маленькая псевдо-анимация шума:
Насколько я поняла по анализу перфоманса, когда текстура читается непоследовательно, а зависимо от переменных происходит сильное замедление. Видимо в это и есть причина. Согласна, что для новых устройств это уже утрачивает актуальность.
Да, на четверке смотрю. На ipad-mini ситуация получше. Но все-таки это довольно странно. Я работаю на cocos2d и там огромное множество преобразований со спрайтами, и fps не падает. А тут от одной картинки все так опустилось. В предложенном методе, вообще, исключительно линейные преобразования, которые GPU по сути должен на раз-два делать. Возможно тут переключение между текстурами играет нехорошую роль. Но за статью и за идею Вам спасибо, при любом fps).
Отличная статья!
И очень хорошая идея. Ваш код и «хак» arbg-формата отлично работает на IOS.
Попробовала сделать на IPhone,
Одна проблема с fps. С чего ей так падать непонятно, может у кого есть мысли насчет этого?
Причем пробовала сделать нативные шрейдеры, которые сами делают преобразование из декартовых в сферические, но тоже грустно получилось с производительностью.
И еще вопрос по части производительности. Воду я так понимаю вы воду рисуете фрагментным шейдером, или что-то недопоняла? У меня самый простецкий шейдер на iphone4 кладет fps ниже 30, если его на весь экран применять. Хотя там по сути совсем маленькая псевдо-анимация шума:
noisevec = texture2D(uTexture0, Position.xy);
noisevec = texture2D(uTexture0, vec2 (Position.x+noisevec[1], Position.y-noisevec[3]+Offset));
Как вариант только отключать retina на 4-ке.
И очень хорошая идея. Ваш код и «хак» arbg-формата отлично работает на IOS.
Попробовала сделать на IPhone,
Одна проблема с fps. С чего ей так падать непонятно, может у кого есть мысли насчет этого?
Причем пробовала сделать нативные шрейдеры, которые сами делают преобразование из декартовых в сферические, но тоже грустно получилось с производительностью.