Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 |
vec3 light_position = vec3( u_lightmvmatrix * vec4( u_lightposition, 1.0 ) ); vec3 light_direction = normalize( light_position - pixel_position ); |
Zitat
Bei u_lightmvmatrix handelt es sich um eine Model-View-Matrix, mit der die Position u_lightposition des Punktlichtes transformiert wird.
Und pixel_position ist ein linear zwischen Vektoren interpolierter Wert, der im Grunde einfach durch die Vorschrift pixel_position = vec3( gl_ModelViewMatrix * gl_Vertex ); im Vertexshader definiert wird.
Zitat von »"TrikkieMikkie"«
Hat zwar mit deinem Problem nichts zu tun,
würde aber trotzdem gern wissen, warum die Framerates so niedrig sind.
Zitat von »"dot"«
Und dann verwirrt mich folgendes noch irgendwie:
Zitat
Bei u_lightmvmatrix handelt es sich um eine Model-View-Matrix, mit der die Position u_lightposition des Punktlichtes transformiert wird.
Und pixel_position ist ein linear zwischen Vektoren interpolierter Wert, der im Grunde einfach durch die Vorschrift pixel_position = vec3( gl_ModelViewMatrix * gl_Vertex ); im Vertexshader definiert wird.
Was genau hat da die Viewmatrix drin verloren, ich dachte du machst Worldspace Normalmapping!?
(Quelle)Zitat
OpenGL has no concept of "world space" or "camera space". There is only the matrix that all input is multiplied by.
Quellcode |
|
1 2 3 4 |
( -100, -3, 100 ) -> ( 0 | 0 ) ( 100, -3, 100 ) -> ( 28.2843 | -28.2843 ) ( 100, -3, -100 ) -> ( 56.5685 | 0 ) ( -100, -3, -100 ) -> ( 28.2843 | 28.2843 ) |
Zitat von »"the[V«
oid"]Möglicherweise war die Terminologie, die ich verwendet habe, etwas missverständlich: OpenGL hat ja eigentlich garkein Konzept von Worldspace oder Viewspace
Zitat von »"the[V«
oid"]Also streng genommen führe ich die Berechnungen im Viewspace und nicht im Worldspace durch (wie ich heute Nacht noch behauptet habe ).
Zitat von »"the[V«
oid"]Die berechnete Tangente ist ( -0.707107 | 0 | 0.707107 ).
Zitat von »"the[V«
oid"]Dabei ist mir aufgefallen, dass die Tangente in Wirklichkeit entlang der ersten Texturachse verläuft und nicht entlang der zweiten, wie ich eigentlich erwartet hätte.
C-/C++-Quelltext |
|
1 2 |
vec3 binormal = cross( normal, tangent ); vec3 result = mat3( tangent, binormal, normal ) * vector; |
Zitat von »"the[V«
oid"]EDIT: Gut, jetzt hab ich die Tangente an der zweiten Texturachse ausgerichtet, hatte zur Folge dass die Farben Rot und Grün auf dem Boden (siehe die beiden letzten Screenshots) sich jetzt vertauscht haben, aber das ändert nichts an meinem ursprünglichen Problem.
Zitat von »"the[V«
oid"]Dabei ist mir aufgefallen, dass die Tangente in Wirklichkeit entlang der ersten Texturachse verläuft und nicht entlang der zweiten, wie ich eigentlich erwartet hätte.
Zitat von »"dot"«
Das ist schon richtig, die Tangente sollte normal entlang der ersten laufen.
Werbeanzeige