Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • VkCV Framework VkCV Framework
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 27
    • Issues 27
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 6
    • Merge requests 6
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Vulkan2021
  • VkCV FrameworkVkCV Framework
  • Issues
  • #10
Closed
Open
Issue created May 01, 2021 by Mark Oliver Mints@mmintsMaintainer

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 May 05, 2021 by Artur Wasmut
Assignee
Assign to
Time tracking