Irradiance Cache

Allgemeines

Mit CINEMA 4D R15 wurde eine neue Irradiance Cache-Methode (im Folgenden "IC neu" genannt) eingeführt. Diese hat gegenüber der von früheren Versionen bekannten Methode (die weiterhin im Tab "Allgemein" unter GI Modus Irradiance Cache (Alt) eingestellt werden kann), folgende Vorteile:

Hinweis:Alle Bilder auf dieser Seite wurden mit der Irradiance-Cache-Methode sowohl als Primärer, als auch Sekundärer Methode gerendert.

Was ist ein "Irradiance Cache"?

Bei der IC-Berechnung werden mehrere Vorberechnungen (die sog. "Prepasses") angestellt, wobei die Szene analysiert wird, um dann an den wichtigsten Stellen (den sog. "Shadingpunkten", das sind die in den Prepasses angezeigten Punkte; besonders gut sichtbar bei kleinem Parameter Dichte) die indirekte Beleuchtung zu ermitteln (Details hierzu s.u.) :

Helligkeits- und Farbwerte dieser Shadingpunkte...

Die Helligkeits- und Farbwerte dieser Shadingpunkte werden dann im Irradiance Cache als sog. "Eintrag" gespeichert. Dieser Cache kann und sollte (mittels der Einstellungen im Tab "Cache-Dateien") abgespeichert werden, um bei Blickwinkeländerungen, Kameraanimationen etc. effektiv wieder verwendet zu werden. Diese Cache-Wiederverwendung erfolgt nur, wenn Sie im Bild-Manager (also nicht beim Rendern im Editor) rendern.

Beim finalen Rendern werden dann die Einträge des Irradiance Cache interpoliert, um die Pixel zwischen den Shadingpunkte mit indirektem Licht zu "versorgen".

...werden interpoliert, um eine homogene Lichtverteilung zu gewährleisten.

Die Nachteile der Irradiance Cache-Methode sollen natürlich auch nicht verschwiegen werden: Durch die Interpolation zwischen der begrenzten Zahl von Shadingpunkten können Details bzgl. Licht und Schatten (allerdings längst nicht mehr so stark wie von früheren Versionen gewohnt) wegfallen. In dieser Hinsicht hat die Methode QMC immer die Nase vorne.

Halten Sie sich vor Auge, dass die GI-Ergebnisse im Modus QMC immer die bestmögliche Qualität an Licht- und Schattenverteilung darstellt (leider auch die langsamste). Irradiance Cache versucht immer, diesem Ergebnis möglichst nahe zu kommen.

Irradiance Caches neigen bei Animationen zum Flackern. Mit IC neu wurde dieser Effekt minimiert. Es lässt sich allgemein festhalten, dass Irradiance Caches besonders stark zum Flackern neigen, wenn zur Beleuchtung sehr helle und kleine Polygonlichter verwendet werden. Große, gleichmäßige Lichtquellen (wie z.B. bei Verwendung eine leuchtenden Himmels, wo das Licht gleichmäßig von vielen Seiten kommt) mag IC neu besonders.

Hinweis:Die folgenden Parameter finden Sie fast genauso auch bei den Einstellungen des neuen Ambient Occlusion. Das Funktionsprinzip beider Effekte ist dasselbe (Ambient Occlusion hat dann allerdings nur eine Strahltiefe von 1).

Allgemeiner Hinweis: Wenn Sie fleckige Ergebnisse erhalten, so können diese meist mit einer erhöhten Sampleanzahl eliminiert werden. Auch Verbesserung der Einstellungen der Sekundären Methode hilft dabei. Wenn beispielsweise sehr schlechte Licht-Map-Qualitäten vorliegen, kann der Irradiance Cache dann selten noch was retten.

Eintragsdichte

Die meisten der folgenden Parameter werden Sie nur anfassen müssen, wenn Sie feinjustieren wollen. Für viele Fälle reicht Eintragsdichte aus, der in den Einstellungen Niedrig, Mittel und Hoch jeweils eine sorgfältig austarierte Kombination der nachfolgenden Parameterwerten vorgibt, während Vorschau eine schnelle Vorschaumöglichkeit bietet. Eigene erscheint, sobald Sie einzelne Eintragsdichte-Parameter ändern.

Im Allgemeinen müssen Sie die Eintragsdichte nur ändern, wenn Sie beispielsweise einen scharfen Schatten eines Polygonlichts (bzw. GI Portals) zeigen wollen (und auf das langsame Pro Pixel erzwingen verzichten).

Min. Rate[-8..4]

Max. Rate[-8..4]

Wenn Sie mittels Irradiance Cache rendern, werden zunächst einige Prepasses berechnet (die Phase, wo in mehr oder weniger schneller Folge zuerst grobe und dann immer kleinere Quadrate angezeigt werden). Währenddessen wird ermittelt, wie die Shadingpunktdichte verteilt wird. Das ganze ist ein adaptiver Prozess, bei dem besonderes Gewicht auf die kritischen Bereiche gelegt wird: Ecken, Schattenkanten usw. Die Differenz zwischen Min. Rate und Max. Rate bestimmt die Anzahl der Prepasses (s.a. Abbildung bei Min. Rate).

0 bedeutet jeweils volle Bildauflösung (Pixelgröße 1*1), während -1 eine Pixelgröße von "2*2", -2 "4*4" usw. darstellt. Min. Rate sollte sinnvollerweise stets kleiner bzw. gleich groß wie Max. Rate sein. Es sind allerdings auch positive Werte möglich, was Cacheeinträge im Subpixelbereich erlaubt (dies könnte beispielsweise bei Subpolygon Displacement sinnvoll sein, wenn Details verschluckt werden).

Insgesamt kommt diesen beiden Parametern nicht mehr die Bedeutung zu, die sie bei dem früheren IC noch hatten. Die Renderzeiten ändern sich nur geringfügig und sofern sich die Werte im Rahmen halten (Max Rate nicht unter Null), unterscheiden sich auch die Renderergebnisse nicht allzusehr. Wenn für Min. Rate negative Werte definiert werden und Max. Rate auf 0 steht, können Sie kaum was falsch machen.

Dichte[10..1000%]

Minimalabstand[0..1000%]

Maximalabstand[0..1000%]

Von unten nach oben steigender Wert für Dichte.

Die Dichte ist ein Regler für die allgemeine Shadingpunktdichteverteilung, je höher der Wert, desto höher die Shadingpunktdichte.

Es ist sinnvoll, diese 3 Parameter zusammen zu beschreiben, da sie alle drei zusammenwirken und vereinfacht gesagt, die Shadingpunktdichte allgemein, an kritischen und unkritischen Stellen definieren:

Das folgende Bild zeigt Ihnen die Auswirkungen dieser 3 Einstellungen an einer Beispielszene:

Verschiedene Variationen der 3 Parameter Dichte, Minimal- und Maximalabstand.

Aber wie wirken sich nun diese Shadingpunktverteilungen auf das final gerenderte Bild aus? Wichtig für ein sauber gerendertes Bild sind möglichst viele Shadingpunkte an den kritischen Stellen und eine halbwegs dichte Verteilung in den übrigen Bereichen. Wenn Sie dann noch dafür Sorge tragen, dass jeder Shadingpunkt mit möglichst vielen Samples ausgestattet wurde, kann nicht mehr allzuviel schief gehen.

Glätten[0..1000%]

Alle vorher beschriebenen Parameter drehten sich um die Platzierung von Shadingpunkten und deren Berechnung. Die indirekte Beleuchtung wurde also an vielen Stellen des Projekts punktuell ermittelt. Beim Rendern schließlich muss aus dieser punktuellen Helligkeitsverteilung eine flächige gemacht werden. Ein Glätten-Algorithmus macht das folgendermaßen: Für jedes zu rendernde Pixel einer Objektoberfläche wird der Irradiance Cache durchsucht, um Einträge in dessen unmittelbarer Nähe zu finden und deren Helligkeits- und Farbwerte für dieses Pixel zu interpolieren.

Je höher Sie den Parameter Glätten stellen, desto mehr Shadingpunkte werden bei der Interpolation herangezogen, um das aktuelle Pixel zu rendern. Der Parameter stellt einen Schwellwert dar, der entscheidet, ob dieser oder jener Cacheeintrag in seiner Nähe herangezogen wird oder nicht. Kleine Werte sorgen allgemein für schärfere (und oft fleckigere) Ergebnisse, während große Werte über größere Bereiche interpolieren, was zu gleichmäßigerer Ausleuchtung aber auch Wegfall von kleineren Details bedeutet.

Insgesamt ist Glätten ein Parameter, den Sie nicht oft anfassen werden müssen.

Farbverbesserung[0..1000%]

Beachten Sie wie der Schattenwurf mit höherem Farbkorrektur-Wert wesentlich definierter wird.

Hiermit können Bereiche, in denen sich die GI-Beleuchtung abrupt ändert (also z.B. bei GI-Schattenwürfen bei hellen Polygonlichtern) durch erhöhte Parameterwerte qualitativ verbessert werden. Im Endeffekt werden an diesen Stellen mehr Shadingpunkte erzeugt (was leider auch entsprechend mehr Zeit braucht). Wichtig dabei ist: Sie sollten die Sampleanzahl hoch genug stellen, damit es homogene Lichtverteilungen gibt, andernfalls würden fleckige Bereiche als anfangs erwähnte "abrupte Änderungen" identifiziert.

Übrigens können auch GI-Caustics von höheren Werten stark profitieren!

Ein QMC-ähnliches Caustic (rechts) gerendert in einem Bruchteil der Zeit.

Bildgröße

Beim alten Irradiance Cache war die Verteilung der Shadingpunkte von der finalen Größe des zu rendernden Bildes unabhängig, d.h. es wurde derselbe Prepass für eine Bildgröße von beispielsweise 80*60 Pixel und 1024*768 verwendet. Das ist bei aktivierter Option jetzt nicht mehr der Fall, die Shadingpunktedichte wird dann auf die Ausgabegröße angepasst. D.h. bei einer extrem großen Ausgabegröße werden entsprechend auch mehr Cacheeinträge erzeugt als bei einer sehr kleinen Größe. Durch diese Größenanpassung rendern kleine Bilder schneller und große Bilder entsprechend länger, wobei natürlich auch mehr Details zum Vorschein kommen.