Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 23, 2025 23:57

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Feb 07, 2005 18:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
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:
  1. varying vec3 normal;
  2. varying vec3 v;
  3. varying vec3 lightvec;
  4.  
  5. void main(void)
  6. {
  7.   normal          = normalize(gl_NormalMatrix * gl_Normal);
  8.   v               = vec3(gl_ModelViewMatrix * gl_Vertex);
  9.   lightvec        = normalize(gl_LightSource[0].position.xyz - v);
  10.  
  11.   gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;
  12. }


Fragmentshader:
Code:
  1.  
  2. varying vec3 normal;
  3. varying vec3 v;
  4. varying vec3 lightvec;
  5.  
  6. void main(void)
  7. {
  8.  vec3 view            = normalize(-v);
  9.  vec3 HalfVector      = normalize((lightvec + view)/2);
  10.  
  11.  vec4 IAmbient        = gl_LightSource[0].ambient;
  12.  vec4 IDiffuse        = gl_LightSource[0].diffuse * max(dot(lightvec, normal), 0);
  13.  
  14.  vec4 ISpecular       = gl_LightSource[0].specular * pow(max(dot(normal, HalfVector), 0), 0.3             *gl_FrontMaterial.shininess);
  15.  
  16.  gl_FragColor = gl_FrontLightModelProduct.sceneColor + IAmbient + IDiffuse + ISpecular;
  17.  //gl_FragColor.xy = 1;                     // Diese Zeile nur zu Testzwecken
  18. }


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:

Bild

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 13:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Sorry, aber ich hab mir jetzt selber ( bzw. Corrail, der das Shader-Tutorial von NeHe verfasst hat) geholfen.
Und, wie so oft bei mir hats an was ganz anderem gelegen. Ich habe Fragment- und Vertex-Shader als komplett unabhängige Einheiten angesehen und deswegen auch getrennt kompiliert und gelinkt. Da hätte ich mich besser an den Tutorials halten sollen. Nachjdem ich das geändert habe, funzts eigentlich jetzt optimal. Es war einfach so, dass der Fragmentshader nix berechnen konnte, da er den Vertex-Shader (und dessen Werte) überhaupt nicht "kennt".

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.006s | 13 Queries | GZIP : On ]