Shader Program Class

Die ShaderProgram Klasse die den Shadercode lädt und in unsere Pipeline schiebt. Grundlegend sollte diese generisch für alle Stages von Shader (Vertex, Fragement,...) funktionieren.

Erste Schritte:

  • Lesen: die Spezifikation, ein einfaches Tutorial für den Einstieg
  • Branch auschecken, unser Projekt bauen und starten. Klappt alles soweit?
  • Rumspielen: Shader Code schreiben und in Spir-V kompilieren und mal ausführen. Danach den Shadercode vom Pfad laden und im Program code in Spir-V übersetzten.

Application Beispiel:

ShaderProgram program = {};
program.addShader("/path/to/triangle.vert");
program.addShader("/path/to/triangle.frag");

Im Hinterkopf sollten wir die Shader-Graph Idee behalten. Dazu auch noch Materialien von Assets. Beispiele:

Reflection-Beispiel

// um herauszufinden, welche Daten ein Vertex hat (pos, normal, uv, etc.)
VertexLayout layout = program.getVertexLayout();
// um herauszufinden, welche "slots" für Materialien genutzt werden
// (set 1, binding 0) -> DiffuseTexture, (set 1, binding 1) -> NormalTexture, etc.
MaterialDescription = program.getMaterialDescription();

Material-Beispiel

// setTexture(const Texture &tex, uint32_t binding_ID)
program2.setTexture(model.getMaterial()[0], 0);

CC: @lfranken @mvogt @shermann04 @awasmut @mmints

Edited by Ghost User