HALF-LIFE PORTAL
Your Gate To Valve's Games www.hlportal.de
HL PORTAL
FORUM
MISC
PARTNER

TF2 Crafting

Special Artworks by
Hayungs

Link us:
HL PORTAL

Support us:


HLPortal
auf Facebook

›› Willkommen!   ›› 95.016.202 Visits   ›› 18.316 registrierte User   ›› 16 Besucher online (0 auf dieser Seite)
    ARTIKEL 

Special

Der Schattenbug

18.03.2012 | 21:00 Uhr | von Trineas
15.463 Hits
1 viewing
   
Seite 1 | 8 Kommentare
   


Vor knapp acht Jahren hat Valve Half-Life 2 erneut auf der E3-Spielemesse präsentiert. Der oben gezeigte Screenshot stammt aus dieser Vorführung, die Szene findet man aber auch in der finalen Version des Spiels. Einmal mehr wurde die Möglichkeit der Physikengine gezeigt, mittels Kran und eines Schiffscontainers lassen sich Gegner beseitigen. Es zeigt allerdings gleichzeitig auch eine Schwäche der Engine, die viele Jahre bestehen bleiben sollte. Bis jetzt.

In diesem Artikel versuchen wir, auch für Laien verständlich zu erklären, was es damit auf sich hat und wie das ganze überhaupt funktioniert. Half-Life 2 und spätere Valve-Spiele nutzen eine statische Beleuchtung mit so genannten Lightmaps. Dabei wird bereits beim Erstellen der Map berechnet, wo wie viel Licht auf welche Oberfläche trifft und diese Information als eine Art Bild gespeichert. Dieses wird dann beim Spielen über die Map gelegt und sagt der Engine etwa, ob ein Raum dunkel oder hell ist. Der Vorteil an der Sache ist, dass für die Berechnung sehr komplizierte Algorithmen eingesetzt werden können, die eine besonders realistische Beleuchtung ermöglichen, wie etwa Licht, das von Wänden reflektiert wird. Der Nachteil liegt auf der Hand: Ein Level kann immer nur diese vorgegebene Beleuchtung haben und Veränderungen in der Spielwelt während des Spielens, etwa das Öffnen einer Tür, haben keine Auswirkungen.

Entsprechend können diese Lightmaps nur für statische Objekte zum Einsatz kommen, die sich nie verändern, für die Landschaft oder für Häuser etwa. Doch was ist mit den vielen beweglichen Dingen? Kisten, Fässer, Charaktere, usw.? Auch die brauchen Schatten. Sowohl rein aus optischen Gründen als auch aus spielerischen, da es sonst schwierig fällt, die genaue Position in einem dreidimensionalen Raum zu bestimmen. Deshalb hat Valve ergänzend ein eigenes Schattensystem integriert, bezeichnet werden diese von Valve als Projected Shadows. Dabei wird ein zweidimensionales Abbild des Models auf eine Textur gerendert und dieses dann einfach auf den Boden unterhalb des Objekts oder des Charakters projiziert. Anders als bei den Lightmaps geschieht das alles in Echtzeit, mit jedem Frame wird diese Textur aktualisiert.

Thumbnail Thumbnail
Die Projected Shadows überlappen nicht nur, sie
scheinen auch durch Wände und Böden.

Diese Projected Shadows sind extrem einfach gestrickt, sie passen sich nicht an die Beleuchtung der Map an und ignorieren zusätzliche Lichtquellen oder andere Schatten. Sie werden einfach immer unterhalb des Models projiziert. Ein komplexeres System wäre mit der damaligen Hardware auch gar nicht möglich gewesen, ohne Abstriche in anderen Bereichen machen zu müssen. Siehe etwa das wenige Monate davor erschienene Doom 3. Das hatte zwar ein komplexes dynamisches Schattensystem, dafür aber keine mit Half-Life 2 vergleichbaren Außenlevels und litt generell unter Polygonarmut, also eher eckigen Models.

Zurück zu den einfachen Projected Shadows in Half-Life 2. Diese sind im oben gezeigten Screenshot unterhalb des Containers und des Elektromagneten zu sehen und damit sind wir auch bereits bei einem der großen Probleme: Sie überlappen. Es ist möglicherweise die auffälligste Stelle im ganzen Spiel, aber es kommt auch in vielen anderen Bereichen vor, sowohl in HL2 als auch in anderen Source-Engine-Spielen. Es handelt sich dabei gar nicht um einen Bug, den man beheben könnte, das System funktioniert wie es soll, es projiziert einfach einen Schatten unterhalb des Models, ohne auf irgendetwas Rücksicht zu nehmen, und ist somit sehr performant.

Obwohl in den Jahren danach längst die Hardware existierte, um ein komplexeres Schattensystem einzuführen, sollte es aber bis 2012 dauern, bis sich daran etwas änderte. Im Changelog eines Updates für die Counter-Strike: Global Offensive Beta hieß es dann plötzlich kurz und knapp: "Source-Schattenengine ausgetauscht"
Was heißt das genau? Die zu Beginn erwähnten statischen Lightmaps wurden dabei nicht angetastet, sie existieren nach wie vor und sorgen für die grundsätzliche Beleuchtung der Levels. Die Projected Shadows hingegen sind weg, komplett und ohne Ausnahme. Stattdessen kommen nun bei den Außenlevels Cascaded Shadowmaps zum Einsatz. Diese sind seit einigen Jahren Standard und werden von praktisch allen modernen Ego-Shootern verwendet. Doch was genau sind die und was tun die?

Thumbnail Thumbnail
Die Cascaded Shadowmaps sorgen für
homogene Schatten in Außenlevels.

Der Begriff Cascaded steht dafür, dass diese in verschiedene Detailstufen unterteilt sind, das ist für das grundsätzliche Verständnis des Systems allerdings eher unwichtig. Interessanter ist da schon die Shadowmap an sich. Am besten stellt man sich die Sonne wie eine Kamera vor. Was diese Kamera sieht, wird beleuchtet. Was sie nicht sieht, bleibt dunkel. Die Sonne sieht nun beispielsweise einen Baum, sie sieht allerdings nicht die Rückseite davon und den Teil des Bodens, der von dem Baum verdeckt wird. Dieses Kamerabild wird wieder als Textur gespeichert und anschließend über die Map gelegt.

Anders als die Lightmaps findet das alles in Echtzeit statt, was sich natürlich auf die Performance niederschlägt. Mit jedem Frame wird die Shadowmap aktualisiert. Somit werfen auch alle beweglichen Objekte einen Schatten. Wie würde also unsere Szene aus Half-Life 2 aussehen, würde man sie mit der Engine von CS: GO darstellen? Die Sonne "sieht" die obere Seite des Magneten, weshalb diese logischerweise beleuchtet wird. Alles was sich darunter befindet ist in dem Kamerabild nicht mehr zu sehen, da es ja vom Magneten verdeckt wird und somit dunkel. Alles was sich danach noch dahinter befindet, ist dem System egal, mehr Schatten als Schatten geht ja nicht. Ein Überlappen wird so verhindert, die Szene würde endlich ohne diesen Makel spielbar sein.

Doch momentan haben wir nur vom Sonnenlicht gesprochen, was ist etwa innerhalb eines Hauses? Etwas weiter vorne im Text haben wir erklärt, dass die Projected Shadows ohne Rücksicht einfach überall einen Schatten hinprojizieren, egal ob im Freien oder in geschlossenen Räumen. Doch die gibt es nun ja nicht mehr und die Cascaded Shadowmaps betreffen nur das Sonnenlicht und für die Shadowmap ist alles innerhalb des Hauses ein großer dunkler Bereich.

Thumbnail Thumbnail
Das neue Schattensystem ermöglicht auch, dass Schatten auf bewegliche Objekte und sogar das Waffenmodel in der Ego-Ansicht gezeichnet werden.

Um auch dort dynamische Schatten zu haben, benötigt es zusätzliches dynamisches Licht, etwa Lampen oder Scheinwerfer. Auch diese verwenden Shadowmaps, nur ist dann die "Kamera" nicht die Sonne, sondern die jeweilige Lichtquelle. Bereits in Alien Swarm und Portal 2 wurde diese Technik eingesetzt. In Counter-Strike: Global Offensive wird aber offenbar aus Performancegründen darauf verzichtet. Doch wie zu Beginn des Artikels erklärt, sind Schatten eine wichtige Komponente, um etwa die exakte Position von Gegnern besser ausmachen zu können. Aus diesem Grund hat Valve nun sogenannte Blob-Shadows eingeführt - dieselben, die auch in Counter-Strike 1.6 verwendet werden. Das sind ganz unscheinbare dunkle Stellen unterhalb der Models, gerade stark genug um sie zu erkennen. Sie erfüllen ihren Zweck und sie sind nicht störend, aber wirklich realistisch sind sie auch nicht. Und somit haben wir auch weiterhin, trotz aller Verbesserungen, eine kleine Schwachstelle in der Source-Engine. Ein kleiner neuer Schattenbug.
   
 
   
Weitere Artikel:
- Wie gut ist Source wirklich? (04.07.2004)



FB | Tw | YT | SC
LOGIN
User oder E-mail:


Passwort:


oder
Registrieren
Passwort vergessen?
OpenID-Login
UMFRAGE
Half-Life: Alyx in VR - was hälst du davon?
   
   
NEWSLETTER
   
E-Mail Adresse:
   

    USER ONLINE 
Insgesamt sind 16 Benutzer online. Davon sind 0 registriert:
    SITE OPTIONS 
- Zu Favoriten hinzufügen
- Als Startseite festlegen (IE only)
- Fehler auf dieser Seite?