1
0
Go to file
2022-05-21 22:33:12 +02:00
glad Imported glad; cleaned up opengl init code; fixed some 2020-03-31 15:09:05 +02:00
glfw add dependencies for building on windows. Vulkan SDK must be provided on windows systems. 2022-05-21 22:33:12 +02:00
shaders add linux port 2021-11-26 17:07:18 +01:00
.gitignore add .gitignore to ignore build and idea specific files 2022-05-21 18:14:55 +02:00
CMakeLists.txt add dependencies for building on windows. Vulkan SDK must be provided on windows systems. 2022-05-21 22:33:12 +02:00
cpuMain.c changed vulkan_sdk path in compile_shader to newer versions 2021-03-03 17:19:21 +01:00
Informatikprojekt_release_01042020.pdf Added final project paper. 2020-04-07 08:53:28 +02:00
initOpenGL.c Finished for Abgabe 2020-04-01 22:17:35 +02:00
initOpenGL.h add linux port 2021-11-26 17:07:18 +01:00
initVulkan.c use another validation layer hence the old one is not available on newer vulkan sdk 2021-03-03 17:47:59 +01:00
initVulkan.h Finished for Abgabe 2020-04-01 22:17:35 +02:00
MingWWindowsBuild.cmake add dependencies for building on windows. Vulkan SDK must be provided on windows systems. 2022-05-21 22:33:12 +02:00
openglMain.c Finished for Abgabe 2020-04-01 22:17:35 +02:00
particlesystem.c Finished for Abgabe 2020-04-01 22:17:35 +02:00
particlesystem.h Finished for Abgabe 2020-04-01 22:17:35 +02:00
README.md add linux port 2021-11-26 17:07:18 +01:00
utils.c Finished for Abgabe 2020-04-01 22:17:35 +02:00
utils.h Cleanup 2020-04-01 14:40:21 +02:00
vulkanMain.c Finished for Abgabe 2020-04-01 22:17:35 +02:00

Informatikprojekt: Performancevergleich eines Partikelsystem umgesetzt mit OpenGL und Vulkan

Informationen

Autor: Niklas Birk
Betreuer: Prof. Dr. Daniel Scherzer
Fach: Informatikprojekt

Paper

Die schriftliche Ausarbeitung des Themas ist in Informatikprojekt (PDF) zu finden. In dieser Arbeit wird eine Einführung in Partikelsysteme und Grafik-APIs beschrieben. Anschließend wird die Implementierung des Projektes beschrieben. Die Implementierung wird benötigt, um einen Performancevergleich durchzuführen. Das ist der wissenschaftlichere Teil dieser Arbeit und ist als letzten Teil zu finden.

Projektdateien

Das Projekt enthält im wesentlichen drei Varianten:

  • CPU
  • OpenGL
  • Vulkan

Der Name bezieht sich hierbei auf Art der Simulation der Partikel. Die CPU-Variante simuliert die Partikel auf der CPU, während die anderen beiden Varianten sich die Compute-Funktionalitäten der jeweiligen Grafik-API zu nutze machen.
Bei der CPU- und OpenGL-Variante wird OpenGL zum rendern benutzt und bei der Vulkan-Variante entsprechend Vulkan.

CPU-Variante

Zur CPU-Variante gehören folgende Dateien:

OpenGL-Variante

Zur OpenGL-Variante gehören folgende Dateien:

Vulkan-Variante

Zur OpenGL-Variante gehören folgende Dateien:

Partikelsystem und Sonstige

Für das Partikelsystem sind folgende Dateien vorhanden:

Ausführung

Cmake erstellt drei Ziele:

  • Informatikprojekt: Die CPU-Variante
  • Informatikprojekt_OpenGL: Die OpenGL-Variante
  • Informatikprojekt_Vulkan: Die Vulkan-Variante

Die Compute-Shader sehen aktuell eine Workgroupgröße von x=1024, y=1 und z=1 vor.
Sollte dies Ihr System nicht zulassen, dann kann das entsprechend in den Shadern geändert werden. Bitte aber auch die Dispatch-Anweisungen anpassen.

Die maximale Anzahl der Partikel ist durch die Dispatch-Anweisungen bzw. die maximale Anzahl an Gruppen beschränkt. Bei meinem System waren es etwas mehr 60 Millionen Partikel. Bei 60 Millionen Partikeln gibt es knapp 60 Tausend Arbeitsgruppen, bei meinem System ist die maximale Anzahl 65536. Sollte also die Ausführung nichts anzeigen, dann kann es sein, dass Sie die Lokale X Größe anpassen müssen. (Anmerkung: Für Partikelanzahl < 1024 sind es zu wenige Gruppen (0), die der Dispatch-Anweisung mit gegeben werden).