Ich schlage mich gerade mit einem sehr merkwürdigen Problem herum. Nachdem mit Lars bei meinem Verständnissproblem sehr helfen konnte, hapert es jetzt bei der Umsetzung.
Meine Shader schauen jetzt folgendermaßen aus:
Vertexshader:
Code: varying vec3 normal; varying vec3 v; varying vec3 lightvec; void main(void) { normal = normalize(gl_NormalMatrix * gl_Normal); v = vec3(gl_ModelViewMatrix * gl_Vertex); lightvec = normalize(gl_LightSource[0].position.xyz - v); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; }
Fragmentshader:
Code: varying vec3 normal; varying vec3 v; varying vec3 lightvec; void main(void) { vec3 view = normalize(-v); vec3 HalfVector = normalize((lightvec + view)/2); vec4 IAmbient = gl_LightSource[0].ambient; vec4 IDiffuse = gl_LightSource[0].diffuse * max(dot(lightvec, normal), 0); vec4 ISpecular = gl_LightSource[0].specular * pow(max(dot(normal, HalfVector), 0), 0.3 *gl_FrontMaterial.shininess); gl_FragColor = gl_FrontLightModelProduct.sceneColor + IAmbient + IDiffuse + ISpecular; //gl_FragColor.xy = 1; // Diese Zeile nur zu Testzwecken }
Wenn ich das ganze so laufen lasse, dann erhalte ich meine Objekte ganz schwarz. Durch rumprobieren hab ich heraus- gefunden, dass wenn ich die letzt (auskommentierte) Zeile arbeiten lasse, die ja völlig vom Rest unabhägig ist, auch alles schwarz bleibt. Durch noch mehr rumprobieren bin ich dann darauf gekommen, das die letzte Zeile ihren banalen Sinn nur erfüllt, wenn ich vorher alle Zeilen auskommentiere, die eine Berechnung enthalten (vec4 IAmbient = gl_LightSource[0].ambient; kann ich so stehen lassen). *amkopfkratz* irgendwie hat es mir den Anschein, das sobald der Shader ne Berechnung anstellen muss, er einfach komplett abgeschaltet wird. Sollte noch sagen, dass es mit Standard-OGL-Licht wunderbar funzt, an den Lichteinstellungen selber kanns dann ned liegen.
So schauts dann immer aus:
|