Ich versuche, den Effekt der Wasseroberflächendicke mit einem Vertex-Fragment-Shader zu erzeugen.
Ich bin in einer 3D-Spielumgebung, aber es ist eine Bildlaufansicht, also eine "2D" -Ansicht.
Hier ist ein gutes Tutorial zum Erstellen eines solchen Effekts in echtem 2D mit dem Fragment-Shader.
Aber das kann in meinem Fall nicht verwendet werden, denke ich. Im Moment habe ich nur ein Flugzeug, auf dem ich die Brechung anwende.
Und ich möchte den Wasserdickeneffekt anwenden. Aber ich weiß nicht, wie ich es machen soll.
Ich versuche im Moment nicht, eine Wasserverformung / -verschiebung mithilfe des Scheitelpunkts zu erzeugen. Dies ist nicht der Punkt.
Ich weiß nicht, ob es mit einem einfachen Quad möglich ist, sollte ich vielleicht ein Objekt wie dieses verwenden.
Hier sind einige Beispiele.
Ich habe keine Ahnung, wie ich diesen Effekt erzeugen soll.
Vielen Dank !
[ BEARBEITEN ] Rayman-Wassereffekt hinzugefügt, um eine bessere Referenz des Effekts zu erhalten.
Antworten:
Geben Sie im Shader einen Wert an, der die Nässe angibt. Kleiner als 0 bedeutet Luft, größer als 1 bedeutet Wasser und dazwischen bedeutet Meniskus.
Hier ist ein Pseudocode:
Dies ist das einfachste, was ich machen kann. Wenn ich es wäre, würde ich etwas komplizierteres tun, um den Meniskus zu antialisieren und dort mehr Brechung anzuwenden oder so, aber ich kann Ihnen nicht sagen, was, weil es ästhetische Iterationen erfordern würde. Außerdem würde ich die Wasserprobe tönen und verwischen. Aber das alles überlasse ich dir.
quelle