DGL
https://delphigl.com/forum/

Problem mit ARBvp1.0 Shader
https://delphigl.com/forum/viewtopic.php?f=20&t=5240
Seite 1 von 1

Autor:  Aya [ Mi Feb 22, 2006 22:41 ]
Betreff des Beitrags:  Problem mit ARBvp1.0 Shader

Hi,

ich muß für ein Programm ARBvp1.0 verwenden und kann leider nicht auf glSlang zurückgreifen... problem ist, ich hab 0 ahnung von dem alten Shaderkram :)

Das ist mein Shader:
Code:
  1. !!ARBvp1.0
  2.  
  3. # Eingangsattribute
  4. ATTRIB iPos    = vertex.position;
  5. ATTRIB iNormal = vertex.normal;
  6.  
  7. # Programmparameter
  8. PARAM mvinv[4]    = { state.matrix.modelview.invtrans };
  9. PARAM mvp[4]      = { state.matrix.mvp };
  10. PARAM lightDir    = state.light[0].position;
  11. PARAM halfDir     = state.light[0].half;
  12. PARAM specExp     = state.material.shininess;
  13. PARAM ambientCol  = state.lightprod[0].ambient;
  14. PARAM diffuseCol  = state.lightprod[0].diffuse;
  15. PARAM specularCol = state.lightprod[0].specular;
  16.  
  17. # Temporäre Variablen
  18. TEMP eyeNormal, temp, dots, lightcoefs;
  19.  
  20. # Ausgangsattribute
  21. OUTPUT oPos   = result.position;
  22. OUTPUT oColor = result.color;
  23.  
  24. # Vertex in Clipkoordinaten umwandeln
  25. DP4 oPos.x, mvp[0], iPos;
  26. DP4 oPos.y, mvp[1], iPos;
  27. DP4 oPos.z, mvp[2], iPos;
  28. DP4 oPos.w, mvp[3], iPos;
  29.  
  30. # Normale in eyespace transformieren
  31. DP3 eyeNormal.x, mvinv[0], iNormal;
  32. DP3 eyeNormal.y, mvinv[1], iNormal;
  33. DP3 eyeNormal.z, mvinv[2], iNormal;
  34.  
  35. # Diffuses und spekulatives Punktprodukt berechnen
  36. # und unter Nutzung von LIT die
  37. # Beleuchtungskoeffizienten berechnen
  38. DP3 dots.x, eyeNormal, lightDir;
  39. DP3 dots.y, eyeNormal, halfDir;
  40. MOV dots.w, specExp.x;
  41. LIT lightcoefs, dots;
  42.  
  43. # Farbbestandteile sammeln und addieren
  44. MAD temp, lightcoefs.y, diffuseCol, ambientCol;
  45. MAD oColor.xyz, lightcoefs.z, specularCol, temp;
  46. MOV oColor.w, diffuseCol.w;
  47. MUL oColor.xyz, temp, vertex.color.primary;
  48.  
  49. # Texturkoordinaten durchschleifen
  50. MOV result.texcoord, vertex.texcoord;
  51.  
  52. END


Hab ich mal irgendwann irgendwo hier im Forum gefunden gehabt :) (Glaub von SoS war der)
Problem an dem Shader ist das alle Polygone von hinten schwarz sind...

An und für sich passiert das ja weil die Face-Normale von dem Licht wegzeigt = Es wird schwarz.
Wie muß ich'n den Shader jetzt ändern damit es egal ist ob die FaceNormale in die richtung vom Licht zeigt oder nicht??
Also an und für sich nur irgendwo ein "Abs()" einbauen, oder??

Au'revoir,
Aya~

Autor:  JSoftware [ Sa Feb 25, 2006 20:04 ]
Betreff des Beitrags: 

edit: aha.. ich habe es nicht alles versteht..

vielleicht wie dieses?

DP3 dots.x, eyeNormal, lightDir;
ABS dots.x, dots.x;
DP3 dots.y, eyeNormal, halfDir;
ABS dots.y, dots.y;
MOV dots.w, specExp.x;
LIT lightcoefs, dots;

Autor:  Aya [ So Feb 26, 2006 15:30 ]
Betreff des Beitrags: 

Jap genau das war's! danke :)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/