Spiegelungen
← Brechungseffekte | ● | Postprocessing →
Für Spiegelungen zeichnet man die Szene erst einmal in eine Textur aus Sicht der an der Spiegelfläche reflektierten Kamera:
http://khayyam.kaplinski.com/2011/09/reflective-water-with-glsl-part-i.html
Die Transformation der Kamera berechnet man über $M'_{camera} = M_{reflection} \cdot M_{camera}$
mit der Reflektionsmatrix der Spiegelfläche $N_x\cdot x + N_y\cdot y + N_z\cdot z + D = 0$ (N ist der Normalenvektor der Fläche):
$M_{reflection} = \left(\begin{array}{cccc}1-2N_x^2&-2N_xN_y&-2N_xN_z&-2N_xD\\-2N_xN_y&1-2N_y^2&-2N_yN_z&-2N_yD\\-2N_xN_z&-2N_yN_z&1-2N_z^2&-2N_zD\\0&0&0&1\end{array}\right)$
Anschließend zeichnet man die Szene regulär, wobei die Spiegelfläche mit der vorher gerenderten Textur belegt wird. Natürlich kann man die Texturkoordinaten wieder lokal verändern, um z.B. Wasser zu simulieren.
← Brechungseffekte | ● | Postprocessing →