Pracuję nad odgórną, dość graficzną grą 2D inspirowaną Dwarf Fortress. Jestem na etapie wdrażania rzeki w świecie gry, która obejmuje wiele płytek, i obliczyłem kierunek przepływu dla każdej płytki, jak pokazano poniżej czerwoną linią na każdej płytce.
Dla odniesienia do stylu graficznego, oto jak obecnie wygląda moja gra:
Potrzebuję jakiejś techniki animacji wody przepływającej w każdym z kafelków rzeki, aby przepływ wtapiał się w otaczające kafelki, tak że krawędzie kafelków nie są widoczne.
Najbliższy przykład, jaki znalazłem, do czego dążę, został opisany na stronie http://www.rug.nl/society-business/centre-for-information-technology/research/hpcv/publications/watershader/, ale nie jestem całkiem w momencie, gdy rozumiem, co się w nim dzieje? Mam wystarczającą wiedzę na temat programowania shaderów, aby zaimplementować własne dynamiczne oświetlenie, ale nie mogę się skupić na podejściu zastosowanym w powiązanym artykule.
Czy ktoś mógłby wyjaśnić, w jaki sposób osiąga się powyższy efekt lub zasugerować inne podejście do uzyskania pożądanego rezultatu? Myślę, że część powyższego rozwiązania pokrywa się z kafelkami (choć nie jestem pewien, w których kombinacjach) i obraca normalną mapę użytą do zniekształcenia (znowu nie mam pojęcia o szczegółach) i przeszłość, że jestem trochę zagubiony, dzięki za jakaś pomoc!
Odpowiedzi:
Nie miałem pod ręką żadnych kafelków, które wyglądałyby dobrze przy zniekształceniach, więc oto wersja efektu, z którego wyśmiewałem te kafelki Kenneya :
Korzystam z takiej mapy przepływów, gdzie czerwony = przepływ w prawo i zielony = w górę, żółty to oba. Każdy piksel odpowiada jednemu kafelkowi, przy czym lewy dolny piksel jest kafelkiem o (0, 0) w moim światowym układzie współrzędnych.
I taka tekstura wzoru fali:
Najbardziej znam składnię Unlsa w stylu hlsl / CG, więc musisz nieco dostosować ten moduł cieniujący do kontekstu glsl, ale powinno to być proste.
źródło