Ich habe den Lafortune-Shader in WebGL implementiert und meine größte Sorge gilt dieser Formel:
Erläuterung
Kd / Ks ist die diffuse / spiegelnde Materialfarbe, ρd / ρs ist die diffuse / spiegelnde Lichtkomponente, m ist die Anzahl der Lappen (in meinem Shader verwende ich immer einen einzelnen Lappen), 𝜔o ist die Blickrichtung (vom Oberflächenpunkt aus) ), 𝜔i ist die Lichtrichtung, Oj ist der Lappen und ej ist der Glanzfaktor.
Die vollständige Referenz finden Sie hier: Eine Übersicht über Schattierungsmodelle für das Echtzeit-Rendering auf Seite 28.
Frage
Das Problem kommt mit dem Oj-Lappen. Ich habe festgestellt, dass beim Ändern des Werts von Oj das Licht von seiner ursprünglichen Position verschoben wird. Dies ist beispielsweise das, was ich mit Oj = (-1, -1,1) erhalte:
Und das bekomme ich mit Oj = (0,0,1):
Ist das normal? Sollte das Licht entsprechend dem Wert von Oj verschoben werden?