Servus, hab' mal wieder was mit Shadern gemacht...und zwar Bump Mapping. Auf meiner GeForce 6800 GT läuft das ganze auch exzellent, als mein Kumpel das Programm aber bei sich laufen lies, erhielt er ettliche Fehlermeldungen, u.a. bezüglich der Konvertierungen von vec3 zu vec4 (nur eins von vielen Beispielen). Ich hab' mich dann mal hingesetzt und alles nochmal "genauer" programmiert, d.h. überall Konstruktoren benutzt usw., bis das Prog auch bei ihm ohne Fehlermeldungen startete. Während die verbesserten Shader bei mir immer noch genau so aussahen, wurden sie auf der Radeon 9800 Pro nicht wirklich angewendet, viel mehr wurde scheinbar der komplette Shadercode übersprungen (obwohl bei beiden Shaderteilen nur eine leere MessageBox ausgegeben wurde). Zu sehen war weder Licht noch irgendein Bump-Effekt, es war, als hätte man einfach nur eine Textur draufgelegt. An den Treibern kann es nicht liegen, die sind von der neusten oder zweit-neusten Version. Ich wüsste gern, ob jemand mir da ein paar Tips geben kann, was man beachten muss, dass die Shader auch von ATI Karten korrekt benutzt werden können. Notfalls kann ich auch mal den Shadercode hier posten, hätte aber gerne ein paar generelle Hinweise, dass ich das beim nächsten Shader besser machen kann.
Mfg, Gran
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
zu glsl auf ati karten ist allgemein zu sagen, dass sie (wie du ja auch festgestellt hast) es schon übertrieben genau nehmen mit sachen wie typkonvertierung usw. bei sowas muss man also aufpassen. Die einzige Möglichkeit die wirklich hilft ist meiner erfahrung nach aber nur sich mit ner ATI Karte hinsetzen und schaun das man das zum laufen kriegt. wenn du willst würde ich das mal machen
Wenn der shader nicht ausgeführt wird ist das ansich ein recht klarer hinweisdass er nicht richtig kompiliert ist.
Cg funktioniert ja auch mit ATI Karten und man kann per "-oglsl" Parameter auf GLSL Syntax umschalten. Da der Compiler dann extern ist, weiß man wenigstens was generiert wird.
danke für die schnellen Antworten. Zu den cg Shadern kann ich nur sagen, dass ich mir das schlicht und einfach nicht zutraue, da mir dazu das Material fehlt. glSlang konnte ich (fast) problemlos mit Sascha's exzellentem Tut lernen, zu den CG Shadern hab' ich bisher leider nix gefunden, was ich verstehe.
@Grizzly: Vielen Dank für das Angebot, scheint mir mittlerweile auch die einzige Lösung zu sein. Hab' den Source angehängt, wäre sehr nett wenn du dir das mal ansiehst.
EDIT: Für die Normal Map war leider kein Platz mehr
---------------------------
OK
---------------------------
---------------------------
Opengl15_template
---------------------------
ERROR: 0:12: '__SourceAmbient' : reserved built-in name
ERROR: 0:13: '__SourceDiffuse' : reserved built-in name
ERROR: 0:15: '__MaterialSpecular' : reserved built-in name
ERROR: 0:16: '__MaterialShininess' : reserved built-in name
ERROR: 0:25: '*' : wrong operand types no operation '*' exists that takes a left-hand operand of type '3-component vector of float' and a right operand of type 'const int' (or there is no acceptable conversion)
ERROR: 0:27: '__SourceAmbient' : undeclared identifier
ERROR: 0:28: '__SourceDiffuse' : undeclared identifier
ERROR: 0:29: '__MaterialSpecular' : undeclared identifier
ERROR: 0:29: '__MaterialShininess' : undeclared identifier
ERROR: 0:29: '=' : cannot convert from 'float' to '4-component vector of float'
ERROR: 10 compilation errors. No code generated.
---------------------------
OK
---------------------------
auf ner 9500 pro akzeptiert er schonmal scheints keine underlinesasl veriablenanfang
weiterhin hab ich festgestellt, und das ist das merkwürdige, dass der Wert von IDiffuse allgemein nicht 0 ist, aber bei interaktion mit texture2D(texSampler, vec2(gl_TexCoord[0])) scheinbar als 0 angenommen wird
glSlang konnte ich (fast) problemlos mit Sascha's exzellentem Tut lernen, zu den CG Shadern hab' ich bisher leider nix gefunden, was ich verstehe.
Cg kann auch GLSL. Zur Not kann man das mit dem Kommandozeilenkompiler per Hand kompilieren und die Assembler Shader Datei laden, falls man nicht die Cg DLL dabei haben möchte.
oops, sorry, hab' vergessen zu sagen, dass ich eben diese Fehler alle (scheinbar) verbessert habe, also so, dass das Programm ohne Fehlermeldungen auf ATI Karten kompiliert wurde, und bei mir immer noch das gleiche Ergebnis lieferte. Aber scheinbar wurde es doch nicht richtig kompiliert und zeigte einfach nur eine ganz normale Textur an.
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
Registriert: Fr Nov 12, 2004 14:58 Beiträge: 76 Wohnort: Aachen
Grizzly hat geschrieben:
auf ner 9500 pro akzeptiert er schonmal scheints keine underlines als variablenanfang
Ich meine mich zu erinnern, das in dem "Orange Book" drin stand, das der _ am Anfang einer Variable für den internen Gebrauch reserviert ist und Variablen mit __ (zwei Underscore) für die Zukunft reserviert sind und nicht verwendet werden sollten.
_________________ Ein Schiff im Hafen ist sicher. Aber dafür werden Schiffe nicht gebaut. (Engl. Sprichwort)
Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste
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.