Я работаю над довольно графической 2D-игрой на основе плиток, вдохновленной Dwarf Fortress. Я нахожусь в стадии реализации реки в игровом мире, которая охватывает несколько плиток, и я рассчитал направление потока для каждой плитки, как показано ниже красной линией в каждой плитке.
Для справки о графическом стиле, вот как выглядит моя игра в настоящее время:
Мне нужна какая-то техника для анимации воды, протекающей в каждой из речных плиток, чтобы поток сливался с окружающими плитками, чтобы края плиток не были видны.
Ближайший пример, который я нашел к тому, что мне нужно, описан по адресу http://www.rug.nl/society-business/centre-for-information-technology/research/hpcv/publications/watershader/, но я не совсем в состоянии быть в состоянии понять, что происходит в нем? У меня достаточно понимания программирования шейдеров, чтобы реализовать собственное динамическое освещение, но я не могу полностью разобраться в подходе, принятом в связанной статье.
Может ли кто-нибудь объяснить, как достигается вышеуказанный эффект, или предложить другой подход, чтобы получить желаемый результат? Я думаю, что частью вышеупомянутого решения является наложение плиток (хотя я не уверен, в каких комбинациях) и вращение карты нормалей, используемой для искажения (опять же, без понятия о специфике) и прошлого, в котором я немного растерялся, спасибо за любая помощь!
Ответы:
У меня не было удобных плиток, которые выглядели бы хорошо с искажением, поэтому вот вариант эффекта, который я смоделировал с этими плитками Кенни :
Я использую такую схему, где красный = правый поток, а зеленый = вверх, желтый - оба. Каждый пиксель соответствует одному тайлу, причем нижний левый пиксель является тайлом в (0, 0) в моей мировой системе координат.
И текстура волновой картины, как это:
Я наиболее знаком с синтаксисом в стиле hlsl / CG в Unity, поэтому вам нужно немного адаптировать этот шейдер для своего контекста glsl, но это должно быть просто.
источник