Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 16:40

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Particle System mit Geometry Shader
BeitragVerfasst: So Jul 29, 2018 15:41 
Offline
DGL Member

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.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jul 29, 2018 19:12 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Meinst du so etwas wie in dieser Art ?

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

Die Sourcen sind hier: https://github.com/sechshelme/Lazarus-O ... der_Textur

Ich hoffe dies hilft dir weiter. :wink:


Dateianhänge:
Bildschirmfoto vom 2018-07-29 20-07-16.png
Bildschirmfoto vom 2018-07-29 20-07-16.png [ 18.38 KiB | 13879-mal betrachtet ]

_________________
OpenGL
Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jul 29, 2018 21:01 
Offline
DGL Member

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 :D
Mich würde mal interessieren wie man so etwas hin bekommt https://www.youtube.com/watch?v=2vc2hPAZWhw weiß jemand wie man das umsetzt?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jul 29, 2018 21:33 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
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.

Ich denke, dies könnte man auch im Shader berechnen.
So wie ich das Mandelbrot hier gemacht habe: https://wiki.delphigl.com/index.php/Laz ... Mandelbrot


Dateianhänge:
Bildschirmfoto vom 2018-07-29 22-31-23.png
Bildschirmfoto vom 2018-07-29 22-31-23.png [ 20.01 KiB | 13876-mal betrachtet ]
fire.tar.gz [1.26 KiB]
431-mal heruntergeladen

_________________
OpenGL
Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Aug 01, 2018 15:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
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)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.034s | 19 Queries | GZIP : On ]