PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doom3-Schatten, Stencil-Test & CPU-Lastigkeit


avalanche
2004-07-31, 02:00:58
Ich hab gerade den Doom3-Performance-Artikel gelesen und recht weit unten wurde angemerkt, dass die Schattenberechnung in Doom3 die CPU sehr fordern würde. Soweit ich das mitbekommen habe, werden die Schatten in Doom3 doch über einen "einfachen" (evtl. doch nicht so einfachen?) Stencil-Test realisiert. Jetzt stellt sich für mich als Erstes die Frage, ob das stimmt, was ich mitbekommen habe - wahrscheinlich ist das ja nur die halbe Wahrheit - und als Zweites, was an Stencils CPU-lastig sein könnte. Eigentlich ist das doch eine Sache, die fast nur mit der Grafikkarte zutun hat.
Beim Schreiben ist mir noch aufgefallen, dass ich eigentlich ganz gut begriffen hab, wie mit Stencils umgegangen wird (jedenfalls geh ich davon aus... ;)), ich aber irgendwie grad nicht weiß, wo selbige herkommen. Eventuell steckt da die CPU-Lastigkeit drin? Ich bin diesmal noch mehr gespannt auf Erklärungen als sonst, weil ich mir das irgendwie so garnicht selber zusammenreinem kann...

Kant
2004-07-31, 02:25:11
Einfache Antwort : Shadow Volumes.

Beim Stencil Verfahren wird ja der Schattenwurf eines Objects pro Licht als Mesh, also sozusagen als eigenes Object benötigt. Und eben diese Mesh Erzeugung läuft im Normalfall auf der CPU ab.
Und wenn Carmack nicht ein paar Kniffe in seiner Engine drin hat, muss das dynamisch für jedes Frame berechnet werden (Wenn entweder Object oder Lichtquelle die Position ändert)

Xmas
2004-07-31, 02:48:25
Zur Berechnung der Schattenvolumen muss man die Silhouettenkanten eines Objekts aus Sicht der Lichtquelle finden. Dann wird von dieser Kante aus das Schattenvolumen von der Lichtquelle weg theoretisch unendlich erweitert.

Das Finden der Kanten und generieren der Schattenpolygone kann eigentlich zur Zeit nur die CPU.
Allerdings gibt es eine Technik, die z.B. im 3DMark03 eingesetzt wird, bei der die meiste Arbeit in der GPU erledigt wird. Dazu werden einfach von vornherein an allen Kanten eines Models zusätzliche, "degenerierte" Polygone eingefügt. Der Vertex Shader sorgt dann dafür, dass die richtigen Polygone "langgezogen" werden.
Insgesamt fällt dadurch wesentlich mehr Arbeit an, allerdings entwickeln sich GPUs auch schneller als CPUs, was diesen Nachteil in absehbarer Zeit wettmachen könnte.

Wenn man aber nicht gerade eine absolute High-End-Karte hat, ist man IMO mit der Balance von Doom3 zur Zeit noch besser bedient.

avalanche
2004-08-01, 01:58:18
Vielen Dank euch Beiden für die Antworten. Bin ein Mal mehr schlauer geworden ;)