Estoy trabajando en un juego 2D bastante gráfico basado en mosaicos de arriba hacia abajo inspirado en Dwarf Fortress. Estoy a punto de implementar un río en el mundo del juego, que cubre varias fichas, y he calculado la dirección del flujo para cada ficha, como se muestra a continuación por la línea roja en cada ficha.
Como referencia del estilo gráfico, así es como se ve mi juego actualmente:
Lo que necesito es alguna técnica para animar el agua que fluye en cada una de las baldosas del río, de modo que el flujo se mezcle con las baldosas circundantes para que los bordes de las baldosas no sean evidentes.
El ejemplo más cercano que he encontrado a lo que estoy buscando se describe en http://www.rug.nl/society-business/centre-for-information-technology/research/hpcv/publications/watershader/ pero no estoy del todo a punto de poder entender lo que está sucediendo en él? Tengo suficiente conocimiento de la programación de sombreadores para implementar mi propia iluminación dinámica, pero no puedo entender el enfoque adoptado en el artículo vinculado.
¿Podría alguien explicar cómo se logra el efecto anterior o sugerir otro enfoque para obtener el resultado que quiero? Creo que parte de la solución anterior es superponer los mosaicos (aunque no estoy seguro de en qué combinaciones) y rotar el mapa normal utilizado para la distorsión (una vez más, no tengo idea de los detalles) y más allá de que estoy un poco perdido, gracias por ¡alguna ayuda!
Respuestas:
No tenía ningún mosaico a mano que se viera bien con distorsión, así que aquí hay una versión del efecto que me burlé con estos mosaicos de Kenney :
Estoy usando un mapa de flujo como este, donde rojo = flujo hacia la derecha y verde = hacia arriba, siendo el amarillo ambos. Cada píxel corresponde a un mosaico, y el píxel inferior izquierdo es el mosaico en (0, 0) en mi sistema de coordenadas mundial.
Y una textura de patrón de onda como esta:
Estoy más familiarizado con la sintaxis de estilo hlsl / CG de Unity, por lo que deberá adaptar este sombreador un poco para su contexto glsl, pero debería ser sencillo.
fuente