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

Aktuelle Zeit: Do Apr 25, 2024 16:07

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Aug 02, 2013 02:28 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
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:
  1.  
  2.         vec3 q0 = dFdx(Eye.xyz);
  3.     vec3 q1 = dFdy(Eye.xyz);
  4.     vec2 st0 = dFdx(TexCoord.st);
  5.     vec2 st1 = dFdy(TexCoord.st);
  6.  
  7.     vec3 S = normalize( q0 * st1.t - q1 * st0.t);
  8.     vec3 T = normalize(-q0 * st1.s + q1 * st0.s);
  9.         mat3 M = mat3(-T, -S, N);
  10.  


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

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Aug 03, 2013 23:23 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
http://www.terathon.com/code/tangent.html

Ich würds nicht im Shader rechnen, sondern einfach mit in den VB packen.


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 29 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.102s | 17 Queries | GZIP : On ]