Entwickelt von | Nvidia |
---|---|
Letzte Version | 7.1 (30. Juni 2020) |
Geschrieben in | C und C ++ |
Betriebssystem | Microsoft Windows , Linux und MacOS |
Umgebung | PC-kompatibel |
Webseite | developer.nvidia.com/optix |
Die OptiX Software Beschleunigungs Motor ist ein Strahlenverfolgungs - Programmierschnittstelle (API) , entwickelt von Nvidia . Die Berechnungen werden den Grafikprozessoren (GPU) über die API anvertraut, die mit der Programmiersprache CUDA eingeführt wurde , die nur für Nvidia- Grafikkarten verfügbar ist . OptiX ist Teil der Nvidia GameWorks-Software-Suite. Es handelt sich um eine API auf hoher Ebene, die "im Dienst des Algorithmus" steht. Dies bedeutet, dass sie den gesamten Algorithmus umfasst, zu dem die Raytracing-Funktion gehört, und nicht nur die Raytracing-Funktion selbst. Auf diese Weise kann die OptiX-Engine den vollständigsten Algorithmus mit großer Flexibilität ausführen, ohne die Anwendung ändern zu müssen.
Im Allgemeinen, Videospiele für ihre Verwendung gemacht , die Rasterung statt Raytracing .
Laut Nvidia ist OptiX so konzipiert, dass es flexibel genug für „Verfahrensdefinitionen und hybride Rendering-Ansätze“ ist. Neben dem Rendern von Infografiken ermöglicht OptiX auch das optische und akustische Design , die Erforschung von Strahlung und Elektromagnetismus , Abfragen künstlicher Intelligenz und Kollisionsanalysen .
OptiX arbeitet mit vom Benutzer bereitgestellten Anweisungen (in Form von CUDA- Kerneln ), die sich auf die Wirkung eines Strahls unter bestimmten Umständen beziehen, um einen vollständigen Strahlverfolgungsprozess zu simulieren.
Ein Lichtstrahl (oder eine andere Art von Strahl) kann sich anders verhalten, wenn er auf eine bestimmte Oberfläche trifft und nicht auf eine andere. Mit OptiX können diese Eingabebedingungen mit vom Benutzer bereitgestellten Programmen personalisiert werden. Diese Programme sind in CUDA C oder direkt in PTX- Code geschrieben und bei Verwendung durch die OptiX-Engine miteinander verknüpft.
Um OptiX verwenden zu können, muss das System über eine CUDA- kompatible GPU und das CUDA-Toolkit verfügen .
Die Verwendung der OptiX-Engine in einer Raytracing-Anwendung umfasst normalerweise die folgenden Schritte:
Einige Beispiele für diese Programme sind mit dem Development Kit (SDK) des Programms verfügbar .
// Exemple de code utilisant l'API OptiX // /* Programme de génération de rayon */ rtProgramCreateFromPTXFile( *context, path_to_ptx, "pinhole_camera", &ray_gen_program ); rtContextSetRayGenerationProgram( *context, 0, ray_gen_program ); /* Programme d'absence de rayon */ rtProgramCreateFromPTXFile( *context, path_to_ptx, "absence", &miss_program ); rtContextSetMissProgram( *context, 0, miss_program ); /* Programme de boîte englobante et d'intersection */ rtProgramCreateFromPTXFile( context, path_to_ptx, "boite_limites", &box_bounding_box_program ); rtGeometrySetBoundingBoxProgram( *box, box_bounding_box_program ); rtProgramCreateFromPTXFile( context, path_to_ptx, "boite_intersection", &box_intersection_program ); rtGeometrySetIntersectionProgram( *box, box_intersection_program );Bounding-Box-Programme werden verwendet, um Begrenzungsvolumina zu definieren, die den Raytracing-Prozess beschleunigen sollen, indem Strukturen wie kd-Bäume vereinfacht oder Volumenhierarchien eingeschlossen werden.
Um eine komplexe Szene zu rendern oder unterschiedliche Pfade für einen beliebigen Radius zu zeichnen, nutzt OptiX die GPGPU- Datenverarbeitung, indem es die NVIDIA CUDA- Plattform nutzt . Da der Prozess des Strahlenfeuerns und die Definition ihres Verhaltens äußerst anpassbar sind, kann OptiX in einer Vielzahl von anderen Anwendungen als der Strahlverfolgung verwendet werden.
Ab OptiX Version 3.5.0 wird dem Set eine zweite Bibliothek namens OptiX Prime hinzugefügt. Es bietet eine schnelle API auf niedriger Ebene für die Strahlverfolgung - Aufbau der Beschleunigungsstruktur, Durchqueren der Beschleunigungsstruktur und Schnittpunkt zwischen Strahlendreieck . Prime bietet dem Prozessor auch eine Fallback-Funktion, wenn auf dem System keine kompatible GPU gefunden wird. Im Gegensatz zu OptiX ist Prime keine programmierbare API und unterstützt daher keine nicht dreieckigen Grundelemente und benutzerdefinierten Schatten . OptiX Prime ist nicht programmierbar und kapselt nicht den gesamten Algorithmus, zu dem Raytracing gehört. Daher kann Prime den Algorithmus für neue GPUs nicht neu kompilieren, die Berechnung nicht auf der Grundlage der Leistung neu gestalten oder ein Netzwerkgerät wie den Quadro VCA verwenden.