PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum eigentlich so oft eckige Schatten?


Karümel
2010-12-20, 17:20:00
Warum findet man so oft bei Spielen so schlechte Schatten?
wie z.B. bei Bad Compnay 2 (Ohne DX11 wenn ich das richtig weiß, dort sind angeblich die Schatten ja "Sauber"), ich meine als immer diese eckigen, flimmerigen Ränder der Schatten. Oder auch bei der PS3 und GT3 oder Forza 3 auffer 360.

Warum machen die Schatten so oft Probleme und warum sehen die dann immer so aus wie sie aussehen, als warum immer diese ganz grobe eckige Muster was größtenteils noch flackert bei Bewegung?

Partner
2010-12-20, 17:38:54
Das Problem ist das man die Schatten zunächst von der Lichtquelle aus betrachtet in eine Textur zeichnen lassen muß und diese erst danach auf die Szenengeometrie in der Betrachterperspektive projiziert wird. Bei dieser Projektion kommt es zu Auflösungsverzerrungen weil die Geometrie ja im Gegensatz zur Textur ungeordnetet ist. Dazu kommen noch weitere Probleme wie z.B. bei Verdeckungen.

Es gibt verschiedene Techniken die versuchen diese Probleme zu minimieren, nur sind diese natürlich von den Leistungsgrenzen abhängig.

del_4901
2010-12-20, 17:58:26
Das Problem ist das man die Schatten zunächst in eine Textur zeichnen lassen muß und diese erst danach aus einer anderen Perspektive auf die Szenengeometrie projiziert wird. Bei dieser Projektion kommt es zu Auflösungsverzerrungen weil die Geometrie ja im Gegensatz zur Textur ungeordnetet ist. Dazu kommen noch weitere Probleme wie z.B. bei Verdeckungen.

Es gibt verschiedene Techniken die versuchen diese Probleme zu minimieren, nur sind diese natürlich von den Leistungsgrenzen abhängig.

Du immer mit deinen Verzerrungen, das ist nichts weiter als Aliasing durch ueber- oder unterabtastung der Schatten/Depthtexture. http://developer.nvidia.com/object/hwshadowmap_paper.html

Partner
2010-12-20, 18:18:07
Du immer mit deinen Verzerrungen, das ist nichts weiter als Aliasing durch ueber- oder unterabtastung der Schatten/Depthtexture. http://developer.nvidia.com/object/hwshadowmap_paper.htmlUnd was genau ist das anderes als eine Auflösungsverzerrung der Schattenpuffer?!! :mad:

All die dummen Leute die Foren wie dieses nur dazu nutzen weil sie meinen sich durch Widersprechungen irgendwie zu profilieren, kotzen mich einfach maßlos an! Es war ein Fehler das ich mein Vorhaben, mich aus diesem Grund von Internetforen fernzuhalten, nicht durchgezogen habe.

Und tschüß. Viel Spaß mit eurer Egomanie!

VinD
2010-12-20, 18:21:17
einfache Projektion aus Lichtquellensicht + niedrige Shadowmapauflösung + Bilneares Filtern der Shadowmap == diese hässlichen Schatten

Gegenmaßnahme: hohe Shadowmapauflösung
Nachteil: Verringerung der Bildwiederholung

mfg

PS: BC2 basiert auf einen Deferred Renderer, die haben den Vorteil alle Schatten in 'einem' Durchgang auf einmal zu berechnen. Das spart Leistung die in eine höhere Shadowmapauflösung investiert wird ;)

del_4901
2010-12-20, 18:34:29
Und was genau ist das anderes als eine Auflösungsverzerrung der Schattenpuffer?!! :mad:

All die dummen Leute die Foren wie dieses nur dazu nutzen weil sie meinen sich durch Widersprechungen irgendwie zu profilieren, kotzen mich einfach maßlos an! Es war ein Fehler das ich mein Vorhaben, mich aus diesem Grund von Internetforen fernzuhalten, nicht durchgezogen habe.

Und tschüß. Viel Spaß mit eurer Egomanie!
Erklaer lieber erst mal "Auflösungsverzerrung der Schattenpuffer" das ist ein so wunderlicher Begriff das alle, die ich dazu befragt habe lustige Gesichter gezogen haben.

Coda
2010-12-20, 18:39:00
PS: BC2 basiert auf einen Deferred Renderer, die haben den Vorteil alle Schatten in 'einem' Durchgang auf einmal zu berechnen. Das spart Leistung die in eine höhere Shadowmapauflösung investiert wird ;)
Ich glaube du hast da was falsch verstanden. Auch bei einem DR muss jeder Schattenpuffer getrennt berechnet werden.

Der Vorteil ist primär, dass man die Lichtberechnung nur für sichtbare Pixel machen muss und das im Screenspace erfolgen kann.

Grey
2010-12-20, 18:44:18
einfache Projektion aus Lichtquellensicht + niedrige Shadowmapauflösung + Bilneares Filtern der Shadowmap == diese hässlichen Schatten

Gegenmaßnahme: hohe Shadowmapauflösung

Es gibt auch andere Methoden das zu umgehen, Blur/PCF Kombo bspw.

VinD
2010-12-20, 18:46:01
Ich glaube du hast da was falsch verstanden. Auch bei einem DR muss jeder Schattenpuffer getrennt berechnet werden.

Der Vorteil ist primär, dass man die Lichtberechnung nur für sichtbare Pixel machen muss und das im Screenspace erfolgen kann.

Sry hab ich nicht explizit angegeben :wink:
Ist ja auch irgendwo auch klar das es nix bringt das selbe in einer anderen Reihenfolge zu berechnen und zu behaupten es wäre schneller.

lg :)

Es gibt auch andere Methoden das zu umgehen, Blur/PCF Kombo bspw.
äh ... *matschmatsch*

Nasenbaer
2010-12-20, 18:50:20
Basieren denn heutzutage tatsächlich alle erwähnenswerten Schatten-Algorithmen auf ShadowMaps?

del_4901
2010-12-20, 18:54:12
Basieren denn heutzutage tatsächlich alle erwähnenswerten Schatten-Algorithmen auf ShadowMaps?
Bei allen dynamischen Schatten, ja. Aber das iat ja auch alles kein Problem, wenn man es vernuenftig implementiert.

Grey
2010-12-20, 18:56:36
äh ... *matschmatsch*

Was?

Langenscheiss
2010-12-20, 18:57:40
Hängen bzw. hingen die Glättungsmaßnahmen bedeutend von den Fähigkeiten der Hardware ab? Frag nur, weil es ja in der Vergangenheit schon öfter Beispiel gab, wo diese Blöcke bevorzugt auf Grakas bestimmter Hersteller zu sehen waren.

del_4901
2010-12-20, 18:59:57
Es gibt auch andere Methoden das zu umgehen, Blur/PCF Kombo bspw.


äh ... *matschmatsch*
PCF erschlaegt die Aliasing-Artefakte schon ganz gut, wenn es jedoch zu grob wird, dann muss man mit CSM ran.

Hängen bzw. hingen die Glättungsmaßnahmen bedeutend von den Fähigkeiten der Hardware ab? Frag nur, weil es ja in der Vergangenheit schon öfter Beispiel gab, wo diese Blöcke bevorzugt auf Grakas bestimmter Hersteller zu sehen waren.
Ati hat kein Hardware PCF, das muesste man dann von Hand machen, den Aufwand spaaren sich viele Entwickler.

AwesomeSauce
2010-12-20, 19:01:59
Zweimal Gauss-Blur Pass und die Schatten sind smoother als ein Baby-Popo:D Die Framerate ist dann aber auch am A...llerwertesten.

VinD
2010-12-20, 19:04:55
Tut mir ja leid, aber Weichzeichner nur für Softshadows nicht um die geringe Auflösung zu kaschieren bitte.
BTW: war mehr auf Blur bezogen, wobei PCF auch manchmal (subjektiv-)hässliche Abstufungen erzeugt...

Nighthawk13
2010-12-20, 19:06:18
Jo CSM(=Cascading Shadow maps) wollte ich gerade auch erwähnen;)

Softshadows wie hier beschrieben verstecken auch die Blockartefakte am Rand:
http://developer.amd.com/documentation/presentations/legacy/Chapter8-Mittring-Finding_NextGen_CryEngine2.pdf
(Seite 105-111)

Langenscheiss
2010-12-20, 19:08:29
@AlphaTier
Wird der PCF Algorithmus (also eine Mittelung über shadow map samples soweit ich weiß) auch anderweitig genutzt (verzeihe meine arg begrenzten Kenntnisse im rendering, bin aber trotzdem neugierig) oder warum sollte sowas extra in hardware implementiert werden?

del_4901
2010-12-20, 19:17:08
@AlphaTier
Wird der PCF Algorithmus (also eine Mittelung über shadow map samples soweit ich weiß) auch anderweitig genutzt (verzeihe meine arg begrenzten Kenntnisse im rendering, bin aber trotzdem neugierig) oder warum sollte sowas extra in hardware implementiert werden?
Mhm nmir faellt grad auf die schnelle nichts weiter ein. Aber sind gute schnelle Schatten kein Grund genug? Soviel Aufwand wird das nicht gewesen sein. Richtig interessant wurde die Sache eh erst mit Bilinear PCF.

deekey777
2010-12-20, 19:42:30
Ati hat kein Hardware PCF, das muesste man dann von Hand machen, den Aufwand spaaren sich viele Entwickler.
Ist das nicht seit DX10 Pflicht?

Es gibt auch andere Methoden das zu umgehen, Blur/PCF Kombo bspw.
Es gibt da noch Jittering wie in Crysis oder Stalker CS.

del_4901
2010-12-20, 19:45:39
Ist das nicht seit DX10 Pflicht?
k.A kann schon sein.

(del)
2010-12-20, 19:59:17
einfache Projektion aus Lichtquellensicht + niedrige Shadowmapauflösung + Bilneares Filtern der Shadowmap == diese hässlichen Schatten
Würde bilineares Filtering diese extreme Kantenbildung nicht verhindern?
Oder ist die Shadowmap-Auflösung häufig so niedrig bemessen, dass das nicht mehr ins Gewicht fällt? :confused:

VinD
2010-12-20, 20:01:49
Würde bilineares Filtering diese extreme Kantenbildung nicht verhindern?
Oder ist die Shadowmap-Auflösung häufig so niedrig bemessen, dass das nicht mehr ins Gewicht fällt? :confused:

führt nur zu 'flauschige' Zig-Zack-Kurven

DX10 und höher haben doch PCF und co nur begünstigt, nicht etwa vorausgesetzt oder??

del_4901
2010-12-20, 20:13:15
Würde bilineares Filtering diese extreme Kantenbildung nicht verhindern?
Oder ist die Shadowmap-Auflösung häufig so niedrig bemessen, dass das nicht mehr ins Gewicht fällt? :confused:
Das macht ja PCF, die Depthmap selbst kann man aber nicht bilinear filtern, weil es dann zu fehlerhaften Zwischenwerten kommen kann. Deswegen filtert man erst das Ergebniss nach dem Test ob ein Punkt im Schatten liegt.

Coda
2010-12-20, 20:57:21
Ati hat kein Hardware PCF, das muesste man dann von Hand machen, den Aufwand spaaren sich viele Entwickler.
Heute verwendet eh niemand mehr Hardware PCF. Viel zu unflexibel. Mit D3D10+ kann man darauf eh nicht zugreifen.

00-Schneider
2010-12-20, 21:14:38
Mal ne ganz dumme Frage.(Ich hab keine Ahnung)

Warum nimmt man nicht einfach die "Schattentechnik" aus FEAR oder D3/Q4 etc.? Die Schatten "von damals" sehen imho besser als die heutigen Schatten (BF:BC2) aus...

deekey777
2010-12-20, 21:28:10
Mal ne ganz dumme Frage.(Ich hab keine Ahnung)

Warum nimmt man nicht einfach die "Schattentechnik" aus FEAR oder D3/Q4 etc.? Die Schatten "von damals" sehen imho besser als die heutigen Schatten (BF:BC2) aus...
Weil sie hart waren und weiche Schatten (weiche Schatten und nicht das, was in FEAR zu sehen war) sind mit Shadow-Volumes sehr teuer, wenn mich nicht alles täuscht.

Nighthawk13
2010-12-20, 21:29:53
Alpha-Test-Texturen(Zäune, Bäume etc) gehen auch nicht mit Shadow Volumes.

Coda
2010-12-20, 21:44:01
Weil sie hart waren und weiche Schatten (weiche Schatten und nicht das, was in FEAR zu sehen war) sind mit Shadow-Volumes sehr teuer, wenn mich nicht alles täuscht.
Sie sind unmöglich.

Warum nimmt man nicht einfach die "Schattentechnik" aus FEAR oder D3/Q4 etc.? Die Schatten "von damals" sehen imho besser als die heutigen Schatten (BF:BC2) aus...
Wenn die Konsolen nicht im Weg wären hätten wir schon längst sehr ordentliche Shadowmap-Schatten die nicht so komisch ausgefranzt sind.

deekey777
2010-12-20, 21:45:06
Alpha-Test-Texturen(Zäune, Bäume etc) gehen auch nicht mit Shadow Volumes.
Die entsprechenden Schatten kann man doch anmalen. X-D

Das Shadow-Mapping scheint in STALKER SC nicht nur für Schatten verwendet zu werden, sondern auch für dynamischen Regen und Sunshafts.

Sie sind unmöglich.
Das stimmt nicht: Für Doom 3 gab's eine Mod mit weichen Schatten. Es hat nur etwas gedauert, bis sie fertig waren (paar Sekunden pro Bild). ;D

del_4901
2010-12-20, 21:49:00
Heute verwendet eh niemand mehr Hardware PCF. Viel zu unflexibel. Mit D3D10+ kann man darauf eh nicht zugreifen.Da ich mehr mit den Konsolen zu tun habe interessiert mich DX10+ nur am Rande. Fuer die PS3 ist PCF das Mittel der Wahl. Ich dachte immer bilinSSPCF waehr das Mittel der Wahl bei DX10.

Tesseract
2010-12-20, 22:10:25
Warum findet man so oft bei Spielen so schlechte Schatten?
warum das aus technischer sicht so ist liegt daran, dass man einfach keine sinnvolle schattenberechnung durchführt. z.B. statt mittelgroßen, perspektivischen shadowmaps werden einfach unperspektivische genommen, die entweder viel zu klein sind um ordentlich auszusehen oder schön aussehen, dann aber so groß werden, dass sie nichtmehr sinnvoll berechenbar sind.
und da das spiel ja auf möglichst jeder hardware (inkl. konsolen, dem handy und der mikrowelle) laufen soll wählt man dann die erste variante und hat blockige schatten.

Basieren denn heutzutage tatsächlich alle erwähnenswerten Schatten-Algorithmen auf ShadowMaps?
warum denn nicht? ist (ähnlich wie rasterisierung) eine sehr elegante lösung und hat, ordentlich implementiert, auch eine sehr gute qualität bzw. sehr viel qualität/leistung.

Nasenbaer
2010-12-20, 22:17:09
Sie sind unmöglich.

Und was ist hiermit? (hab das Paper allerdings nicht gelesen)

Ulf Assarsson, Michael Dougherty, Michael Mounier, and Tomas Akenine-Möller, An Optimized Soft Shadow Volume Algorithm with Real-Time Performance, Graphics Hardware 2003, pp. 33-40, p. 131, July 2003.

Paper: http://www.cs.lth.se/~tam/pubs/soft_gfxhw2003.pdf
Video: http://fileadmin.cs.lth.se/graphics/research/shadows/OurVs1024_1_mpeg4_big.mov
Quelle: http://graphics.cs.lth.se/research/shadows/

Coda
2010-12-20, 22:35:29
Sorry, ich hab den Satz falsch gelesen. Man kann Shadow Volumes schon weich bekommen, es ist nur übel teuer.

Ich meinte dass man Shadowmaps nicht hart bekommt.

_DrillSarge]I[
2010-12-20, 23:04:31
Das stimmt nicht: Für Doom 3 gab's eine Mod mit weichen Schatten. Es hat nur etwas gedauert, bis sie fertig waren (paar Sekunden pro Bild). ;D
quatsch. das läuft (inkl hdr, ssao und dof) flüssig
http://www.doom3world.org/phpbb2/viewtopic.php?t=22822


http://666kb.com/i/bpemyy6ladv4gr2eo.jpg
(nicht über die fps wundern, ich hab noch nen video im hintergrund laufen und die karte bleibt da auf 400/400)

AwesomeSauce
2010-12-20, 23:21:08
F.E.A.R zeigt, wie es nicht gemacht werden sollte:freak:

http://images.anandtech.com/reviews/video/fear/16noaasoftatismall.png
http://www.anandtech.com/show/1831/3

Wie funktionieren Shadowmaps eigentlich mit Alpha Texturen? Die Depthmap für ein Objekt mit Alphatextur sieht ja genau gleich aus wie mit jeder anderen Textur.

Edit: Antwort gleich gefunden:
Transparent objects are not rendered in the depth-only pass, because transparent objects do not update the depth buffer.
http://http.developer.nvidia.com/GPUGems/gpugems_ch12.html

Coda
2010-12-20, 23:53:38
Die Depthmap für ein Objekt mit Alphatextur sieht ja genau gleich aus wie mit jeder anderen Textur.
Eben nicht.

AwesomeSauce
2010-12-21, 00:16:45
Die Transparenzinformationen werden in einem strikten Depth-only Pass berücksichtigt?

Coda
2010-12-21, 00:21:40
Bei Alpha-Tests ja. Genauso texkill. Wobei das bei D3D10+ eh das selbe ist.

del_4901
2010-12-21, 00:30:42
Die Transparenzinformationen werden in einem strikten Depth-only Pass berücksichtigt?
Die opaquen Materialien zeichnet man mit fastZ und ohne Pixelshader, bei den maskierten Materialien muss man ohne fastZ und mit texkill zeichnen.

Coda
2010-12-21, 00:33:18
Man muss Fast-Z auf dem PC nicht aktivieren/deaktivieren. Das geht automatisch. Zuviel Konsolen programmiert? :)

del_4901
2010-12-21, 00:54:48
Man muss Fast-Z auf dem PC nicht aktivieren/deaktivieren. Das geht automatisch. Zuviel Konsolen programmiert? :)Man muss doch aber schon noch aufpassen, dass man nich immer hin und her wechselt?

Coda
2010-12-21, 00:58:32
Das kann sein. Ich kenn die Performanceimplikationen auf modernen Chips nicht genau.

del_4901
2010-12-21, 01:09:34
Das kann sein. Ich kenn die Performanceimplikationen auf modernen Chips nicht genau.Solang man den naechsten Batch z.B. mit einem Texatlas hinnauszoegern kann, wird das vielleicht schneller sein.

Tesseract
2010-12-21, 03:41:13
I[;8460608']quatsch. das läuft (inkl hdr, ssao und dof) flüssig
http://www.doom3world.org/phpbb2/viewtopic.php?t=22822


http://666kb.com/i/bpemyy6ladv4gr2eo.jpg
(nicht über die fps wundern, ich hab noch nen video im hintergrund laufen und die karte bleibt da auf 400/400)

das sind keine weichen schatten sondern unscharfe harte schatten. ;)