2016-06-25 25 views
14

Nach einigen Untersuchungen über Rasterisierung und Ray Tracing. Ich habe herausgefunden, dass es nicht viele Informationen darüber gibt, wie CPUs für Ray-Tracing im Internet verfügbar sind. Ich stieß auf einen Artikel über Pixar und wie sie Autos 2 auf der CPU vorgerendert haben. Dies dauerte 11,5 Stunden pro Bild. Wäre eine GPU bei gleicher Bildqualität nicht schneller gerendert? http://gizmodo.com/5813587/12500-cpu-cores-were-required-to-render-cars-2 https://www.engadget.com/2014/10/18/disney-big-hero-6/ http://www.firstshowing.net/2009/michael-bay-presents-transformers-2-facts-and-figures/ Cheers, SamWarum verwenden wir CPUs für Raytracing statt GPUs?

+0

vielleicht kümmern sie sich nicht um die Geschwindigkeit in diesem Stadium. – kangshiyin

+2

Bitte geben Sie Links zu den Artikeln, auf die Sie sich beziehen, wenn Sie diese Frage stellen, über eine Bearbeitung des OPs. – MWiesner

+0

https://en.wikipedia.org/wiki/Ray-tracing_hardware und jeder Artikel über Raytracing vs Rasterung wird erklären, warum im Detail. – pvg

Antwort

37

Ich bin einer der Rendering-Software-Architekten bei einem großen VFX und Animationsfilm-Studio mit einem eigenen Renderer (nicht Pixar, obwohl ich einmal den Rendering-Software-Architekten war als nun, lange, lange her).

Fast alles hochwertige Rendering für Film (in allen großen Studios, mit allen Hauptrenderern) ist nur CPU. Es gibt eine Reihe von Gründen, warum dies der Fall ist. In keiner bestimmten Reihenfolge, einige der wirklich überzeugend, die Ihnen den Geschmack der Fragen geben:

  • GPUs nur schnell gehen, wenn alles in Erinnerung ist. Die größten GPU-Karten haben, was, 12GB oder so, und es muss alles halten. Nun, wir rendern routinemäßig Szenen mit 30 GB Geometrie und 1 TB oder mehr Textur. Das kann man nicht in den GPU-Speicher laden, es ist buchstäblich zwei Größenordnungen zu groß. Daher können GPUs einfach nicht mit unseren größten (oder sogar durchschnittlichen) Szenen umgehen. (Mit CPU-Renderern, können wir Sachen von der Festplatte wann immer wir benötigen. GPUs sind nicht gut darin.)

  • Glauben Sie nicht dem Hype, ray Tracing mit GPUs ist kein offensichtlicher Sieg über CPU. GPUs sind hervorragend für hochkohärente Arbeit (machen die gleichen Dinge zu vielen Daten auf einmal). Raytracing ist sehr inkohärent (jeder Strahl kann in eine andere Richtung gehen, verschiedene Objekte schneiden, verschiedene Materialien schattieren, auf verschiedene Texturen zugreifen), und dieses Zugriffsmuster verschlechtert die GPU-Leistung sehr stark. Es ist erst vor kurzem, dass GPU Raytracing den besten CPU-basierten Raytracing-Code entsprechen konnte, und obwohl es es übertroffen hat, ist es nicht viel, nicht genug, um den alten Code wegzuwerfen und mit fehlerhaftem fragilen Code für GPUs anzufangen . Und die größten und teuersten Szenen sind diejenigen, bei denen GPUs nur marginal schneller sind. In den einfachen Szenen viel schneller zu sein, ist uns nicht wirklich wichtig.

  • Wenn Sie in Ihrem CPU-basierten Renderer 50 oder 100 Mannjahre produktionsgehärteten Code haben, werfen Sie ihn einfach nicht raus und beginnen neu, um eine 2x-Beschleunigung zu erhalten. Softwareentwicklungsaufwand, Stabilität usw. sind wichtiger und ein größerer Kostenfaktor.

  • Wenn Ihr Studio eine Investition in ein Rechenzentrum mit 20.000 CPU-Kernen hat, können Sie mit dem kleinsten, leistungsstärksten und wärmeeffizientesten Formfaktor auch eine veraltete Kosteninvestition erzielen Weg. Wenn Sie sie durch neue Maschinen mit erstklassigen GPUs ersetzen, steigen die Kosten für Ihre Renderfarm erheblich. Sie sind größer und produzieren mehr Wärme, sodass sie buchstäblich nicht in Ihr Gebäude passen.

  • Amdahls Gesetz: Das eigentliche "Rendern" per se ist nur eine Stufe beim Erzeugen der Szenen, und GPUs helfen nicht dabei. Angenommen, es dauert 1 Stunde, um die Szene vollständig zu generieren und in den Renderer zu exportieren, und 9 Stunden zum Rendern, und von diesen 9 Stunden liest eine Stunde Textur, Volumes und andere Daten von der Festplatte. Von den insgesamt 10 Stunden, in denen der Benutzer das Rendern erlebt (Druckknopf, bis das endgültige Bild fertig ist), werden 8 Stunden möglicherweise mit GPUs beschleunigt. Also, selbst wenn GPU 10x so schnell wie CPU für diesen Teil war, gehen Sie von 10 Stunden zu 1 + 1 + 0.8 = fast 3 Stunden. Eine 10x-GPU-Beschleunigung führt also nur zu einer tatsächlichen Verstärkung von 3x. Wenn GPU 1.000.000x schneller als CPU für Raytracing war, haben Sie immer noch 1 + 1 + winzige, was nur eine 5-fache Beschleunigung ist.

Aber was ist anders an Spielen? Warum sind GPUs gut für Spiele, aber nicht für Filme?

Zunächst einmal, wenn Sie ein Spiel machen, denken Sie daran, dass es in Echtzeit gerendert werden muss - das bedeutet Ihre wichtigste Einschränkung ist die 60Hz (oder was auch immer) Bildrate, und Sie opfern Qualität oder Funktionen wo notwendig erreiche das. Im Gegensatz zum Film ist die unzerstörbare Bedingung, dass der Regisseur und der VFX-Supervisor mit der Qualität und dem Aussehen zufrieden sind, die er oder sie wünscht, und wie lange es dauert, bis das (bis zu einem gewissen Grad) zweitrangig ist.

Auch mit einem Spiel rendern Sie Bild für Bild nach Bild, leben Sie vor jedem Benutzer. Aber mit dem Film wird effektiv EINMALIG wiedergegeben, und was in die Kinos kommt, ist eine Filmdatei - so werden Kinobesucher nie wissen oder sich darum kümmern, wenn es 10 Stunden pro Bild dauert, aber sie werden bemerken, wenn es nicht gut aussieht. Also, es wird wieder weniger Strafe für diese Renderings gegeben, die eine lange Zeit brauchen, solange sie fabelhaft aussehen.

Mit einem Spiel wissen Sie nicht wirklich, welche Frames Sie rendern werden, da der Spieler um die ganze Welt wandern kann, von fast überall aus. Du kannst und solltest nicht versuchen, alles perfekt zu machen, du willst nur, dass es die ganze Zeit gut genug ist. Aber für einen Film sind die Aufnahmen alle handgefertigt! Eine enorme Menge an menschlicher Zeit wird benötigt, um jede Einstellung zu komponieren, zu animieren, zu beleuchten und zu komponieren, und dann muss sie nur einmal gerendert werden. Denken Sie an die Wirtschaftlichkeit - sobald 10 Tage Kalender (und Gehalt) in Beleuchtung und Zusammensetzen der Aufnahme genau richtig sind, ist der Vorteil der Wiedergabe in einer Stunde (oder sogar einer Minute) gegen Nacht, ziemlich klein und nicht wert jedes Opfer von Qualität oder erreichbarer Komplexität des Bildes.

+1

Vielen Dank! Was für ein Junge. – oodle600

+1

/ich verneigt sich in Ehrfurcht: p – Alnitak

+1

Meine Echtzeit-dynamisch-whited Style Ray Tracer ist viel schneller auf der GPU als auf der CPU https://www.youtube.com/watch?v=GErl-poxmNE. Das war auf einer GTX 580, die vor sechs Jahren herauskam. –