-
Gesamte Inhalte
2.040 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
145
Zer0Cool's Achievements
Advanced Member (3/3)
416
Ansehen in der Community
Einzelstatus Update
Zeige alle Updates von Zer0Cool
-
Testlauf mit einem Grasshader der nun endlich ohne Windzone und ohne Unityterrain funktioniert. Ich habe diesen Shader aus Teilen des Unity "Tree Creator Leaves" Shader und dem "Grass Billboard" Shader zusammengesetzt. Normal sollte er daher auch ein Translucent Shader sein, aber schwer zu sagen, ob ein wahrnehmbarer Effekt erreicht wird.
Ich möchte diesen Shader nun weiter umarbeiten, damit er instanziiert werden kann und ich ihn dann massenhaft auf einem Mesh einsetzen kann.
Das Mühsame dabei war, daß nirgend irgendwelche Informationen zu den Parameters dieser Shader zu bekommen sind. Zudem musste ich den Shader umschreiben, damit er ohne Vertexfarben klarkommt.
Video: https://streamable.com/ulptf-
Ich hab letztens ein Tutorial zu einem Grasshader mit einem Geometry Shader und einer Point Cloud gesehen. Fand ich extrem nice und benutze ich auch zur Zeit. Habe mehrere tausend Grasbüschel rumgammeln, die auch unabhängig von Windzone und Unityterrain gerendert und auch animiert werden können.
Wie generierst du eigentlich die Positionen der Grasbüschel?
-
Ist denke das ist auch eine sehr gute Lösung. vor allem für Billboardgras.Unity hat es in ihrem Adam-Demo mit ihrem Gras auch so gemacht (habs mir letztens mal im Detail angeschaut, leider fehlen meiner Meinung nach sämtliche Hilfstools fürs Erstellen des Terrains, so daß sie uns nur das fertige Terrain und die Shader gegeben haben)...
Ich möchte aber verschiedene Grasmeshes verwenden, diese bestehen zum Teil aus mehreren Faces und Texturen daher haben ich vor diesen Shader nun in einen instanzed Shader umzuwandeln und das Erzeugen des Meshes in die GPU zu verlagern. Ich habe vor die Positionen des Unityterrains einfach zu übernehmen, später könnte man aber das Gras auch einfach über einen "Meshpainter" auf unterschiedliche Oberflächen auftragen. Für die Positionen muss man die Detail Prototyp-Positionen aus dem Terrain auslesen. Dies hat auch gleich den Vorteil, daß ich die Instanzfarbe und die Instanzgröße und die Instanzworldposition an den Shader (wird in meinem Shader anstellen von Vertexfarben verwendet) übertragen kann.
-
Hab mir gerade mal das 1. Video angeschaut, war interessant wie er die Matrix für DrawMeshInstanced erstellt und daß er auch einen Mesh für sein Gras verwenden möchte, also keine Billboard, sondern 2 Typen mit Inner- oder Outersections. Die Variante mit den Innersections kannte ich schon (allerdings nur mit 2 Quads) die Outersections ist neu für mich, man lernt nie aus. Ich denke dies kann man auch gut für Bäume in der Ferne verwenden. Die Grasmeshes die ich aus einem Asset habe und verwenden möchte benutzen eher so eine Art "verschobene Outersections"
Beim 2. Video bekommt man auch gleich einen Pointcloud-Renderer nicht schlecht... Um Minute 20 ist es aber echt böses Shaderhacking ^^
Nach dem 2. Video: Das ein Geometry-Shader nicht mit einem Surfaceshader zusammen arbeiten soll, da bin ich noch nicht überzeugt von .. Muss mir noch das 3. Video anschauen.
-