Material System



  • Ich hatte bisher immer so meine Probleme mit den Shadern und seit einer Weiler möchte ich die Shader in ein Material System verpacken. Die Idee ist folgende:

    - Es gibt eine Shader Klasse die ein ganzes shader program beinhaltet. Von dem Shader kann man nun ein Material erstellen, welches an den jeweiligen Shader angepasst ist. Dieses Material hat dann z.B. 8 Texturen und ein paar Uniforms, der einfach heit einfach immer 4er floats die als paket ein Register darstellen. Jedes Mesh das nun gerendert wird hat ein Zeiger auf solch ein Material, welches der Nutzer selbst bestimmen kann.

    Dem ganzen stehen nun nurnoch 2 Dinge im Weg:
    1. Ist das System durchsetzbar, oder gibt es bessere Wege ein Material system zu realisieren.
    2. Wie bekomme ich raus, welche register alles im Shader genutzt werden, damit ich dem float array eine gewisse größe verleihen kann.

    //Edit: Ich sollte wohl noch erwähnen das ich mit OpenGL und GLSL arbeite, das System sollte aber auch auf DX portierbar sein (denke ich).



  • Potatoman schrieb:

    //Edit: Ich sollte wohl noch erwähnen das ich mit OpenGL und GLSL arbeite, das System sollte aber auch auf DX portierbar sein (denke ich).

    Dann schau dir vielleicht mal Cg an. Mit CgFX hast du da praktisch eine portable Variante des Direct3D Effekt Framework die unter OGL und D3D läuft.



  • Cg klingt interessant, würde dann aber denke ich eher nur Cg anstatt CgFX nutzen. Ob ich das ganze auf DX erweitern werde steht noch in den sternen, da ich mich bereits schon viel zu lange mit der Engine beschäftige und es langsam nervt irgentwelche fatale Design-Fehler zu finden und das ganze praktisch nochmal neu auf zu ziehen.

    Ich möchte bald endlich damit anfangen das Spiel zu machen. Ich würde also erstmal gerne auf GLSL aufbauen.


Anmelden zum Antworten