Registriert: Mi Jul 11, 2018 17:32 Beiträge: 10
Programmiersprache: C++
Hey, ich spiele in Moment mit dem geometry shader rum. Hatte vorher noch garkeine Erfahrung damit gemacht. Ich möchte ganz gerne ein Particle System erstellen welches GL_Points erzeugt, über den Geometry Shader ein Viereck für jeden Punkt zeichnet und auf dieses Viereck dann eine Textur läd. z.B. um Rauch zu erzeugen.
1. Frage: Wie kann ich die Texturkoordinaten erstellen? Problem ist ja das dies irgendwie im Geometry Shader erzeugt werden muss da erst im Geometry Shader das entgültige Objekt erstellt wird.
2. Frage: Wie veränder ich die Position der Punkte bzw. der Vierecke? In Moment mache ich es mit einem uniform vec3 array und aktualisiere das array in einer Update Funktion damit die Vierecke sich bewegen. Wenn ich jetzt aber um die 1000 Punkte erzeuge wird das ziemlich rechenintensiv. Gibt es da eine bessere Möglichkeit?
Bis jetzt funktioniert eigentlich alles so wie es soll, nur eben noch ohne Texturen. Andere Tipps wie ich so etwas gut umsetzten kann nehme ich gerne an Geometry Shader würde ich aber gerne verwenden.
Hier werden nur die Mittelpunkte der Rechtecke via glBufferData(... dem Shader übergeben, die Rechtecke und die Textur-Koordinaten werden im Geo-Shader berechnet. Die Rechtecke drehen sich im Kreis, dies sind man natürlich im Anhang nicht
Registriert: Mi Jul 11, 2018 17:32 Beiträge: 10
Programmiersprache: C++
Genau so etwas hab ich gesucht. Danke!! Funktioniert jetzt auch, könnte aber natürlich schöner sein Mich würde mal interessieren wie man so etwas hin bekommt https://www.youtube.com/watch?v=2vc2hPAZWhw weiß jemand wie man das umsetzt?
Ich habe da etwa, was dir weiter helfen könnte, ein uraltes DOS-Program, "fire.pas" Der ASM-Teil ist nur um in den Grafik-Modus zu schalten und die Farb-Palette zu modifizieren.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Zum Bewegen der Partikel: Du kannst einen Vertex-Shader mit Transform-Feedback nutzen, um einen Vertexbuffer zu aktualisieren. Dazu brauchst du zwei Vertexbuffer, die du abwechselnd nutzt (Ping-Pong-Rendering). Coolcat hat dazu mal ein Tutorial geschrieben, das zwar schon fast zehn Jahre alt, aber vom Prinzip immer noch gültig ist. Auf die Extensions kann man heutzutage jedoch verzichten, denn OpenGL 3.2+ ist das alles Teil der Core-Funktionalität.
Je nachdem, wie komplex die Bewegungsberechnung ist, kann man durchaus einige hunderttausend (oder mehr) Partikel auf einer Onbpard-Grafik animieren. Gut, wahrscheinlich willst du auch noch Ressourcen für andere Dinge frei haben.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.