Nullvektor bei GLSL-Funktionen
Verfasst: 10.12.2019, 08:53
Hallo zusammen,
liefert der Nullvektor bei Funktionen wie dot oder reflect ein spezifiziertes Ergebnis, oder ist dies abhängig von der Implementierung?
Die OpenGL-Referenz für reflect schreibt:
"For a given incident vector I and surface normal N reflect returns the reflection direction calculated as I - 2.0 * dot(N, I) * N. N should be normalized in order to achieve the desired result. "
Der Nachsatz mit "N should be normalized [...] desired result." liest sich für mich zunächst wie ein Hinweis, aber auch mit nicht-normalisierten Vektor sollte das Ergebnis mathematisch korrekt berechnet werden. Für N=Nullvektor wäre nach der angegebenen Formel das Ergebnis I, dies wäre der für mich gewünschte Fall. Nur bin ich mir unsicher, ob ich nicht irgendwo eine Spezifikation übersehen habe, die bei dieser und ähnlicher Funktionen den Nullvektor verbietet.
Hintergrund des Ganzen: Ich versuche mir damit im Shader ein bedingte Verzweigung zu ersparen, da ich die Reflexion nur für bestimmte Bereiche berechnen möchte. Dort, wo keine Berechnung erfolgen soll, würde ich den Nullvektor als Normale zugrunde legen.
Beste Grüße, smurfer
liefert der Nullvektor bei Funktionen wie dot oder reflect ein spezifiziertes Ergebnis, oder ist dies abhängig von der Implementierung?
Die OpenGL-Referenz für reflect schreibt:
"For a given incident vector I and surface normal N reflect returns the reflection direction calculated as I - 2.0 * dot(N, I) * N. N should be normalized in order to achieve the desired result. "
Der Nachsatz mit "N should be normalized [...] desired result." liest sich für mich zunächst wie ein Hinweis, aber auch mit nicht-normalisierten Vektor sollte das Ergebnis mathematisch korrekt berechnet werden. Für N=Nullvektor wäre nach der angegebenen Formel das Ergebnis I, dies wäre der für mich gewünschte Fall. Nur bin ich mir unsicher, ob ich nicht irgendwo eine Spezifikation übersehen habe, die bei dieser und ähnlicher Funktionen den Nullvektor verbietet.
Hintergrund des Ganzen: Ich versuche mir damit im Shader ein bedingte Verzweigung zu ersparen, da ich die Reflexion nur für bestimmte Bereiche berechnen möchte. Dort, wo keine Berechnung erfolgen soll, würde ich den Nullvektor als Normale zugrunde legen.
Beste Grüße, smurfer