Ich ging auf TomTsagks richtige Antwort ein und dachte, es könnte helfen, ein bisschen mehr darüber zu beschreiben, warum Spiele so funktionieren.
Licht in Spielen "wandert" nicht wirklich von der Quelle zur Oberfläche, zur Kamera und wird dabei behindert.
Um herauszufinden, wie hell die einzelnen Pixel einer Oberfläche auf der Grundlage eines bestimmten Lichts gezeichnet werden sollen, verwenden wir eine mathematische Formel (oder eine Näherungsformel), die die Blickrichtung der Oberfläche und die Richtung von diesem Punkt auf der Oberfläche zur Lichtquelle verwendet. Das ist es, nur die Richtung, aus der es scheint. Normalerweise wird kein Strahl geworfen, um zu überprüfen, ob das Licht tatsächlich dieses Pixel erreicht, da dies für jedes Pixel auf dem Bildschirm und für die Überprüfung des Strahls anhand der gesamten detaillierten Geometrie in der Szene gilt meist noch zu teuer für echtzeitspiele.
Standardmäßig werfen also keine Spiellichter Schatten. Die Richtung zu einem Licht bleibt gleich, auch wenn ein Schattenwerfer im Weg ist. Die Mathematik gibt uns also den gleichen Helligkeitswert.
Wenn wir Schatten simulieren wollen, müssen wir das separat tun. Ein üblicher Weg ist das, was als Schattenkarte bezeichnet wird. Bevor wir unsere Szene schattieren, rendern wir in dieser Version die Szene zunächst aus der Perspektive jedes Lichts, als wäre dieses Licht eine Kamera, und speichern die Tiefe jedes Pixels, das es sieht, in einer Off-Screen-Textur.
Wenn wir dann die Szene schattieren, können wir den mathematischen Abstand dieses Pixels von der Lichtquelle mit der Tiefe vergleichen, die wir bei dem entsprechenden Pixel in der Schattenkarte aufgezeichnet haben. Wenn die Tiefe der Schattenkarte kleiner ist, bedeutet dies, dass sich zwischen hier und dem Licht eine andere Oberfläche befindet, und wir zeichnen stattdessen dieses Pixel im Schatten.
Es gibt eine Menge cooler Techniken, um diese kartenbasierten Schatten mit weniger Artefakten / Aliasing schöner aussehen zu lassen, aber ich werde sie vorerst beschönigen. Es genügt zu sagen, dass sie im Allgemeinen auch nicht frei sind.
Weil dies erfordert, dass die gesamte Szene aus der Perspektive jedes Lichts (bis zu) erneut gerendert wird - bis zu sechs Mal, wenn es sich um ein Punktlicht handelt, das in alle Richtungen (Norden, Süden, Osten, Westen, oben, unten) scheint, und wir müssen erneut rendern - Wenn Sie die Schattenkarte rendern, sobald sich etwas bewegt, kann dies sehr teuer werden.
Daher konzentrieren Spiele ihr Rendering-Budget häufig auf die wichtigsten Lichter in der Szene - wie das direktionale Sonnenlicht - um sicherzustellen, dass sie gut aussehende Schatten haben. Kleine, kurzlebige, kleine Lichter wie der Blitz einer Explosion sind oftmals verzeihlich, wenn sie ein wenig an Okkludern vorbeigehen. Dies ist für Spieler oftmals angenehmer als ein Problem in der Framerate, da die Renderkosten aufgrund des zusätzlichen Renderns und Berechnens der Schattenkarte plötzlich steigen. Vor allem, wenn es sich um eine vielbeschäftigte Action-Szene handelt, in der es mehr auf die Fluidität als auf die Pixel-Perfektion ankommt.