1
0
Go to file
Niklas Birk dd9a111ef6 Readme
2020-03-31 15:56:44 +02:00
glad Imported glad; cleaned up opengl init code; fixed some 2020-03-31 15:09:05 +02:00
glfw Neuer Ansatz; 2020-03-31 15:09:08 +02:00
shaders Finally finished vulkan to draw 2020-03-31 15:09:08 +02:00
CMakeLists.txt Cleaned up 2020-03-31 15:22:15 +02:00
cpuMain.c memory stuff 2020-03-31 15:09:08 +02:00
initOpenGL.c memory stuff 2020-03-31 15:09:08 +02:00
initOpenGL.h memory stuff 2020-03-31 15:09:08 +02:00
initVulkan.c WORKGROUP_SIZE_X in utils.h erstellt 2020-03-31 15:56:36 +02:00
initVulkan.h WORKGROUP_SIZE_X in utils.h erstellt 2020-03-31 15:56:36 +02:00
openglMain.c WORKGROUP_SIZE_X in utils.h erstellt 2020-03-31 15:56:36 +02:00
particlesystem.c Finished shader; split to targets cpu, opengl and vulkan 2020-03-31 15:09:07 +02:00
particlesystem.h Finished shader; split to targets cpu, opengl and vulkan 2020-03-31 15:09:07 +02:00
README.md Readme 2020-03-31 15:56:44 +02:00
utils.c further vulkan 2020-03-31 15:09:08 +02:00
utils.h WORKGROUP_SIZE_X in utils.h erstellt 2020-03-31 15:56:36 +02:00
vulkanMain.c Cleaned up 2020-03-31 15:22:15 +02:00

Informatikprojekt: Performancevergleich eines Partikelsystem umgesetzt mit OpenGL und Vulkan

Informationen

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

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:

  • vulkanMain.c: Enthält die main-Funktion
  • initVulkan.c: Enthält wesentliches zum initialiseren von Vulkan
  • initVulkan.h: Header-Datei zu initVulkan.c
  • ComputeShader.comp: Der Compute-Shader für Vulkan in GLSL
  • VertexShader.frag: Der Vertex-Shader für Vulkan in GLSL
  • FragmentShader.vert: Der Fragment-Shader für Vulkan in GLSL
  • runCompiler.bat: Eine Batch-Datei zum Übersetzen der Shader in SPIR-V.
    !Bitte den Pfad zur glslangValidator.exe auf Ihrem System anpassen!
    Cmake sollte sich automatisch um das kopieren der Dateien und Ausführen der Batch-Datei im Zielverzeichnis kümmern.

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).