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

Aktuelle Zeit: Fr Jun 07, 2024 21:04

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Lichtposition
BeitragVerfasst: Fr Okt 10, 2008 18:45 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Irgendwie hab ich ein Problem mit den Lichtkoordinaten im Vertexshader.

Wenn ich die Position der Lichtquelle in meiner Anwendung "per Hand" mit der Kameramatrix multipliziere sind die Koordinaten relativ zur Kamera richtig (oben rechts (1,1)). Übergebe ich aber die selbe Matrix an den Vertexshader und mulitpliziere dann mit dem Vektor kommt nur irgendwelcher Mist raus.

Im Hauptprogramm wird so mit der Matrix multiplizert:
Code:
  1.  
  2.   Result[0]:=v[0]*m[0,0]+v[1]*m[1,0]+v[2]*m[2,0]+m[3,0];
  3.   Result[1]:=v[0]*m[0,1]+v[1]*m[1,1]+v[2]*m[2,1]+m[3,1];
  4.   Result[2]:=v[0]*m[0,2]+v[1]*m[1,2]+v[2]*m[2,2]+m[3,2];
  5.  


Die Matrix bekomm ich durch glGet nachdem die Kamera mit gluLookAt eingestellt wurde.

Bei der Variante im Vertexshader wird die Position so bestimmt:
Code:
  1.  
  2. vec3(kameramatrix * gl_LightSource[0].position)
  3.  


Die Matrix wird übergeben mit:
Code:
  1.  
  2. glUniformMatrix4fv(glGetUniformLocationARB(Shader, PGLCharARB('kameramatrix')), 1 ,false ,@matrix);
  3.  


Im Shader kommt die Matrix auch an, aber egal wie ich multiplizere oder transponiere es kommt immer etwas falsches raus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 13, 2008 09:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hallo,
ich weiss nicht ob es was hilft, aber mach mal lieber:
Code:
  1. glUniformMatrix4fv(glGetUniformLocationARB(Shader, PGLCharARB('kameramatrix')), 1 ,false ,@matrix[0][0]);

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 13, 2008 14:55 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
MatReno hat geschrieben:
Hallo,
ich weiss nicht ob es was hilft, aber mach mal lieber:
Code:
  1. glUniformMatrix4fv(glGetUniformLocationARB(Shader, PGLCharARB('kameramatrix')), 1 ,false ,@matrix[0][0]);


Hat leider nichts geändert. Aber wahrscheinlich ist es so sowieso besser. Die Position einmal pro Frame umzurechnen, anstatt einmal für jeden Vertex, sollte doch schneller sein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 18, 2008 12:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Ist besser jo^^

Wenn die Matrix stimmt, wäre ja das naheliegendste, dass die Daten der Lichtposition nicht stimmen.

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 24, 2008 13:17 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
DIe Opengl Licht positionionen wereden beim aufrufen der glLight funktionen bereits mit den entsprechenden matrizen multipliziert. D.H. es ist wahrscheinlicht, das die licht position zwei mal mit der matrix multipliziert wurde. Abhilfe können eigene shader variablen sein (für die zukunft sinvoll).

_________________
Lumina plattform unabhängige GLSL IDE


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 16 Queries | GZIP : On ]