Es gibt eine Reihe von Gründen, warum Rendering- und Physik-Pipelines traditionell diskret gehalten wurden. Denken Sie beim Auflisten daran, dass es nicht nur um Spiele geht. Ihre Frage betrifft jede Anwendung, die eine 3D-Rendering-Technologie wie OpenGL verwendet, deren Konkurrenten oder Vorläufer.
- Nicht jede Anwendung, die 3D verwendet, benötigt Physik. Denken Sie daran, dass OpenGL nicht nur für Spiele entwickelt wurde, sondern auch medizinische Simulationen über die Modellierung von Verkaufsstatistiken, Flugsimulationen bis hin zu komplexen chemischen Reaktionen usw. umfasst.
Jedes System, das zu vielen Zwecken dient, wird hinsichtlich der Effizienz verwässert. Eine grafische Pipeline muss unglaublich schnell sein. Sobald Sie Punkte einführen, an denen diese Pipeline mit anderen Subsystemen wie dem Hauptsystemspeicher (in dem sich Ihr Code befindet) verbunden werden muss, wird die Effizienz um Größenordnungen verringert. Die Hardware auf Ihrer Grafikkarte ist sehr speziell eingegrenzt und für das Verschieben von Pixeln äußerst optimiert , zu hohen Kosten und langjähriger, wettbewerbsintensiver Forschung.
Die Art der Mathematik und Datenstrukturen, die physikalische Operationen umgeben (insbesondere Kollisionserkennung und -auflösung, ohne die es wirklich keine Physik gibt ), unterscheidet sich stark von der für das Rendern erforderlichen Mathematik.
- Es gibt Lösungen, die sich mit Physik in Hardware befassen. Aber im Gegensatz zu der Art und Weise, wie wir rendern, unterscheidet sich die Art und Weise, wie wir Physik in einer bestimmten Situation ausführen, stark. Der grundlegendste Hinweis darauf ist, dass die Newtonsche Physik nicht für alle geeignet ist. Es gibt andere Möglichkeiten, die Physik mathematisch zu modellieren, die in anderen Situationen besser geeignet sind, beispielsweise in der Hamilton-Mechanik. Insbesondere in Spielen kann jedes einzelne Spiel seine Physik anders modellieren, sei es in 2D oder 3D. Diese müssen nicht einmal die reale Physik widerspiegeln! - weil ein Spiel ein Produkt der Fantasie ist. Mit anderen Worten, die Physik ist letztendlich Teil Ihrer Spieldynamik, und das kann sich von Spiel zu Spiel ändern - geschweige denn von allen anderen Lösungen, auf die Technologien wie OpenGL angewendet werden.
Eine genaue Simulation der Physik auf Scheitelpunkt-für-Scheitelpunkt-Ebene ist derzeit größtenteils keine praktikable Option. Angesichts der hohen Polyanzahl von Modellen in den meisten Spielen und der inhärenten Schwierigkeit der Kollisionserkennung mit konkaven Polyedern ist es nicht so einfach, nur die Physik anhand des bereitgestellten Modells zu berechnen. Bei vielen, wenn nicht den meisten 3D-Spielen werden Begrenzungsvolumina in Form von Zylindern oder Kästen verwendet, um die Kollisionserkennung zu vereinfachen, wobei diese Art der Kollisionserkennung sogar erforderlich ist. Angesichts der aktuellen Technologie würde der Verarbeitungsgrad nicht viel Platz für den Rest Ihrer Spielelogik lassen. Sogar Nvidias PhysX erfordert, dass komplexe, konkave Polyeder für die Physiksimulation in einfachere konvexe Polyeder zerlegt werden.
Ihre Grafikkarte erzeugt mit den durchgeführten Transformationen eine Perspektive . Das unterscheidet sich von den in der Physik durchgeführten Transformationen, die nichts mit der Perspektive als solcher zu tun haben - es werden lediglich grundlegende Positionen und Orientierungen in Ihrer Welt berechnet. Wenn Sie sich über MVC wissen, werden Sie verstehen, dass es zwischen den Daten , die Sie in Ihrer Anwendung zu halten, und wie Ihr einen deutlichen Unterschied ist vorhanden , dass die Daten.
Die Computertechnologiebranche wird von den Bedürfnissen bestimmt, und während Visualisierung ein nahezu universelles Bedürfnis ist, sind physikalische Simulationen weder als Anforderung noch in Bezug auf ihre jeweiligen Implementierungen universell.
Mein Rat ist also, hör auf, dir Sorgen um den Strich zu machen, und konzentriere dich darauf, wie du die beiden Dinge machst, die du tun musst: Rendering und Physik. Sie werden nicht an die Daten in der Verarbeitungspipeline Ihrer Grafikkarte gelangen (CUDA / OpenCl sind Ausnahmen): Wenn Sie Dreiecke und Materialdaten eingeben, wird Ihre 3D-Welt als Bewegtbild herausgepumpt.
Abgesehen davon ist Ihre Frage nicht ohne Sinn. Der Wunsch nach einer kombinierten Basis für Physik und Rendering und die Tatsache, dass Gleitkomma-Mathematik viel langsamer als Fixpunkt sein kann, zeigt uns, warum Voxel-Technologien ein enormes Wiederaufleben des Interesses erleben: Sie vereinfachen die ganze Welt bis hin zur Gitterpositionierung , achsenausgerichtete konvexe Polyeder. Dies verbessert die Leistung erheblich, indem die für physikalische Operationen erforderliche Menge an Gleitkomma-Vektor-Mathematik reduziert wird, da Sie jetzt hauptsächlich in einem räumlich unterteilbaren, instanziierbaren, ganzzahlig indizierten Raster arbeiten. Das gleiche Raster kann sowohl für das Rendern als auch für die Physik verwendet werden, insbesondere da Sie für diese beiden unterschiedlichen Subsysteme unterschiedliche Rasterauflösungen verwenden können (wenn Sie eine Octree-basierte Lösung wie SVOs verwenden).