- vec3 q0 = dFdx(Eye.xyz);
- vec3 q1 = dFdy(Eye.xyz);
- vec2 st0 = dFdx(TexCoord.st);
- vec2 st1 = dFdy(TexCoord.st);
- vec3 S = normalize( q0 * st1.t - q1 * st0.t);
- vec3 T = normalize(-q0 * st1.s + q1 * st0.s);
- mat3 M = mat3(-T, -S, N);
DGL https://delphigl.com/forum/ |
|
POM: Tangente/Binormale im FragmentShader berechnen https://delphigl.com/forum/viewtopic.php?f=20&t=10932 |
Seite 1 von 1 |
Autor: | Vinz [ Fr Aug 02, 2013 02:28 ] |
Betreff des Beitrags: | POM: Tangente/Binormale im FragmentShader berechnen |
Hallo miteinander, Ich spiele gerade ein wenig mit Parallax Occulsion Mapping rum. Wenn ich die Tangente,Normale, Binormale per Vertex übergebe, funktioniert es wunderbar. Jetzt würde ich die drei Vektoren aber gern per PixelShader beziehen. Ich brauche sie ja, um zu berechnen wie weit die Texturkoordinaten sich verschieben, wenn ich mit dem Eye-Vektor in das betrachtete Volumen eindringe. Ich muss also vom Betrachterraum in den Tangentialraum wechseln. Und da hab ich mir gedacht: Es ist genau umgekehrt, wie im Falle des BumpmappingShaders hier in der Shadersammlung, wo man von der Normale im Tangentialraum auf die Normale im Betrachterraum hinrechnet. Dort wird die benötigte Matrix folgendermaßen berechnet: Code:
Also hab ich mir gedacht, ich könnte ja die inverse von dieser Matrix nehmen und bekomme die gewünschte Transformation. Leider klappt es nicht, wo ist der (Denk)fehler? Kann mir jemand auf die Sprünge helfen? Grüße VinZ |
Autor: | phlegmatiker [ Sa Aug 03, 2013 23:23 ] |
Betreff des Beitrags: | Re: POM: Tangente/Binormale im FragmentShader berechnen |
http://www.terathon.com/code/tangent.html Ich würds nicht im Shader rechnen, sondern einfach mit in den VB packen. |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |