OpenCL Partikle-Engine mit OpenGL visualisiert

Als kleines Hobbyprojekt und vorallem zum Kennenlernen von OpenCL, hab ich eine kleine Partikel-Engine geschrieben.

Angeregt durch das CUDA Projekt von Craig Mouser und sein Video auf YouTube habe ich die Partikelberechnung in OpenCL umgesetzt und mit Hilfe von OpenGL und Qt visualisiert.

Beim OpenGL-Code war mein Ziel, die seit OpenGL 3.0 abgelöste „Fixed Function Pipline“, nicht zu verwenden. Stattdessen hab ich die OpenGL-Visualisierung mit Hilfe der OpenGL-API in der Version 4.1 geschrieben.

Die Berechnung der Partikel erfolgt im dreidimensionalen Raum und wird durch eine „Bounding Box“ begrenzt, die Partikel prallen dabei von den Seiten der „Bounding Box“ ab und fallen durch die Gravitation bedingt nach unten. Zusätzlich kann noch eine punktuelle Kraft angelegt werden, die die Partikel anzieht oder abstößt. Die Simulation läuft auf meiner Hardware (s.u.) bis ca. 12 Millionen Partikel in Echtzeit bei ca. 30-40 Bildern pro Sekunde.

Hier ein Video der Partikel-Engine, wo einige Einstellungen gezeigt werden.

(Durch das Video Capturing ruckelt es etwas, deswegen läuft die Applikation auch nur mit 6 Millionen Partikeln). Die Anwendung läuft unter Windows und Linux, für das Video hab ich mich für Linux entschieden, da hier das Video Capturing besser war.

Für das Video wurde folgende Hardware verwendet:

  • CPU: Core i7 920 @ 2.67 Ghz
  • RAM: 6GB
  • GPU: Nvidia GTX 460 mit 1GB RAM