Blickrichtung im Shader ermitteln
-
Hey,
Hätte mal wieder eine Frage.
Ich würde gerne im Shader ermittlen, ob ich ein bestimmtes Objekt angucke oder eben nicht. In meinem Fall handelt es sich um die Sonne. Sollte ich direkt reingucken, so sollte sich die Szene heller Färben. Das Färben etc. ist natürlich kein Problem aber dieses exakte ermitteln will nicht so klappen.Mein bisheriger Ansatz sah so aus:
vertex_normal = normalize(vec3(150.0, -120.0, 100.0)); vertex_pos = normalize(ftransform());
Wert 1 = Sonnenpositon
Wert 2 = Meine PositionIm Fragmentshader wollte ich mit diesen beiden Werten wiefolgt umgehen:
float diffuse_value = max(dot(vertex_normal, vertex_pos), 0.0);
Ich bin mir aber nicht sicher, ob mein Ansatz so stimmt und wie ich genau dieses Vergleich durchführe. Hoffe mir kann jemand ein paar Tipps und eine ungefähre Vorgehensweise geben!
MfG
-
Okay habs hinbekommen...
Falls es noch jemanden interessiert:
- Richtungsvektor zwischen Kamera und Sonne bilden
- Länge dieses Richtungsvektor vom Ursprung aus nehmen
- einzelne Koordinaten durch die länge teilen (Vektor ist dann normalisiert)
-
Hä? Geht das nicht eher so?
v1 = sunpos - campos; angle = (v1 * view_direction) / (length(v1) * length(view_direction)); if (angle < blubb) ...