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

Aktuelle Zeit: So Aug 03, 2025 10:01

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Spheremapping
BeitragVerfasst: Sa Aug 13, 2005 21:44 
Offline
DGL Member

Registriert: Mi Aug 28, 2002 17:03
Beiträge: 37
Wohnort: ABG
Hi!

Ich will Spheremapping von OpenGL in einem VertexProgram nachbilden.

http://wiki.delphigl.com/index.php/GlTexGen (hier fehlt übrigens die Berechnung von m !)

Das ist mein Ansatz
Code:
  1. !!ARBvp1.0
  2.  
  3. PARAM MV[4]    = { state.matrix.modelview };
  4. PARAM MVInv[4] = { state.matrix.modelview.invtrans };
  5. PARAM MVP[4]   = { state.matrix.mvp };
  6.  
  7. TEMP ObjectCoord, EyeCoord, ClippingCoord;
  8. TEMP Normal, EyeNormal, TexCoord;
  9. TEMP Ray, Temp, Reflect;
  10.  
  11. MOV ObjectCoord, vertex.position;
  12. MOV Normal, vertex.normal;
  13.  
  14. DP4 EyeCoord.x, MV[0], ObjectCoord;
  15. DP4 EyeCoord.y, MV[1], ObjectCoord;
  16. DP4 EyeCoord.z, MV[2], ObjectCoord;
  17. DP4 EyeCoord.w, MV[3], ObjectCoord;
  18.  
  19. DP4 ClippingCoord.x, MVP[0], ObjectCoord;
  20. DP4 ClippingCoord.y, MVP[1], ObjectCoord;
  21. DP4 ClippingCoord.z, MVP[2], ObjectCoord;
  22. DP4 ClippingCoord.w, MVP[3], ObjectCoord;
  23.  
  24. DP3 EyeNormal.x, MVInv[0], Normal;
  25. DP3 EyeNormal.y, MVInv[1], Normal;
  26. DP3 EyeNormal.z, MVInv[2], Normal;
  27.  
  28. SUB Ray.xyz, EyeCoord, MV[3];
  29.  
  30. # Normalize Ray
  31. DP3 Ray.w, Ray, Ray;     # Ray.x*Ray.x + Ray.y*Ray.y + Ray.z*Ray.z
  32. RSQ Ray.w, Ray.w;        # 1/Sqrt(Ray.w)
  33. MUL Ray.xyz, Ray, Ray.w; # Ray.x*Ray.w, Ray.y*Ray.w, Ray.z*Ray.w
  34.  
  35. # Reflect = Ray - 2.0 * EyeNormal * dot(Ray, EyeNormal)
  36. DP3 Temp.x, Ray, EyeNormal;  # dot(Ray, EyeNormal)
  37. MUL Temp.x, Temp.x, 2.0;     # dot(Ray, EyeNormal) * 2.0
  38. MUL Temp, EyeNormal, Temp.x; # dot(Ray, EyeNormal) * 2.0 * EyeNormal
  39. SUB Reflect, Ray, Temp;      # Ray - dot(Ray, EyeNormal) * 2.0 * EyeNormal
  40.  
  41. # m = Sqrt(Reflect.x^2 + Reflect.y^2 + (Reflect.z + 1)^2)
  42. MUL Temp.x, Reflect.x, Reflect.x; # Reflect.x^2
  43. MUL Temp.y, Reflect.y, Reflect.y; # Reflect.y^2
  44. ADD Temp.w, Reflect.z, 1.0;       # Reflect.z + 1
  45. MUL Temp.z, Temp.w, Temp.w;       # (Reflect.z+1)^2
  46. ADD Temp.w, Temp.x, Temp.y;       # Reflect.x^2 + Reflect.y^2
  47. ADD Temp.w, Temp.w, Temp.z;       # Reflect.x^2 + Reflect.x^2 + (Reflect.z + 1)^2
  48. RSQ Temp.x, Temp.w;               # 1/Sqrt(Reflect.x^2 + Reflect.x^2 + (Reflect.z + 1)^2)
  49.  
  50. # s = Reflect.x/m + 0.5
  51. MUL TexCoord.x, Reflect.x, Temp.x; # Reflect.x * (1/m)
  52. ADD TexCoord.x, TexCoord.x, 0.5;   # Reflect.x * (1/m) + 0.5
  53.  
  54. # t = Reflect.y/m + 0.5
  55. MUL TexCoord.y, Reflect.y, Temp.x; # Reflect.y * (1/m)
  56. ADD TexCoord.y, TexCoord.y, 0.5;   # Reflect.y * (1/m) + 0.5
  57.  
  58. MOV TexCoord.z, 0.0;
  59. MOV TexCoord.w, 1.0;
  60.  
  61. MOV result.position, ClippingCoord;
  62. MOV result.texcoord, TexCoord;
  63. MOV result.color, vertex.color;
  64.  
  65. END


Zitat:
Es sei u der Einheitsvektor der vom Ursprung zum Polygonvertex(in Eye-Koordinaten) zeigt;

Was ist der Ursprung? Ich habe hier MV[3] genommen, was die Rotationsaxe des Objektes ist. Den Vektor habe ich Ray genannt.

Zitat:
n' sei die aktuelle Normale in Eye-Koordinaten transformiert.

Wie transformiert man den vertexnormal in Eye-Koordinaten? In dem ich vertex.normal mit der ModelView oder mit der invertierten ModelView Matrix multipliziere?

Oder habe ich den Reflexionsvektor berechnen lassen? Den habe ich reflect genannt.

mfg olli

_________________
Programmieren beginnt im Kopf und endet im Compiler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 14, 2005 21:46 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wiki Artikel wurde gerade Komplettiert. Sollte jetzt alles so sein, das du dir was draus nehmen kannst. Feedback is dazu immer gern gesehen. Oder anmelden und selber berichtigen. Das ist noch viel lieber gesehn. ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


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 1 Gast


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.016s | 19 Queries | GZIP : On ]