Der Punkt mit den Constant Buffern ist auch bisher mein einziger großer Kritikpunkt, was sich aber vermutlich bei einfachen Anwendungen nicht bemerkbar machen wird denke ich. Bzgl. der Shaderpermutationen hilft mir das Erstellen der techniques, welche Uniform-Paramter besitzen. Das wird zwar bei sehr komplexten Shadern mit vielen Uniforms unübersichtlich, kann mir aber kaum vorstellen, dass die Shader ohne Effektframework besser bei wegkommen. Diese Permutationen sind auch ziemlich leicht selbst über einen kleinen Code-Generator rasch selbst implementiert, wenn die Shader einmal stehen und das Namensschema bekannt ist. Ansonsten hindert mich ja das Framework nicht daran, die Effekt in einer extra Klasse zu kapseln (was bei der Verwendung ohne das Effektframework ohnehin sinnvoll ist).
Ich habe mich auch gerade besonders mit dem Umgang mit Materials in einem 3D-Framework befasst und habe die Auffassung, dass für das Rendern eines Objektes mehrere Quellen für die Shader wichtig sind: Objektmatrizen, Materialinformationen (Farben, Texturen, etc.) und Lichtquellen im Einflussbereich. Das hat doch prinzipiell erstmal gar nichts mit dem Effektframework zu tun. Und bei mir spielt auch noch eine Rolle, dass ich seit DX9 nur damit gearbeitet habe, bequem halt.
Du zählst auch einige Punkte auf, die für mich ehrlich gesagt nahezu gar nichts mit der konkreten Technik der Shaderimplementierung und dessen Verbindung mit Constant Buffern zu tun haben: RenderTargets, passes, Reflection oder nicht, etc. Das Framework sollte ja hoffentlich so entworfen sein, dass es dem Aufrufer über die Schnittstellen klar ist, wie er den zu verwendenden Effekt "füttern" muss. Wenn er ein Objekt mit Diffuse-Specular Lighting und Normalmapping nutzen möchte, dann liefert mir das sein Material. Und das wertet meine Klasse aus, die den Shader kennt.Selbiges gilt für jegliche andere Techniken. Bisher funktioniert das sauber und ordentlich.
Ich finde es keinesfalls hinderlich sondern ziemlich bequem dieses Framework zu benutzen, ebend wegen der genannten zusätzlichen Sprachfeatures.
Ich denke auch, dass die Shaderimplementierungen in den konkreten Klassen, die sie benutzen, gut austauschbar sein sollten, um vllt für mobile oder OpenGL andere implementierungen liefern zu können, und da wären es ja wohl viel sauberer Interfaces für diese Klassen zu erstellen. Und tatsächlich hilft mir das nicht das Framework, aber ich finde die Idee mit techniques ziemlich ansprechend und logisch. Soweit wie ich das verstehe, müsste man ohne Effect11 selbst so etwas implementieren?