Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

1

08.10.2012, 21:28

Deferred Shading

Hallo. Mir ist nicht ganz klar, ob ich das Prinzip von Deferred Shading verstanden habe.
Der G-Buffer wird gebraucht um auf der 2D Textur Abstände und ähnliches aus zurechnen?
Wie werden Schatten mit Deferred Shading realisiert?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

08.10.2012, 21:50

Deferred Shading und Schatten vertragen sich nicht so gut in dem Sinne, als das man für jede Lichtquelle, die Schatten werfen soll, ne entsprechende Shadow Map rendern muss - dort hat man also wieder nen Passes in Abhängigkeit der Anzahl der Lichtquellen.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

08.10.2012, 22:37

Dieses Problem hat man aber eigentlich immer ...

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

4

09.10.2012, 10:07

Leider, hat man das eigentlich immer. Ich wollte es nur für den Threadersteller in Bezug auf Deferred Shading konkretisieren.
Viele Lichtquellen ohne Schatten funktioniert mit Deferred Shading ja sehr gut.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

09.10.2012, 14:53

Diffuse(Alberto)

Da musste ich schmunzeln :D
(es heißt Albedo)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

09.10.2012, 16:49

Deferred Shading/Rendering/Lighting. Nenn es wie du willst, ist verzögertes Rendern.


Deferred Rendering und Deferred Lighting sind allerdings zwei verschiedene Ansätze.


Vorteile ist das wirklich nur Lichtberechnungen für die sichtbaren Pixel gemacht werden müssen. Anders als Forward Rendering. Dies führt dazu das viele Lichtquellen möglich sind, ohne das der Rechner gleich in die Knie geht.


Beim Forward Rendern werden idealerweisse auch nur die sichtbaren Pixel beleuchtet. Der eigentliche Vorteil ist die Entkopplung von Beleuchtung und Rendern von Objekten.

Probleme gibts bei Alpha und bei ausgefalleneren Shadern. Die Informationen muss man dann auch über den GBuffer geben was einen starken Overhead gibt. Aber das ist eine andere Geschichte.


Deferred Shading funktioniert generell nicht gut mit Alphablending, die Information tangiert den GBuffer daher auch nicht. Häufig werden spezielle Materialien einfach in einem Forward-Pass extra gerendert.
@D13_Dreinig

7

09.10.2012, 16:50

[edit]sry, grad erst gemerkt, dass der Tab wieder Ewigkeiten offen war, und es längst mehr als 2 Antworten gab...[/edit]

Ich hab es noch nicht gemacht, aber es sollte doch eigentlich vollkommen analog zum normalen Rendern gehen. Du hast deine Shadowmap und testest mit dem selben Test, ob ein Pixel beleuchtet wird, oder nicht.
Natürlich musst du zusehen, dass du alle benötigten Daten hast, das heißt du wirst neben der Farbe und Normale vielleicht auch die Position im 3D Raum in einen Buffer schreiben wollen. Das Prinzip bleibt gleich, bloß benutzt du die Daten nicht direkt für die Rechnung, sondern speicherst sie zwischen, in der Hoffnung, später vielleicht doch nicht alle Berechnungen ausführen zu müssen.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige