DGL
https://delphigl.com/forum/

Schleifen in GLSLang?
https://delphigl.com/forum/viewtopic.php?f=20&t=3780
Seite 1 von 1

Autor:  Silk [ Do Feb 10, 2005 16:01 ]
Betreff des Beitrags:  Schleifen in GLSLang?

Bei compilierung eines Fragment Shaders bekomme ich die Fehlermeldung error C5011: profile does not support "while" statements - selber Fehler wenn ich for-Schleifen benutze. Ich habe hier im Forum ein Topic gefunden das gut 1 Jahr alt ist, in dem erwähnt wird das Schleifen noch nicht unterstützt werden und noch ein anderes GLSLang Tutorial, welches darauf hinweist das Schleifen nicht auf jedem System verfügbar sind. Ist diese Information immer noch aktuell oder liegt das Problem schlicht an einer veralteten Grafikkarte/Treiber (habe gestern erst den nVidia 66.94 Treiber für die Geforce FX 5600 installiert)?

Wenn ja, was für Workarounds könnt ihr empfehlen? Endlos-Schleifen durch goto/jump sind in GLSLang laut Spezifikation ja nicht möglich und bevor ich seitenweise if/else Konstrukte schreibe wollte ich mich erst mal erkundigen ob es sinnvollere Alternativen gibt? Die Schleife komplett von der CPU durchführen zu lassen und den Wert in den Fragment Shader zu übergeben betrachte ich nicht als Option, da das den Sinn dieses GPU-tests verwerfen würde...

-Silk

Autor:  Sascha Willems [ Do Feb 10, 2005 16:11 ]
Betreff des Beitrags: 

GeForce FX = Shader Modell 2.0. Und SM2.0-Hardware unterstützt im Fragmentshader keine "Branch-Controll", also alles was mit Schleifen und If-Abfragen zu tun hat. Also gibts auf solcher Hardware entweder Fehlermeldung (NVidia) oder (ATI) die Schleifen werden entrollt, was natürlich nur solange gut geht wie die entrollten Schleifen als kompletter Quellcode noch in die Shaderlänge der Grafikkarte passen. Auf SM2.0-Hardware sollte man also ganz auf Schleifen verzichten, oder diese bereits von Hand "entrollen".

Autor:  Flash [ Do Feb 10, 2005 16:25 ]
Betreff des Beitrags: 

Bei ShaderModell 3 gehn dann wohl Schleifen oder?

Autor:  Silk [ Do Feb 10, 2005 16:48 ]
Betreff des Beitrags: 

Danke, daß Du das klargestellt hast! War kurz vorm verzweifeln, weil der Shader eigentlich recht kurz ist und ich den Fehler beim besten Willen nicht finden konnte. Die If-Abfrage funktioniert übrigens einwandfrei, falls jemand also PS 2.0 kompatible Shader schreiben will darf er die ruhig benutzen. Ich werde mich mal daran machen die Schleife umzuschreiben :?

Gibt es denn auf PS 3.0 Karten immer noch solche Fallgruben, oder sind damit nun alle GLSLang Befehle verfügbar?

-Silk

Autor:  Speedmaster [ Do Feb 10, 2005 17:10 ]
Betreff des Beitrags: 

Ob schleifen Funktioniert hängt doch soweit ich weiss vom Treiber ab??

Autor:  LarsMiddendorf [ Mo Apr 04, 2005 23:02 ]
Betreff des Beitrags: 

Habe es jetzt mal ausprobiert. Die Geforce6 Karten unterstützen sogar while Schleifen im Fragment Shader.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/