[DX9] Deferred Shading... Probleme

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44
Kontaktdaten:

[DX9] Deferred Shading... Probleme

Beitrag von DomiOh » 25.03.2009, 18:27

Hallo,

ich bin gerade dabei Deferred Shading zu implementieren. Das Problem was ich habe bezieht sich allerdings nicht nur auf Deferred Shading.
Eigentlich habe ich 2 Probleme.

Problem 1 - Folgendes Szenario:

Bild

a) und b) sind zwei Räume. c) ist ein Punktlicht, welches in alle Richtungen scheint. Der Pfeil ist der Spieler und die Blickrichtung.
Ich habe das Licht im Rücken. Theoretisch ist es so, dass auch Lichter in meinem Rücken die Szene in Blickrichtung beleuchten könnten, je nachdem wie groß deren Lichtabnahme ist. Problem hier: Wie kann ich verhindern, dass das Licht quasi durch die Wand scheint, was es ja eigentlich würde.


Problem 2:

Bild

a) und b) sind zwei Räume. c) ist ein Punktlicht, welches in alle Richtungen scheint, d) ist ein Zylinder. Der Pfeil ist der Spieler und die Blickrichtung.
Auch hier habe ich das Licht im Rücken. Wie erstelle ich eine Shadowmap, die dennoch dafür sorgt, dass das Licht einen Schatten wirft?


Ich wäre für ein paar Tips oder Ideen echt dankbar.

Benutzeravatar
Zudomon
Establishment
Beiträge: 2136
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: [DX9] Deferred Shading... Probleme

Beitrag von Zudomon » 25.03.2009, 18:41

Hi,

ich verstehe die Problematik nicht so ganz. Hat das Problem überhaupt mit Deferred Shading zu tun?

Das erste Problem ensteht doch dadurch, dass das Licht nicht durch die Wand geblockt wird. Also entweder du aktivierst Schatten, oder zu trickst, indem du explizit die Beleuchtung durch die Lichtquelle für den türkisen Raum unterdrückst.

Bei deinem zweiten Problem kommt es darauf an, hast du eine Shadowmap pro Objekt oder pro Lichtquelle? Bei einer Punktlichquelle wäre das einfachste und langsamste, 6 Shadowmaps in jede Richtung zu rendern. Wobei du da auch gut optimieren kannst, weil sich ja nicht immer in jeder Richtung was ändert und du so nicht immer alle Seiten updaten müsstest.

Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 22:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: [DX9] Deferred Shading... Probleme

Beitrag von CodingCat » 25.03.2009, 18:44

Genau, beide Probleme haben ja absolut nichts mit Deferred Shading zu tun, wenn du Forward Shading einsetzt, hast du genausowenig Schatten. Shadow Maps lassen sich unabhängig von Deferred Shading / Forward Shading erstellen. Papers und Hilfestellungen zu Shadow Mapping findest du hier und hier.

Sollte dein Problem nicht Shadow Mapping, sondern die Integration von Shadow Mapping in die Deferred Shading Pipeline sein, so unterscheiden sich die Algorithmen beim Erzeugen der Shadow Maps wie gesagt kaum bzw. gar nicht. Bei Deferred Shading projezierst du die Positionen deines G-Buffers anschließend einfach in den jeweiligen Light Space und vergleichst die resultierenden Tiefen mit denen der Shadow Maps. Ist der Pixel verdeckt, kannst du ihn sofort aussortieren, ansonsten beleuchtest du ihn ganz normal.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite

DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44
Kontaktdaten:

Re: [DX9] Deferred Shading... Probleme

Beitrag von DomiOh » 25.03.2009, 18:55

Alles klar. Soweit hatte ich mir das auch schon so ähnlich vorgestellt.
Ich danke euch für eure Antworten.

Antworten