Jump to content
Unity Insider Forum

Welleneffekt bei Sand


Kojote

Recommended Posts

Grüße!

Ich tüftel gerade an einem Untergrund, es ist ein Sanduntergrund. Eine Textur auf eine Plane sieht recht unschön aus. Ich wollte gern etwas Struktur einbringen. Frage ist wie? Ich bin gerade auf die Idee gekommen, dass mit einem Wasser-Shader zu machen, um leichte Welleneffekte zu bekommen. Shader scheint aber nicht so zu funktionieren.

Habt ihr ne Idee wie man das machen kann?

Kojote

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist ein spezieller Shader und 3(+1) Texturen. Die Texturen erzeugen dabei die Wellenform, d.h. wenn du das Scaling der Texturen anpasst, dann kann man es auch kleiner und größer machen (ist also kein Problem). Der Shader ist ein normaler Shader (albedo+normal) mit Parallax-Feature. Über die Parallaxtextur heben die Wellen quasi zusätzlich ab.

Die Bewegung hab ich einfach über ein kleines C#-Skript gemacht, dabei werden einfach die Texturoffset gescrollt. Zusätzlich hab ich noch den Parallaxeffekt dynamisch im Laufe der Zeit verschoben.

Hier ist der Effekt mit Scaling 2 auf einem 1x1 Unity-Cube. 
Ist ein Unity Quad mit dem Effekt und der Cube liegt einfach darunter.

sbrTnW1.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen vielen Dank, bin heute leider nicht da, aber heut Abend schau ichs mir mal an! :)

EDIT:

OK, will man ein mal Skifahren gehen und was passiert... Die gesamte Nacht Dauerregen und die Piste ist nur noch ne Matschepampe! :wacko:

OK, Planänderung, kommen wir zurück zu Unity! :lol:

Sag mal, jetzt hab ich nur drei Objekte in deiner Sandscene. Das Licht, die Kamera und Quad Big. Frage wäre wieder mal, warum ist meine Sandebene mit Prefabs von dir wieder mal wesentlich heller als in deiner Scene?

Das Material wird in der richtigen Farbe angezeigt, nur auf dem Objekt ist es viel zu hell.

Vergleich.jpg

EDIT 2: Der schildige war wieder mal Color Space. Habe mal von Gamme auf Linear geschalten. Beim letzten Projekt habe ich genau das Gegenteil gemacht. Irgendwie kappier ich den Unterschied zwischen beiden nicht. :wacko:

EDIT 3: Also ich habs nun schon über X und Y versucht, hab das Modell geändert und sonst was. Aber die Richtung kann man nur im gesamten Steuern. Das Ziel, die Textur nach innen fließen zu lassen, zum Mittelpunkt des Objekts, ist echt ne harte Nuss!

Link zu diesem Kommentar
Auf anderen Seiten teilen

2)
Ja, ist der Colorspace. "Linear" liefert die bessere Qualität ähnlich wie bei "Forward Rendering" vs "Deferred-Rendering". Man kann bestimmte Kameraeffekte (wie Bloom) nur im Linearspace verwenden.

3)
Ja ist denke ich nicht leicht. X und Y steuern im Endeffekt die Fließrichtung anhand der UVs der Textur. 
Ich denke für ein Fließen nach Innen musst du an den UVs deines Modells schrauben, aber wie bin ich auch überfragt.

oder wiederum einen anderen Shader nehmen. Schwebt dir sowas vor? Dann könnte ich beide Shader verbinden, also einen Parallax-Swirl-Shader :D
https://gist.github.com/ya7gisa0/5e8c093a2a13a1d4696d05f97227239b
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier hier der neue Shader sind 2 Dateien:
https://ufile.io/kys2x

In Unity dann ein neues Material erstellen und den Shader zuweisen. Nicht wundern, ich habe dem Custom-Inspektor vom Shader entfernt, dadurch sehen die Properties nun entsprechend anders aus:

G4klEjL.jpg

Wenn du dieses Material dann einer kleineren Fläche etc zuweist, dann muss folgende Settings anpassen:
- Tiling
und 
- Swirl Tiling (hier nur x und y ändern, der Rest ist egal)

Damit passt du die Texturgröße an das Mesh an und den Swirleffect.

Ich muss in den Shader noch was einbauen, damit man die Zeit besser steuern kann, muss ich mal schauen.
Das Scrollskript übrigens entfernen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Diese Files waren in dem alten Projekt enthalten, was ich bereits oben verlinkt hatte. 

Aber hier noch einmal alle Shader inklusive der fehlenden Files (bin zu faul jetzt die Abhängigkeiten herauszusuchen, daher alle Files):
https://ufile.io/axpqo

(hab das Custom Editorskript auch mit eingepackt, sonst meckert er bestimmt wieder rum)


 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habs nun mal ausprobiert, der Shader "swirl" funktioniert, "My First Lighing Shader Swirl" funktioniert leider nicht. Hab da jetzt ne ganze weile mit Einstellung herum gespielt, aber reagiert nicht.

Von dem was ich beim "Swirl" gesehen habe. Ist es möglich zu sagen, wie weit er sich dreht, bzw. das über Methode anzusprechen? Das er sich, was weiß ich 10 Umdrehung dreht und dann wieder zurück auf seine Ausgangslage? Kenne mich mit Shadern nicht aus, keine Ahnung ob so etwas möglich ist.^^

Aber echt nen toller Shader!:)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Shader funktioniert schon, aber bei mir ging er erst nachdem ich ein paar mal die Texturen in den Slots ausgetauscht hatte.. Frag mich nicht warum.
Ich habe auf "My First Lightning Shader" eingestellt und dann "Normals"  und "Parallax"-Textur gesetzt. Nachdem ich diese ein paar mal geändert hatte sprang der Shader plötzlich an. Danach konnte ich auf den  "My First Lightning Shader Swirl" umschalten und er ging auch .. frag mich nicht was das für ein komisches Updateproblem ist ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mhh also erst einen "My First Lightning Shader" Shader erstellen:
- Albedo setzen "ground_desertSandDuneless_2k_alb_s"
- Parallax setzen "Sand (Beachripples) 1_DISP"
- Silder auf 0.0473
- Normal setzen "Sand (Beachripples) 1_NRM"
- Value auf 0.57
- Occlusion setzen "Sand (Beachripples) 1_OCC"
- Shader umstellen auf "My First Lightning Shader Swirl"

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...