Frage zu GLSL: Glas Effekt
-
Hallo,
ich habe ein Problem mit den OpenGL Shadern:
und zwar weiß ich nicht wie ich es hinbekomme, den Hintergrund auf ein, im Vordergrund stehendes Objekt, zu übertragen, damit ich diese Pixel bzw. Fragmente dann verschwimmen oder verzerren kann.
Es reicht aber nicht den Hintergrund zu fotografieren und diese Texture dann auf das Objekt im Vordergrund zu legen. Schließlich kann das Objekt sich auch drehen, aber der Hintergrund soll immer glecih zu sehen sein.
Leider funktioniert das auch nicht wenn ich das Objekt transparent mache.Gibt es nicht eine Möglichkeit über die OpenGL Shader die Farbe des hinteren Pixels zu ermitteln? Also befor der neue gezeichnet wird?
Kennt sich jemand mit Glas Effekt und Reflektionen aus?
Danke schon mal

-
Hmmm...
Schreib einen Shader der eine oder mehrere Texturen verwendet um die Farbe des Hintergrunds "nachzuschlagen".Für Reflexionen bzw. Glas-Effekte musst du natürlich die Texturkoordinaten, die du zum Nachschlagen verwendest, anders berechnen, als wenn du die Textur "normal" drauflegen willst. Nämlich üblicherweise (AFAIK) anhand des "Sichtstrahls", der Position und der Normale (wobei man die Position wohl meist weglassen kann).
Wie man diese Daten am Besten in einem Pixel-Shader ermittelt kann ich dir leider nicht sagen, hab' von Shadern nicht wirklich so viel Ahnung

Such mal im Google nach "environment mapping", vielleicht bringt dich das weiter.
-
Wenn ein Lichtstrahl von der Kamera auf ein transparentes Objekt trifft wird dieser teilweise reflektiert und teilweise gebrochen (Staerke abhaengig von der Dichte).
Vernachlaessigen wir hier, dass der Strahl beim Austreten wieder gebrochen (und teilweise reflektiert) wird und ggf das Objekt nochmal trifft, muss die "Hintergrundfarbe" des Objektes in alle Richtungen bekannt sein.
Dazu rendert man die Umgebung an der Position des Objektes in eine Cubemap aus der man die Umgebungsfarbe in einer gegebenen Richtung auslesen kann.
-
Danke

Ich hab jetzt eine Lösung hinbekommen, sieht auch ganz schön aus, natürlich noch nicht so perfekt wie in Half-Life 2 aber immerhin ein Anfang ^^
lg Lukas