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);
Edited by Ghost User