Hatte ich mir auch heute morgen reingezogen, und bei Schritt 4.2 fielen mir die Kroketten aus dem Mund. Außerdem ist nach meiner Definition ein Z-Pre-Pass bereits ein kleiner Deferred-Shading-Renderer.CodingCat hat geschrieben:Zurück zum Forward Rendering?
Hatte ich mir auch heute morgen reingezogen, bei Schritt 4.2 fielen mir die Kroketten aus dem Mund.
Außerdem ist nach meiner Definition ein Z-Pre-Pass bereits ein kleiner Deferred-Shading-Renderer.
Dass das effizient wird, hatte ich mir schon gedacht. Mir ging es eigentlich eher um die einfache Formel „Tile-based-Deferred-Renderer minus G-Buffers = Tile-based-Forward-Renderer“. Die Effizient kommt eher aus dem „tile-based“ und nicht aus dem forward oder deferred Renderer. So wie es sich für mich darstellt, sind das einfach orthogonale Komponenten, die man im beliebigen Kreuzprodukt (tile-based, normal) × (forward Renderer, deferred Renderer) kombinieren kann.CodingCat hat geschrieben:Die Listen sollten eine ziemlich gute lokale Cache-Kohärenz aufweisen, die Schleifenrümpfe haben offensichtlich eine gute lokale Ausführungskohärenz. Auf moderner Hardware könnte das durchaus akzeptable Performance liefern?
eXile hat geschrieben:Auch das Argument mit den beliebig komplexen Materialien ist ausgelutscht, da muss man sich einfach nur genug fette G-Buffer nehmen, was ich in Zeiten von Graphikkarten mit bald 4 GiB VRAM nicht mehr so kritisch wie früher sehe.
Problematisch ist die Anzahl der Texturzugriffe im Pixel-Shader. Aber wie soll das besser werden, wenn du die gleiche Anzahl an Parametern halt nicht aus G-Buffern fischst, sondern aus Constant Buffern und normalen Texturen? Das ist doch alles eine unifizierte Speicherachitektur auf modernen Graphikkarten, da ist es relativ egal, aus welchem logischen Objekt die Daten nun physikalisch stammen. Man kann höchsten mit der Cache-Kohärenz hier argumentieren; aber die Graphikkarte sollte schnell merken, dass die G-Buffer wichtig sind.dot hat geschrieben:eXile hat geschrieben:Auch das Argument mit den beliebig komplexen Materialien ist ausgelutscht, da muss man sich einfach nur genug fette G-Buffer nehmen, was ich in Zeiten von Graphikkarten mit bald 4 GiB VRAM nicht mehr so kritisch wie früher sehe.
Das seh ich nicht so. Auch wenn der VRAM immer größer wird, das Bottleneck schlechthin auf modernen GPUs ist die Speicherbandbreite. Und genau das ist die Achillesferse von Deferred Rendering. Auch wenn du deinen megafetten G-Buffer in Zukunft problemlos in den VRAM geparkt bekommst: Die Anzahl der Parameter die du pro Pixel und Lichtquelle anfassen kannst bis die Performance im Erdkern ist, ändert sich dadurch nicht.
dot hat geschrieben:Die Frage ob die Rückkehr zum Forward Rendering kommt, stellt sich imo nicht. Die Frage ist nur wann sie kommt. Und all zu lang wirds vermutlich nichtmehr dauern.

Lolwut? Deferred Rendering ist genauso wie ein Z-Pre-Pass oder ein Deferred Renderer mit Light-Pre-Pass einfach nur eine Caching-Variante. Du ziehst einfach ein paar Variablen aus der innersten Schleife raus, in weiter außen liegende Schleifen. Das hat nichts mit anderen Screenspace-Methoden zu tun, wie z.B. SSAO und Konsorten.dot hat geschrieben:Deferred Rendering war nie was anderes als ein Hack, wie die meisten Screenspace Methoden die heute in aller Munde sind.
Deferred Shading hat nichts mit globaler Illumination zu tun. Gar nichts.dot hat geschrieben:Die Zukunft liegt imo in Richtung Global Illumination. Und dort haben Screenspace-Hacks eben rein prinzipiell keinen dauerhaften Platz, auch wenn man ein bisschen was, was ein wenig nach Global Illumination aussieht, heute ganz passabel damit hinfaken kann...
CodingCat hat geschrieben:PHP: a fractal of bad design
Zurück zu Artikel, Tutorials und Materialien
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste