Gernot, du sagtest doch, dass alle OpenGL kompatiblen Shader mit GLBasic funktionieren sollten.
Wieso funktionieren dann das folgende Beispiel nicht, obwohl ShaderEditor sagt, dass sie fehlerfrei auf meiner Karte kompiliert wurden?
Programmcode:
IF X_LOADSHADER(0,"mytest.vert","mytest.frag") = FALSE
PRINT "Sorry, couldn't load the shader!",10,10
SHOWSCREEN
KEYWAIT
END
ELSE
X_MAKE3D 1,1000,45
X_SETSHADER 0
SHOWSCREEN
KEYWAIT
END
ENDIF
mytest.vert
void main()
{
gl_Position = ftransform();
}
mytest.frag
void main()
{
gl_FragColor = vec4(0.4,0.4,0.8,1.0);
}
Mach ich was falsch oder ist da ein Bug?
P.S.: X_Make3D lässt sich nur mit allen 3 Parametern benutzen, obwohl die Brennweite doch standardmäßig auf 45 eingestellt sein soll. Bug oder Feature ;)?
Edit: Ich hab grade festgestellt, dass das mitgelieferte Cartoon Shader Beispiel auch nicht funktioniert. Da konnte GLBasic den Shader auch nicht laden...
Es ging aber mal :/
Seltsam, ich hatte heute exakt das gleiche Problem!
Der Rückgabewert ist kaputt. Ignorier ihn bitte solange.
ahh stimmt die Rückgabe ist falsch ^^
Hmm, egal was für Werte ich gl_FragColor zuweise, der Bildschirm bleibt immer schwarz :S Der sollte doch eigentlich eine bestimmte Farbe anzeigen soweit ich das verstanden habe :doubt:
Edit: Ahhhhhhhhhhh... Der Shader funktioniert nur, wenn man Objekte auf dem Bildschirm hat und die zeichnet. Bevor ich mir jetzt nen Wolf suche eine Frage an jmd. der Ahnung davon hat: wie beeinflusse ich den kompletten Bildschirm? Muss ich da ein Viereck erstellen, dort draufrendern und dann darstellen oder geht das auch einfacher?
Edit 2: Ok, man muss tatsächlich erstmal auf eine Textur rendern, die dann auf ein Quad ziehen und das dann Fullscreen anzeigen lassen. Dann mal ab ans Reißbrett und ein entsprechendes Framework entwerfen...
genau. Der Fragment Shader wird für jeden Pixel auf dem Bildschirm, der gerendert wird 1x aufgerufen.
Der Hit ist, dass die Grafikkarte mehrere Prozessoren hat, die alle parallel die Pixel verarbeiten können. Somit hat man einen Geschwindigkeitszuwachs, der extrem hoch ist im Vergleich zu 1-Prozessor Lösungen.
Jap. Meine Grafikkarte hat 800 Stream Prozessoren. Da frag ich mich wie es sein kann, dass es trotzdem noch Spiele gibt die nur knapp über 30 FPS laufen. Liegt das an der Komplexität der Shader oder wie? :rant:
Lass mich raten : Crysis ? :booze:
Nein, Hellgate:London DirectX10 Modus :glare:
Crysis ist ganz gut optimiert und die HD4850 ist ja mit einer Nvidia 9800GTX gleichzusetzen im Moment (mit den allerersten Beta Treibern).
Juhuuu! Noch ein Hellgate London Spieler! Ich bin nicht alleine!!! :good:
Hellgate London rockt! Aber ich spiel grade nicht so viel. Day of Defeat gabs (bzw. gibts bis zum 10.) für $4,99, das sind umgerechnet 3,80 Euro inkl. Steuern. Dann noch GLBasic und Mathestudium. Und am Wochenende bin ich bei meiner Freundin (die übrigens auch Hellgate spielt ^^). Zu wenig Zeit ;) Gott sei Dank sind jetzt dann Semesterferien :whistle:
Day of Defeat : Source zock ich auch ;)