Estou trabalhando em um jogo 2D gráfico bastante gráfico de cima para baixo inspirado em Dwarf Fortress. Estou no ponto de implementar um rio no mundo do jogo, que abrange um número de peças, e calculei a direção do fluxo de cada peça, como mostrado abaixo pela linha vermelha em cada peça.
Para referência ao estilo gráfico, veja como está o meu jogo atualmente:
O que eu preciso é de alguma técnica para animar a água que flui em cada um dos ladrilhos do rio, para que o fluxo se misture aos ladrilhos circundantes, para que as bordas dos ladrilhos não sejam aparentes.
O exemplo mais próximo que encontrei do que estou procurando é descrito em http://www.rug.nl/society-business/centre-for-information-technology/research/hpcv/publications/watershader/, mas não sou bem assim a ponto de ser capaz de entender o que está acontecendo nele? Eu tenho uma compreensão suficiente da programação de shader para implementar minha própria iluminação dinâmica, mas não consigo entender completamente a abordagem adotada no artigo vinculado.
Alguém poderia explicar como o efeito acima é alcançado ou sugerir outra abordagem para obter o resultado desejado? Eu acho que parte da solução acima é sobrepor os blocos (embora eu não tenha certeza de quais combinações) e girar o mapa normal usado para a distorção (mais uma vez, nenhuma idéia sobre detalhes) e passado que estou um pouco perdido, obrigado por qualquer ajuda!
Respostas:
Eu não tinha nenhum bloco à mão que parecesse bom com distorção, então aqui está uma versão do efeito que eu zombei desses blocos de Kenney :
Estou usando um fluxograma como este, em que vermelho = fluxo para a direita e verde = para cima, sendo o amarelo ambos. Cada pixel corresponde a um bloco, com o pixel inferior esquerdo sendo o bloco em (0, 0) no meu sistema de coordenadas do mundo.
E uma textura de padrão de onda como esta:
Eu estou mais familiarizado com a sintaxe hlsl / CG do Unity, então você precisará adaptar esse shader um pouco para o seu contexto glsl, mas deve ser fácil de fazer.
fonte