Przede wszystkim to pracuję z 2D.
Nie szkodzi. Możesz korzystać wyłącznie z dwuwymiarowych obiektów, a mimo to stworzyć świat wyglądający jak trójwymiarowy. Ot zobacz sobie jakie cuda ludzie potrafili robić z rzutem izometrycznym.
Nie da się częściowo zarysować kamieni wodą, gdyż woda to jeden duży obiekt 2D.
Ten problem da się łatwo rozwiązać, korzystając z warstw. Nie tylko mógłbyś swobodnie renderować wodę, ale i stawiać obiekty na wodzie. Ba, mógłbyś też imitować ich częściowe wystawanie ponad wodę — wystarczy aby warstwa wody była półprzezroczysta.
W uproszczeniu — na warstwie umieszczonej najniżej renderujesz dno i fragmenty obiektów znajdujące się pod wodą, na warstwie wyżej renderujesz wodę (półprzezroczystą i z szumem, czyli shader robi to co chcesz), a na warstwie wyżej wody renderujesz fragmenty obiektów wystające ponad lustro wody.
Warstwy są bardzo łatwe w implementacji, a do tego dają niesamowicie dużo możliwości. Do tego ich obsługa w edytorze dawałaby Ci nie tylko możliwość tworzenia sztuczek wizualnych (tak jak z tymi obiektami w połowie wystającymi z wody), ale też ułatwiłaby Ci tworzenie samych map. Mógłbyś np. pokazać tylko tę warstwę, na której pracujesz, a resztę ukryć — obiekty z innych warstw nie przeszkadzałyby Ci np. podczas wypełniania warstwy podłoża (np. budynki czy drzewa nie zasłaniałyby terenu).
Renderowanie mapy złożonej z warstw jest banalne — na teksturach warstw renderujesz kafle/obiekty, a na koniec teksturę każdej warstwy renderujesz w oknie, od tej najniższej (np. dna zbiorników wodnych, obiekty podwodne, lustro wody, podłoże, obiekty na podłożu). Tych warstw możesz mieć dowolnie dużo, w zależności od wymagań. Przy czym fragmenty obiektów wystających ponad wodę mogą być zawarte w tej warstwie, która posiada obiekty renderowane po namalowaniu terenu (nie musi być dla nich warstwy dedykowanej).
Natomiast kolejność renderowania obiektów w pojedynczej warstwie zależy od ich z-order — standardowo. Zapewne trzymasz je w jakiejś liście, więc te renderujesz od pierwszego obiektu w liście, do ostatniego.