FX-Files: In passes keine bedingten renderstates möglich?



  • Ich würde gern sowas schreiben wie:

    technique jogeil {
        pass p0 {
            if( (culling) ) CullMode = CW;
    

    wobei culling ein fx-Parameter vom typ bool ist (wie klar halt).

    Scheinbar sind if-Anweisungen oder bedingte Ausdrücke in den Passes nicht erlaubt. Wie würde der ordentliche Weg aussehen, wenn ich den Cullmode per Parameter festlegen können will? Ich habe bei meiner Suche etwas in der Art überhaupt nicht gefunden, deshalb denke ich langsam, dass es hierfür einen anderen üblichen Weg gibt.

    Der Hintergrund ist, ich würde gern einen Baum rendern, Stamm und Blätterdach haben das selbe Material mit anderen Parametern (z.B. Textur). Bei dem Blätterdach darf jedoch kein Backface culling statt finden.



  • Weiß keiner jetzt, wie man so etwas realisieren kann? Ich verstehe die Motivation hinter dieser Einschränkung nicht ganz, im Pass ein paar if-Abfragen zu machen geht ja mal wirklich gar nicht auf die Performance oder sowas.



  • Eine Techinque is einfach nur ne Ansammlung von Renderstates, da gibts keine Sprünge oder Schleifen oder was auch immer.
    Warum machste nicht einfach mehrere Techniques (TechniqueCulling, TechniqueNoCulling)?



  • Ich will eigentlich nicht unbedingt die Technique komplett kopieren, nur weil ich einen Parameter modifiziere. 😞
    Tja schade, ich setz das jetzt außerhalb des FX-Files im Programmcode.


Anmelden zum Antworten