Mit OpenGL und so kann ich einige erstaunlich aussehende Dinge in "Echtzeit" mit 60 FPS rendern. Wenn ich jedoch versuche, ein Video derselben Szene wie in Maya oder 3ds Max zu erstellen, dauert das Rendern VIEL länger, obwohl es die gleiche Auflösung und FPS hat.
Warum benötigen diese beiden Rendering-Typen unterschiedliche Zeiträume für das gleiche Ergebnis?
Hinweis: Ja, mir ist klar, dass 3D-Animationssoftware überlegene Bilder erzeugen kann, als dies in Echtzeit möglich wäre. Aber für diese Frage beziehe ich mich auf eine Szene von gleicher Komplexität.
rendering
performance
J.Doe
quelle
quelle
Antworten:
Der Hauptunterschied besteht darin, dass mit OpenGL in einem Videospiel ein Prozess namens Rasterung ausgeführt wird, bei dem im Grunde genommen bestimmt wird, welcher Teil der Szene angezeigt wird.
Es muss schnell sein, damit wir es als Echtzeit erleben können.
Daher führt der Algorithmus einige einfache Schritte aus.
prüfe ob ein bestimmter teil der szene aus meiner sicht kegelstumpf ist
Überprüfen Sie, ob sich etwas davor befindet, das möglicherweise später mit einem Tiefenpuffer gerendert werden muss
bestelle die Objekte, die wir zum Zeichnen gefunden haben
Andererseits verwendet eine Rendering-Software (Blender / Max / Maya / ...) höchstwahrscheinlich eine Art Raytracing
Dies erfordert viel mehr Mathematik, um ein höheres Maß an Realismus zu erreichen. Es funktioniert im Grunde auf die gleiche Weise:
....
Ich werde hier aufhören zu listen, da dies der Punkt ist, an dem das Raytracing startet.
Anstatt nur zu prüfen, ob ein Punkt getroffen wurde, beginnen die meisten Raytracer nun zu berechnen:
Es gibt eine Menge Techniken mit unterschiedlichem Realismus, mit denen das Licht eines bestimmten Punktes in der Szene berechnet werden kann.
TL; DR Das Wesentliche wäre, dass ein Raytracer meistens versucht, physisch korrekt zu sein, wenn es um die Beleuchtung geht, und daher viel mehr Berechnungen pro Pixel vornimmt (manchmal Tausende von Strahlen abschießen). Andererseits bekommen Spiele ihre Geschwindigkeit durch Zeichnen Sie größere Teile des Bildschirms mit einfacheren Lichtberechnungen und vielen Shader-Tricks, die es realistisch erscheinen lassen.
quelle
Sie vergleichen Äpfel mit Orangen
Das Spiel ähnelt dem Ansichtsfenster in Ihrer Modellierungs-App. Sie können das Ansichtsfenster zum Rendern verwenden und erhalten die gleichen 60fps-Geschwindigkeiten.
Es gibt keinen Grund, warum Sie mit Modellierungssoftware wie Maya oder 3DS Max keine Echtzeitgrafiken erhalten können, die sehr gut sind. Ergebnisse, die vielen Spielen ebenbürtig sind. Sie haben Viewport-Shader, genau wie Spiele. Es gibt auch eine Darstellungsoption für Ansichtsfenster, die Frames so schnell wie möglich auf die Festplatte überträgt (ich habe Full-HD-Renderings mit 30 fps von Maya durchgeführt). Alles, was Sie tun müssen, ist die Verwendung der mitgelieferten Raytracer-Software zu beenden.
Es gibt jedoch einige Unterschiede. Der Hauptunterschied besteht darin, dass Sie als Benutzer nicht so viel optimieren wie Spieleentwickler (bei der Optimierung werden alle Tricks aus dem Buch verwendet). Zweitens arbeiten Ihre Animationsprimitive auf der CPU, weil Sie die Flexibilität benötigen. In Spielen kann man es sich leisten, Optimierungen vorzunehmen. Alles in allem bezahlen Sie dafür, dass Sie kein Programmierteam neben sich haben.
Viele der Dinge könnten tatsächlich vorberechnet worden sein, so dass sie nicht so viel schneller sind, sondern nur besser organisiert. Das Backen Ihrer indirekten Beleuchtung schlägt jeden Tag nicht gebackene Ergebnisse.
Warum sind die Raytracer langsamer?
Sie sind keine *, man macht einfach mehr Arbeit an einem Ray Tracer, weil es einfach ist. Feature für Feature sind sie in Berechnungszyklen nicht viel langsamer. Beispielsweise ist es nicht erforderlich, dass ein Ray Tracer Sekundärstrahlen ausstrahlt (in diesem Fall werden durch die Lebensreflexionen die Geometrien des Ray Tracers entfernt oder gar nicht geladen, genau das macht mental ray). Es ist nur in der Regel so, weil es trivial ist, und das ist der klare Vorteil von Ray Tracern. In einigen Fällen können Sie sie sogar so konfigurieren, dass sie auf der CPU ausgeführt werden. Sie sind nur für verschiedene Dinge optimiert:
Senden von Daten auf die Festplatte, nicht nur Frames, sondern alle Daten. Etwas, das die Schnelligkeit der meisten Spiele sofort brechen würde.
Arbeiten an allgemeiner Hardware. Die GPU ist für bestimmte Dinge viel schneller, wenn Sie sie für die GPU optimieren. Es funktioniert jedoch nicht für alle Lasten. Eine Intel-CPU kann im Allgemeinen schneller rechnen als die GPU. Die GPU ist gerade massiv parallel, was die CPU nicht tut. Die Architektur gewinnt, wenn Sie in der GPU bleiben und die Übertragung minimieren und für die GPU-Architektur optimieren können.
Sie zahlen also für Flexibilität und Benutzerfreundlichkeit. Aber ich gebe ja nicht zu, dass sowohl Maya als auch Max unter extremem Alter leiden. Sie könnten also schneller sein.
TL; DR Der Unterschied liegt hauptsächlich in der Optimierung (viele Tricks lesen) und den verfügbaren externen Ressourcen.
PS: Es gibt ein Missverständnis, weil es physikalisch korrekter ist. Es kann sicherlich sein, aber der Raytracer ist von Natur aus nicht physisch korrekter als ein durchschnittliches Spiel oder eine andere Berechnung. Tatsächlich verwenden viele Spiele wirklich gute Modelle, während dies bei vielen Modellierern nicht der Fall ist.
* Siehe http://www.graphics.cornell.edu/~bjw/mca.pdf
quelle
Echtzeit-Vorschau
Wenn Sie auf der VFX-Seite der Branche arbeiten und von Echtzeit-Ansichtsfenstervorschauen und nicht von Produktionsrendern sprechen, verwenden Maya und 3DS Max in der Regel auch OpenGL (oder möglicherweise DirectX - so ziemlich dasselbe).
Einer der konzeptionellen Hauptunterschiede zwischen VFX-Animationssoftware und Spielen ist die Höhe der Annahmen, die sie treffen können. In der VFX-Software ist es beispielsweise nicht ungewöhnlich, dass der Künstler ein einzelnes nahtloses Zeichengitter lädt, das sich über Hunderttausende bis Millionen von Polygonen erstreckt. Spiele sind in der Regel am besten für eine große Szene geeignet, die aus einer Schiffsladung einfacher, optimierter Netze (jeweils Tausende Dreiecke) besteht.
Produktionsrendering und Pfadverfolgung
Die VFX-Software legt auch den Schwerpunkt nicht auf die Echtzeitvorschau, sondern auf das Rendering in der Produktion, bei dem die Lichtstrahlen tatsächlich einzeln simuliert werden. Die Echtzeitvorschau ist oft nur eine "Vorschau" des Produktionsergebnisses mit höherer Qualität.
Spiele haben in letzter Zeit viele dieser Effekte wie Echtzeit-Schärfentiefe, weiche Schatten, diffuse Reflexionen usw. sehr gut approximiert, aber sie gehören zur Kategorie der Hochleistungs-Approximationen (z. B. verschwommene Würfelkarten für diffuse Effekte) Reflexionen statt tatsächlich Lichtstrahlen zu simulieren).
Inhalt
Zurück zu diesem Thema: Die inhaltlichen Annahmen zwischen einer VFX-Software und einem Spiel sind sehr unterschiedlich. Das Hauptaugenmerk einer VFX-Software liegt darauf, die Erstellung von Inhalten aller Art zu ermöglichen (zumindest ist dies das Ideal, obwohl es in der Praxis oft nirgendwo in der Nähe liegt). Spiele konzentrieren sich auf Inhalte mit viel schwereren Annahmen (alle Modelle sollten im Bereich von Tausenden von Dreiecken liegen, normale Karten sollten auf gefälschte Details angewendet werden, wir sollten eigentlich keine 13 Milliarden Partikel haben, Charaktere werden nicht wirklich durch Muskeln animiert Rigs und Spannungskarten, etc).
Aufgrund dieser Annahmen können Game-Engines häufig Beschleunigungstechniken wie z. B. Kegelstumpf-Culling leichter anwenden, um eine hohe interaktive Bildrate beizubehalten. Sie können davon ausgehen, dass einige Inhalte statisch sind und im Voraus gebrannt werden. Die VFX-Software kann diese Art von Annahmen nicht ohne Weiteres treffen, da die Flexibilität bei der Erstellung von Inhalten wesentlich höher ist.
Spiele verbessert es
Dies mag eine kontroverse Ansicht sein, aber die Spielebranche ist eine viel lukrativere Branche als VFX-Software. Ihr Budget für ein einziges Spiel kann Hunderte von Millionen Dollar umfassen und sie können es sich leisten, alle paar Jahre neue Engines herauszubringen. Ihre Forschungs- und Entwicklungsanstrengungen sind erstaunlich und es werden Hunderte und Hunderte von Spieletiteln veröffentlicht.
VFX- und CAD-Software hingegen ist bei weitem nicht so lukrativ. F & E wird häufig von Forschern ausgelagert, die in akademischen Umfeldern arbeiten. Viele Unternehmen setzen häufig Techniken ein, die vor vielen Jahren veröffentlicht wurden, als wäre dies etwas Neues. Daher ist die VFX-Software, die selbst von so großen Unternehmen wie AutoDesk stammt, häufig nicht ganz so "auf dem neuesten Stand" wie die neuesten AAA-Spiele-Engines.
Sie haben auch tendenziell ein viel längeres Erbe. Maya ist zum Beispiel ein 17-jähriges Produkt. Es wurde viel renoviert, aber seine Kernarchitektur ist immer noch die gleiche. Dies könnte analog zu dem Versuch sein, Quake 2 zu nehmen und es bis 2015 zu aktualisieren und zu aktualisieren. Die Bemühungen können großartig sein, passen aber wahrscheinlich nicht zu Unreal Engine 4.
TL; DR
Auf jeden Fall ist das eine kleine Interpretation des Themas. Ich konnte nicht erkennen, ob Sie über Echtzeitvorschauen in Ansichtsfenstern oder über Produktionsrendering sprachen, und habe versucht, ein bisschen von beidem zu behandeln.
quelle