Registriert: Di Sep 30, 2003 22:22 Beiträge: 78 Wohnort: irgendwo in den Korridoren der Von Braun
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
_________________ "Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?" - Shodan
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
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".
Registriert: Di Sep 30, 2003 22:22 Beiträge: 78 Wohnort: irgendwo in den Korridoren der Von Braun
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
_________________ "Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?" - Shodan
Ob schleifen Funktioniert hängt doch soweit ich weiss vom Treiber ab??
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.