ich habe den Bumpmapshader aus euerer Shadersammlung in meinem Programm angewendet und musste feststellen, das dieser nicht richtig läuft. Grund dafür müsste das Multitextureing sein.
Habs jetzt einigermaßen hinbekommen, aber das Licht wird nur im 180° - Winkel dargestellt. Je nach dem von welcher Seite ich auf das Licht schaue scheint es in meine Richtung. Am Vertex- und Fragmentshader habe ich kleine Änderungen gemacht:
Fragment-Shader:
Code:
const float PI = 3.14159265; //Pi, zur Berechnung der Rotation const int LIGHT_COUNT = 1; //Anzahl der berücksichtigten Lichter varying vec3 N; //NormalenVektor varying vec3 V; //VertexVektor varying vec3 lightvec[LIGHT_COUNT]; //LichtVektor(en) uniform sampler2D Texture0; //normale Textur uniform sampler2D Texture1; //NormalMap
Hab auch schon hier im Forum gesucht und etwas gefunden, jedoch funktioniert das überhaupt nicht, weil das Licht sich dann bewegt und komische Muster entstehen....
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
der Beitrag von mir, den du gepostest hast is aus dem alten Tutorial, das is nich mehr aktuell. Aus diesem Grund hab ich ja dann mit der Hilfe der anderen auch den Shader geschrieben. Mit den Texturen hatte ich kein Problem. hier ma mein RenderCode:
Das mit den Texturen hab ich jetzt hinbekommen mittels glUniform1i. Einziges Problem ist das mit dem 180° - Winkel. Ich hab in meinem letzten Beitrag ein Screenshot angehängt wo das zu sehen ist .
Dein Screenshot ist für außen stehende wenig hilfreich, da wohl niemand außer dir weiß wie das den korrekt aus sehen sollte. Z.B. die Normalmap wäre hilfreich.
Zitat:
Einziges Problem ist das mit dem 180° - Winkel
Wie genau ist das gemeint? Bei einem 180-Winkel sollte es doch reichen die Normale bzw. den Vektor zur Lichtquelle zu invertieren?
Das gesamte Licht ist nur in einem 180° - Winkel zu sehen. Mal scheint das Diffuse - Licht auf die eine, dann auf die andere Seite, je nach dem wie die Kameraposition ist. Das Specular - Licht jedoch ist immer auf der selben Seite. Auf dem Screenshot oben sieht mans net so gut, aber oben sieht man, das es auf der Seite dunkel ist.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
also meinst du die Hinterseide vom Quad? Das geht nich anders glaube ich. Da musste einfach noch n 2. Quad drauf zeichnen un dann dementsprechend den Normalenvektor neu setzten.
€: ne der Shader berechnet das Licht in Abhängigkeit der Lichtposition.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
hey,
sieht in der Tat komisch aus. Kannst du die Exe ma hochalden? Würd mir das gern ma in Echtzeit angucken. Sicher das die Normalen alle stimmen? Ändert sich die dunkle Stelle wenn du das Licht um das Objekt drehst? Ich denke nicht das es was mit Punktlichtern oder Direktionslicht zu tun hat. Denn der Shader arbeitet auf alle Fälle mit Punktlicht, weil ja die Daten des Lichts verrechnet werden. Wäre es direktionslicht würde man ja nur den Vektor übergeben. Ich hab auch ma irgendwo was von ner maximalen Leuchtweite von Licht gelesen, danach sieht es mir nämlich eher aus. Ich weiß aber nich mehr genau was in dem Artikel stand.
€: hast du's schonma mit nem normalen Per-Pixel-Beleuchtungs-Shader versucht? Wenn es da genau so aussieht muss es was anderes sein...
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Sehr seltsam Leigt die Ebene in der XZ-Ebene? Ich versuch ma das Problem zu reproduzieren. €: Ok, bei mir kommt der Fehler auch, allerdings nur, wenn die Ebene in der XZ-Ebene liegt, wenn ich das ganze in die XY-Egbene verschiebe, geht alles 1a -.- €2: ich weiß jetzt, das es iwie an der Berechnung von G scheitert, ich komm aber beim besten Willen nicht weiter. Da mein Quad in der XY-Ebene gelegen hat, hat die Ableitung von X und Y funktioniert. Eine Ableitung von Z gibts es aber nicht. Dann hab ich versucht die Ableitungen einfach zu vertauchen, das geht aber auch nicht. Wir brauchen jetzt ne Idee, wie man G (oder gleich B) anders berechnen kann.
Ah stimmt, bei dem Shader geht das ja nur bei Wänden, also X und Y. Moeglich muss es aber irgentwie sein oder? Ich hab einen anderen Shader gefunden der zu funktionieren scheint:
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
jetzt schmiert die exe mit ner Zugriffsverletzung ab ^^ Bei dem Shader musst du aber die Tangente als Attribut übergeben, oder? Der Stand glaube auch mit in dem alten Topic von mit. Der war von Sellmann wenn ich mich nich täusche. Aber da soll auch irgend ein Fehler drin gewesen sein (siehe hier).
Registriert: Sa Aug 18, 2007 18:47 Beiträge: 694 Wohnort: Köln
Programmiersprache: Java
Habe das auch mal mittels dfdx/y versucht. Bin dann nach mehrfachem Scheitern auf diesen Artikel gestossen. Leider auch ohne Erfolg. Vielleicht schaffst du es.
Schliesslich habe ich den Color Wert missbraucht und dort die vorausberechnete Tangente gespeichert. Erspart die Attribute und Farbe pro Vertex brauche ich so gut wie nie.
_________________ Es werde Licht. glEnable(GL_LIGHTING); Und es ward Licht.
Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.