Renderdiskussion (Ausgelagert aus Trip 3)

Ab welchem Vergleich würde das denn Sinn ergeben? Nehmen wir mal an wir haben den typischen Freiberufler der mit C4D arbeitet. Ist für den nicht sinnvoller mehrere Prozzis zu nehmen und den Standardrenderer zu nutzen, als für (mehr Geld) mehr Grafikkarten und einen weiteren kostenpflichtigen Renderer zu nehmen? Bzw. „wann“ ist der Punkt erreicht wo die Graka besser ist als eine Prozzi? Nehmen wir den sprichwörtlich „schnellsten“ Prozzi der Welt und die „schnellste“ Graka der Welt, was ist dann „besser“ und ist es „besser“ nur weil mehr Leistung da ist oder weil es „effizienter“ ist?

Machen wir mal ein Beispiel: Angenommen ich hätte hier C4D und nen schnellen AMD Prozzi. was in ner Renderzeit für Bild X in 1 Minute resultiert und mich 1000€ gekostet hat. Wenn ich jetzt mit ner Graka (sagen wir mal ner R9) rendern würde und dem ProRender hätte das als Resultat das die Renderzeit nurnoch 45 Sek. beträgt, der Stromverbrauch geringer ist und die Kosten gesenkt wurden, oder bräuchte ich um die selbe Leistung zu erreichen schon 2 oder mehr Grakas?

Ist jetzt nur Beispielhaft gemeint, du verstehst schon was ich meine.

Die Frage nach einem prinzipiellen „Vorteil“ von CPUs gegenüber GPUs bei dieser art der Arbeit bleibt für mich offen.

Nachtrag: Eventuell so: Mein Prozzi ist momentan schneller (beim Rendern) als meine Graka, schlicht weil er mehr Kerne hat. Hätte meine Graka genausoviele Kerne wäre sie genauso schnell? (sehr simpel ausgedrückt natürlich)

Nochn Nachtrag: Ist die Problematik beim Rendern nicht quasi die gleiche wie beim Minen, nur eben umgedreht? Beim Minen war es so das Grakas besser sind als Prozzis (ja, mittlerweile sind wir über die Zeit wo das sinnvoll war hinaus, aber darum gehts ja nicht) und das hatte prinzipielle Gründe wenn ich mich recht entsinne.

Gerade bei Cinema 4D lohnt sich eine GPU extrem. In dem Fall kann ich dir sogar harte Zahlen nennen: In einer Benchmarkszene von uns rendert dir eine aktuelle Highend-GPU (Leistungsklasse 2080 Ti) in 60s knapp 400 Iterationen. Eine aktuelle CPU (7800X) kommt in derselben Zeit auf 15 Iterationen. In diesem Falle sind beide Algorithmen nicht auf die jeweilige Hardware optimiert. Die GPU nutzt bspw. auch nicht die Raytracing-Fähigkeiten.

Edit: Wie groß der Vorteil letztendlich ist, hängt stark vom verwendeten Renderer ab. Problematisch ist hier für die Entwickler, dass die erzeugten Bilder bestenfalls unabhängig davon sein sollten, ob CPU oder GPU genutzt wird und das ist in der Zeit des Übergangs leider nicht immer der Fall.

Hmmm, ich habe da gegenteilige Erfahrungen gemacht. Es war bei mir immer so das es sinnvoller war den Prozzi zu nutzen und das obwohl Prozzi und Graka eigetlich immer aus der selben Generation waren/sind und sich eher im oberen Mittelklasse bereich bewegt haben bzw. damals als die ersten 8Kerner rauskamen hab ich mir den FX8350 zugelegt da gab es nichts was vergleichbar gewesen wäre (abgesehen von einem Intel) und Grakas waren da völlig illusorisch.

Alle Benchmakrs die ich mir damals und heute (seit ich wieder aufgerüstet habe) angeschaut habe, sahen CPUs immer klar vorne. Woran liegt das? Daran das immer nur Einzelleistungen betrachtet werden, also 1 Prozzi gegen 1 Graka?

Für damals stimmt dein Eindruck auch. Wenn du heutzutage das ProRender Plugin nutzt, dann hast du einen sehr großen Sprung bei GPU-Performance.

Bezieht sich das nur aufs Viewport (seit es da die OpenGL Unterstützung gibt) oder tatsächlich auch aufs Rendern?

Und ist es da egal ob es eine Nvidia oder AMD Karte ist (momentan hätte ich AMD Prozzi und Nvida Karte)?

Und ich überlege derzeit hier noch ein paar Rechner aus alten Teilen zusammen zu bauen um sie als Farm zu nutzen. Wobei ich da hauptsächlich relativ gute Prozzis hätte und ein paar mittelgute Karten. Alles so grob 5-10 Jahre alt und ein wilder Mix aus Intel, AMD, Nvidia und AMDs.

Wenn ich dich richtig verstehe wäre es in diesem Fall vermutlich sinnvoll auf die ganzen Prozzis zu setzen (Erscheinungszeitraum bedingt) und die Grakas quasi links liegen zu lassen?

Das bezieht sich aufs Rendern selbst, nicht die Preview. Es wird auch nicht OpenGL sonder OpenCL benutzt. Da ProRender von AMD entwickelt wird, ist die Performance dort leicht besser, als mit gleich teuren Nvidiakarten. Soweit ich weiß, unterstützt ProRender aktuell nur ein einziges Device, aber da bin ich mir nicht sicher. Wenn du eine Farm aufbauen willst, dann musst du wahrscheinlich ohnehin den Standardrenderer auf CPU-Basis nehmen. Und wenn man mehrere GPUs gleichzeitig rechnen lassen wollte (wenn es denn möglich wäre), sollten auch besser alle das gleiche Modell sein. Im Worst Case wird sonst nur die Performance der schlechtesten Karte vervielfacht.

Ah ok, also wie vermutet, wären die CPUs am klügsten. Danke, auch für die restliche Erklärung. :slight_smile:

Aber zurück zur eigentlichen Fragestellung.

Es wird ja seinen Grund haben warum die Supercomputer der Welt (mit denen ja auch viel Klimaberechnung usw. gemacht wird) alle auf CPUs setzen und nicht GPUs. Soweit ich mich erinnere gibt es nur in Asien (Japan) einige aus Playstations zusammengesetzte Cluster die sich auf die GPUs verlassen, bin da aber grad nicht sicher.

Warum ist das so, wenn doch die GPUs das selbe (oder besseres?) leisten könnten. Ist das schlicht eine Kostenfrage?

Ich denke, die Kostenhürde zu Beginn ist das Problem. Die ganzen Algorithmen auf GPUs zu optimieren dürfte ein gewaltiger Aufwand sein. Die Hardware im Nachhinein würde allerdinsg nur einen Bruchteil kosten, um die gleiche Performance zu erreichen.

Ok, das mag ein Argument sein, allerdings verstehe ich nicht warum man es nicht macht. Wenn es wirklich „große Vorteile“ hätte und nicht nur „marginale“ dann wäre es nicht nur unklug es nicht zu machen, sondern auch wirtschaftlich Unsinn (grade auch aus Sicht der Hersteller).

Was mich wieder dazu führt das es „prinzipielle“ Unterschiede und Gründe haben muss warum es nicht gemacht wird. Ein Prozessor kann 1+1 besser rechnen als eine Grafikkarte, oder sowas halt (stark vereinfacht ausgedrückt natürlich).

Öööhm, das Viewportmenü in C4D redet aber von OpenGL und nicht CL, sowie auch alle anderen Stellen in C4D immer von GL reden (z.B. die Renderer)?

Mit einem CPU-Cluster kann man „alles“ berechnen. Mit einem GPU-Cluster nur in einer bestimmten Art parallelisierbare Algorithmen. Deswegen wäre es nicht sinnvoll, einfach jedes Rechenzentrum auf GPUs umzustellen. Es müssen halt die Anforderungen an das Rechenzentrum „GPU-kompatibel“ sein.

Zu Cinema 4D: Die Preview von Cinema 4D wird mit OpenGL gerendert, das stimmt. Auch bei den Renderern kann man Hardware und Software OpenGL auswählen. In meiner Version hat man noch die Möglichkeit „ProRender“. Dahinter verbirgt sich dann das OpenCL.

Nachtrag: Hardware und Software OpenGL kannste in die Tonne kloppen :sweat_smile:

Ah ok, also kommt es schlicht darauf an „was“ man machen will. CPUs sind für „alles“ gut unter Umständen aber langsamer als GPUs, welche im allgemeinen langsamer sind, aber in Spezialfällen schneller sein können, jeh nach Datenlage?

Man könnte auch sagen CPUs sind SUVs, quasi überall nutzbar und GPUs sind nicht geländegängige Sportwagen die ihre Vorteile auf der Straße ausspielen können.

So kann man das in etwa sagen oder?

Ah ok, den ProRenderer hab ich nicht, wunderte mich schon.

Jo, dat stimmt. Ich hab mich auch schon immer gefragt was man mit den beiden soll.

Ja, so kann man das sagen :slight_smile:

Ab wann ProRender dazu kam, weiß ich nicht und ob es kostenlos ist. Vielleicht ist es auch noch im Betastadium. Wenn du mal Zugriff drauf haben solltest, lohnt es sich auf jeden Fall, das mal zu testen.

Jo, ich schau heute mal obs da irgendwelche Betas oder so von gibt, oder was das kostet ums mal zu testen. Schneller rendern is nie verkehrt. :smiley:

Ich hab jetzt mal den Prorender getestet. Resultat ist das es für mich in C4D keinen Sinn hat. Sobald man etwas “Licht” in die Szene bringt und dann versucht dieses zu “verschieben” klappt das nicht, Graka scheint überfordert, wobei das berechnen der Iliterationen ansich eigentlich ziemlich fix geht.

Also den Vorteil den es im Viewport hat kann ich kaum/nicht nutzen. Was Renderzeiten angeht ist es natürlich so das Szene A mit dem Prozzi (Standardrenderer) wesentlich kürzer dauert als die selbe Szene im Prorender (also physikalisch). Insofern hat es also für mich bei der aktuellen Systemkonfiguration nicht wirklich Sinn es zu nutzen. Das einzige was ganz nett ist das man besser sehen kann wie Licht geworfen wird und sich spiegelndes Material verhält (also im Viewport), allerdings eben auch nur wenn ich die Ansicht bewege und nicht die Objekte/Lichtquellen.

Einen direkten Vergleich der Renderzeiten zwischen dem “normalen” physikalischen Renderer und Prorender hab ich noch nicht gemacht.

Nur zur Klarstellung: Mit Viewport meinst du die Standardansicht, in der man die Szene sieht und manipuliert, oder?
Sorry, wenn ich frage. Ich arbeite selbst nicht mit Cinema4D, sondern habe mir nur ProRender etwas genauer angsehen. Wir haben vorgefertigte Benchmarkszenen und uns interessiert nur das Offline Rendern (was man mit Shift + R anwirft)

Korrekt.

Okay, die Ansicht kann von ProRender auch gerendert werden? Das wusste ich gar nicht. Dachte, die wäre auf OpenGL beschränkt. Also, wie gesagt, meine Aussagen bezogen sich alle auf das nicht-interaktive Rendern.

Leider generiert ProRender (zumindest un unseren Benchmarkszenen) nicht die gleichen Bilder, wie der physikalische Renderer, sodass ein Vergleich der Qualität schwierig ist. Die Geometrie stimmt überein, aber die Beleuchtung nicht. Könnte was mit den Lichtarten zu tun haben. Ich glaube ProRender hat ein paar Features drin, die der physikalische Renderer nicht hat.

Prorender kann keine „nicht physikalischen“ Schatten darstellen. Sondern nur „echtes“ Licht und „echten“ Schatten. Insofern ist es nicht verwundelrich das du unterschiedliche Ergebnisse erzielst. Es gibt für Prorender z.B. eine extra Lichtquelle „PBR Light“, bei diesem Licht sind dann auch einige Funktionen gesperrt die bei „normalen“ Lichtquellen nicht gesperrt sind und darüber hinaus sollte man auch immer PBR Materialien verwenden (extra neue Materialart die lediglich übers Reflectance gesteuert wird).

Du kannst ja hier mal kurz reinschauen. Dann wird klar wie ich das mit dem Viewport meine und wie sich der Prorender in bestimmten Situationen verhält.

Es ist eher genau anders herum. Der normale physikalische hat mehr Features bzw. der Unterschied liegt hauptsächlich im raytracing. Wobei ich das nur für C4D 19 genau sagen kann, ob sie in 20 noch einiges dazu gepackt haben hab ich nicht geschaut.

Aaah! Stimmt, daran hab ich gar nicht gedacht :smiley: Künstler möchten immer gerne mehr Kontrolle über die Physik haben, als es die Realität erlauben würde. Diese Features müssen dann erst nach und nach per Hand „reingehackt“ werden. Kann gut sein, dass ProRender in der Hinsicht dann noch erweitert wird.

In dem Video hat er auch ziemliche Low-End-Karten. Mit einer einzelnen heutigen Mittelklasse-Karte bekäme man da wirklich Echtzeit hin. Cinema 4D hinkt da noch leicht hinterher, aber einige Renderer arbeiten schon an RTX Support, was die Performance nochmal deutlich boostet.

Ja sowas möchten wir. :smiley:

Davon ab, meine GTX960 OC 4gb (die Version der Karte ist knapp mit ner 1050 vergleichbar) reicht nicht bzw. führt zu den angesprochenen Problemen und die ist eigentlich sogar besser als eine von seinen D700ern. Man sollte also erwarten können das eine simple Szene mit z.B. nur einer Lichtquelle im „Preview-Modus“ im Viewport manipuliert werden kann, is aber leider nicht so.

Klar die 960 ist auch nicht mehr wirklich zeitgemäß, aber ich hätte schon erwartet das ich wenigstens mal ein Objekt verschieben kann. Es hat übrigens seinen Grund denke ich dass er das bei sich auch nicht macht sondern nur Ansicht verändert und nicht Objekte/Licht. Weil selbst mit 2 Karten funktioniert es vermutlich nicht.

Es kann aber auch schlicht daran liegen das es nicht so gedacht ist. Denn die Neuberechnung startet ja sobald sich etwas „ändert“. Verschiebe ich also initial ein Objekt, wartet der Renderer nicht bis ich es an seine finale Position geschoben habe sondern versucht quasi „instantan“ neu zu berechnen. Möglicherweise ist es also nur eine Softwaregeschichte bzw. Parameter Sache. Nach dem Motto, es fehlt eine Einstellmöglichkeit ihm zu sagen in welchen Intervallen er aktualisieren soll, bzw. das er es nicht „sofort“ machen soll oder sowas.

Naja, letztendlich auch nicht so wichtig, schauen wir einfach mal wie sich das weiter entwickelt, momentan ist es zumindest für mich sinnvoller nur auf CPUs zu setzen (was rendern ansich angeht), allein auch schon aus Kostengründen.