Skip to content

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