Antworten auf deine Fragen:
Neues Thema erstellen

Erledigt - Warum wird standardmäßig auf der CPU gerendert?

C

Ctwx

Guest

Guten Abend,

ich arbeite seit einigen Tagen mit Cinema 4D dank der Uni und habe eine kleine Frage. Und zwar frage ich mich: warum rendert C4 standardmäßig auf der CPU und nicht auf der GPU? Ich habe zwar das FurryBall-Plugin gefunden, aber irgendwie wirkt es etwas irrsinnig, dass C4 nicht gleich mit der GPU rendert?

Weiß jemand genaueres?

Vielen Dank!
 

S

skiron

Guest

Ich vermute mal weil es mehr darum geht etwas zu berechnen und nicht darum es anzuzeigen. Und diese Berechnungen werden von einer CPU wohl schneller erledigt als von der GPU. Dabei spielt vermutlich die Arbeitsweise von CPU und GPU eine Rolle und nicht bloß Technologie und Anzahl der Transistoren.
Google doch mal nach Unterschieden von CPU und GPU. Vielleicht bringt das einige Erkenntnisse.
 

KBB

Mod 3D | Blaubaer

Teammitglied
irgendwie wirkt es etwas irrsinnig, dass C4D nicht gleich mit der GPU rendert

*hust*

Hättest Du noch 2, 3 Tage drangehängt, hätte sich die Frage vermutlich in Wohlgefallen aufgelöst. Weil Du z.B. feststellst, dass keines der gängigen 3D Programme standardmäßig nur auf der GPU rendert. Oder das, was es zusammen mit der GPU tut (Blender), auch erst seit Kurzem. Oder dass es neben Furryball noch 4, 5 weitere reine und gemischte GPU-Renderer gibt, auch für Cinema. Spätestens bei der 1. Feststellung hättest Du Dir die Frage gestellt, warum es all die anderen auch nicht tun. Oder warum es den "Irrsinn" mit den gemischten Renderern gibt.
Und warum zum Teufel rendern die 3D Progamme eigentlich alle so langsam und nicht so schnell wie Gameengines, die den ganzen Kram doch in Echtzeit, sprich mehrere Male pro Sekunden rendern??? Aber das ist eine Geschichte für ein andermal.

Immerhin warst Du so schlau, die Frage auch anderen zu stellen, nachdem Du bemerkt hast, dass Du von Dir selbst keine Antwort erhälst. Dabei wäre es einfach gewesen, z.B. im Netz nachzuschauen, wie alt denn so 3D Programme eigentlich sind - ich vermute, die meisten älter als Du, was bei der Frage nicht ganz unwesentlich ist - und seit wann es eigentlich GPU Rendering gibt (vllt. 6, 7 Jahre, ernsthaft seit 2-3). Und wenn Du jetzt noch weißt, dass Entwicklungszeit Geld kostet - richtig Geld - und das Wort "Zeit" darin enthalten ist (genau: richtig Zeit, also, viel davon) , und dass Renderings gewissen Ansprüchen genügen wollen - z.B. schnell sein sollen, dabei gutes Licht und Material produzieren, aber auch Animationen flickerfrei berechnen - und das alles zusammenzählst und recherchierst, wirst Du schnell feststellen, dass
- GPU Rendering nicht alles kann
- GPU Rendering erst seit kurzem Salon fähig, sprich produktionstauglich ist, wenn überhaupt schon (eher nicht bzw. nur teilweise)
- GPU Rendering viele Jahre Entwicklungszeit benötigt hat, ohne bisher völlig ausgereift zu sein
- es einige sehr stabile, auch für Animationen produktionstaugliche CPU Renderer am Markt gibt (Arnold, Renderman), auf die man sich absolut verlassen kann
- es einen wirklich guten Archiviz Renderer gibt, auf den man sich wirklich gut verlassen kann (jedenfalls solange man ihn nicht mit C4D benutzt => Vray) und der super Ergebnisse erzielt
uvam.

Rendern ist nicht nur eine Frage der Geschwindigkeit, und GPUs können nicht mehr als sagen wir die Rechenarten / * - +, wenn auch sehr schnell. CPUs hingegen können sehr viel komplexere Berechnungen durchführen, die dafür langsamer. Je mehr sich ein GPU Renderer in seiner Komplexität einem Arnold oder Vray nähert, desto langsamer wird er (BRDF, BSDF, SSLT und Co. als Beispiel sind Dir ein Begriff?). Denn der Code, der dafür notwendig ist, bestimmte physical based lights/materials zu berechnen, wird ebenfalls immer komplexer, je mehr der Renderer können soll. So nähern wir uns beim bisher am weitesten entwickelten *reinen* GPU Renderer Octane z.B. mit der kommenden Version 3.x einem Punkt, an dem er locker wieder von CPU-Renderern überholt werden wird. Was Innenbeleuchtung betrifft, kommt es jetzt schon vor, dass ein Vray, Arnold oder Corona schneller ist. Was fraktale Oberflächen, also Wolken, Feuer oder andere Fluids betrifft, fürchte ich, wird Octane fürchterlich von Krakatoa abgezogen werden in Tempo und Qualität.

Neben der technischen Seite gibt es die schon angesprochene reine Entwicklungszeit, die ein Programmiererteam braucht, um eine Sache zu implementieren. Neben all den anderen "schicken" Sachen (wie z.B. Möhren *hmpf*) haben die Entwickler schlicht andere Schwerpunkte, als ihren Renderer zu optimieren. Wer Cinema nutzt, ist mit dem AR zufrieden oder kauft sich andere wie die o.g. Renderer dazu.

Aber kurz auf Anfang. Cinema wurde in den 90ern entwickelt. Wie fast alle anderen 3D Programme auch. Einige sind aus den 80ern, manche wenigen jünger. GPUs, die zum Rendern taugen, gibt es mit der GTX260 bezahlbar seit 2008 (wie alt warst Du da? ;)). Die 3D Programme haben da je nach dem schon 10-20 Jahre auf dem Buckel. Da wird dann nicht einfach nach einer neuen, genauso unausgereiften Technik gegriffen, wenn die aktuelle ebenfalls noch in der Entwicklung ist und schon viel Zeit und Geld gekostet hat. Genauso wenig wie all die schicken Mathe und Physik-Papers, die seit 20, 30 und mehr Jahren in den Kisten schlummern, jetzt auf einmal eingebaut werden, nur weil es ginge. Z.B. um nassen Sand, Schneebälle oder reissendes Papier und Stoff zu simulieren. Es wird gemacht, aber gemach. Und nur wenn es mit dem Rest zusammenarbeitet.
Alles andere bezahlt einfach niemand.

Und so kann man die Argumentationskette noch ein wenig fortführen. Ich hoffe, für den Anfang war das ein Einblick.
 
Zuletzt bearbeitet:
C

Ctwx

Guest

Vielen Dank für die Antworten. Speziell KBB: Die 3D-Programme sind also alle etwa mit mir zusammen entstanden. ;) Ich komme eigentlich aus der Programmierecke und kenne mich mit 3D-Sachen schlicht nicht so gut aus, erlerne es aber gerade. Da ist die CPU häufig für mich schlicht interessanter.
Meine Vorstellung war einfach, wenn moderne Grafikkarten 3D-Spiele so schnell rendern können und das in Echtzeit, dann würde es auch Sinn machen, wenn das in 3D-Programmen passiert. Dass CPUs da teils schneller sein können, war mir nicht bewusst. Beim Passwort knacken (um mein WLAN zu testen, keine fremden Netze natürlich!) komme ich mit einer modernen CPU auf 3000 Passwörter pro Sekunde, während eine moderne AMD-GPU auf 123.000 Passwörter pro Sekunde kommt. Das ist ein deutlicher Unterschied und daher meine Analogie zum 3D-Modelling.

Allerdings hast du natürlich Recht, dass das sehr aufwendig wäre, zumal die Codebasis von C4D nicht gerade klein und simpel sein wird. Nun ja..

Aber danke für die Einblicke, so hatte ich das einfach noch nicht betrachtet!
 

KBB

Mod 3D | Blaubaer

Teammitglied
Ich komme eigentlich aus der Programmierecke und kenne mich mit 3D-Sachen schlicht nicht so gut aus, erlerne es aber gerade. Da ist die CPU häufig für mich schlicht interessanter.
Okay. In dem Fall wäre ich davon ausgegangen, dass einem die technischen Unterschiede zwischen CPU und GPU geläufig(er) sind. Meine Darstellung ist auch sehr vereinfacht, einem Techniker fallen da sicher bessere Beschreibungen zu ein.

Meine Vorstellung war einfach, wenn moderne Grafikkarten 3D-Spiele so schnell rendern können und das in Echtzeit, dann würde es auch Sinn machen, wenn das in 3D-Programmen passiert.
Wie oben geschrieben, sind 3D Engines für Spiele wieder ein anderes Thema. Dort wird sehr viel gefaked und "geschludert" (DOF, Blur), also Licht, Material und Geometrie in vielen Fällen sehr reduziert und ungenau wiedergegeben, z.B. bei Entfernungen Geo und Texturen verkleinert. Außerdem sind Gameengines nicht für alle Fälle ausgelegt wie ein 3D Renderer. Manche eher nur für Innenräume, manche für Außenareale. Und dynamische Lichter gibt es auch erst seit ein paar Jahren und gewiss nicht in dem Umfang, wie es bei einem 3D Renderer möglich ist. D.h. Licht und Schatten werden auch bei einer Unreal- oder Cryengine in erster Linie noch vorab gebacken (Lightmaps) und generell sind viele Vorgänge für Echtzeitdarstellungen optimiert, aber nicht unbedingt für Genauigkeit.

Edit: hier auf der Corona Seite wird auch nochmal erklärt, warum sie stolz darauf sind, einen reinen CPU Renderer zu programmieren. Auf der Seite findest Du auch ein Siggraph Paper (eines von den o.g.) verlinkt, dass den Mythos, GPUs seien beim Rendern generell bis zu 100x schneller, wiederlegt. Bei manchen Dingen wie verschwommene Spiegelungen mag das stimmen, für alles kann man das aber nicht sagen.
 
C

Ctwx

Guest

Okay. In dem Fall wäre ich davon ausgegangen, dass einem die technischen Unterschiede zwischen CPU und GPU geläufig(er) sind. Meine Darstellung ist auch sehr vereinfacht, einem Techniker fallen da sicher bessere Beschreibungen zu ein.
Nun ja, den Aufbau von CPUs, wie sie funktionieren ist mir geläufig, ich kenne einige Details und habe teilweise schon mit Assemblerprogrammierung gearbeitet auf Mikroprozessoren, aber wie gesagt waren mir GPUs bisher ziemlich egal, sodass ich hier vor allem auf dem Wissen anderer aufbaue. Daher ja auch meine Frage hier, denn es gibt sicherlich jede Menge Leute die viel mehr über GPUs und CPUs wissen als ich und daher mir auch erkären können, warum es sinnvoll ist auf der CPU anstatt auf der GPU zu rendern.
Aber immerhin, du konntest mir ja eine gute Darlegung geben, warum auf der CPU gerendert wird. :)

Wie oben geschrieben, sind 3D Engines für Spiele wieder ein anderes Thema. Dort wird sehr viel gefaked und "geschludert" (DOF, Blur), also Licht, Material und Geometrie in vielen Fällen sehr reduziert und ungenau wiedergegeben, z.B. bei Entfernungen Geo und Texturen verkleinert. Außerdem sind Gameengines nicht für alle Fälle ausgelegt wie ein 3D Renderer. Manche eher nur für Innenräume, manche für Außenareale. Und dynamische Lichter gibt es auch erst seit ein paar Jahren und gewiss nicht in dem Umfang, wie es bei einem 3D Renderer möglich ist. D.h. Licht und Schatten werden auch bei einer Unreal- oder Cryengine in erster Linie noch vorab gebacken (Lightmaps) und generell sind viele Vorgänge für Echtzeitdarstellungen optimiert, aber nicht unbedingt für Genauigkeit.
OK, das leuchtet mir ein. Danke. :)
 

KBB

Mod 3D | Blaubaer

Teammitglied
Da Du das gerade hochholst: eine Möglichkeit, wie in Games auf der GPU in Cinema zu rendern, gibt es sogar ziemlich günstig. Genaugenommen kostet sie mindestens einen Dollar und heißt Pixelberg.

http://frostsoft.blogspot.de/

Hier noch das 1. von 5 schönen Tuts dazu
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.481
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben