momentan probiere ich mich daran ein Shader für Stage3D , also in AGAL, zu schreiben welcher Environment Reflections über eine CubeMap anzeigen soll. Leider ist mein Erfolg nicht so wie er soll, denn die Reflection/CubeMap sieht immer sehr komisch und verzerrt aus. Da es kaum AGAL Seiten/Shader gibt versuche ich mich daran etwas von GLSL zu portieren, leider mit mäßigem Erfolg. Und im Rahmen meiner Verzweiflung dachte ich mir: Fragst du mal hier nach.
Das ganze kann man sich unter: http://nord5.de/reflection/ ansehen, mit der Maus kann man die Plane bewegen und mit Q und A die Kamera kippen - Sowie mit W und S Zoomen. Falls beim Start FlashPlayer Fehler kommen, einfach auf "Weiter" klicken. (Benötigt wird Flash Player 11.6). Wie man sieht - Sieht man das es falsch ist. :evil:
Mein Shader macht momentan folgendes:
VertexShader:
Code: Alles auswählen
// WorldToScreen:
"m44 vt0,va0,vc0\n" + // Position in ScreenSpace
// Reflection:
// vt2 = CameraPosition - VertexPosition;
"sub vt2, vc8, vt0 \n" +
// vt2 = Normalisieren
"nrm vt2.xyz vt2 \n" +
//vt2 = Mit View multiplizieren?!
"m44 vt2.xyz vt2.xyz vc4\n" +
// An FragmentShader
"mov v0, va0\n" +
"mov v1, va1\n" +
"mov v2, vt2\n" +
"mov v3, vc16\n" + // v3 = Normal, da es eine Plane ist kann ich hier ein statischen Wert benutzen
// Output:
"mov op, vt0\n";
Code: Alles auswählen
"dp3 ft0, v2, v3 \n" +
"add ft0, ft0, ft0\n" +
"mul ft0, v3, ft0\n" +
"sub ft0, v2, ft0\n" +
"neg ft0, ft0\n" +
"nrm ft0.xyz, ft0\n" +
"tex ft0 ft0 fs0<cube,clamp,mipmaplinear>\n" +
"mov oc ft0\n";
Hat zufällig jemand eine Idee? Mir ist nicht so ganz klar wo der Fehler ist, was ich verstehe ist das ich ein Strahl zur Plane schicke - Welcher Reflektiert auf die Cube Map zeigen soll - Die Berechnung ehr weniger :| .