Intel hat die skalierbare 3D-Rendering-Engine OSPRay 3.0 veröffentlicht, die für realistische und qualitativ hochwertige Visualisierungen mittels Raytracing entwickelt wurde. Die Engine wird als Teil eines größeren Projekts, des Intel Rendering Frameworks, weiterentwickelt, das darauf abzielt, Software-Visualisierungswerkzeuge für wissenschaftliche Berechnungen zu entwickeln, einschließlich der Raytracing-Bibliothek Embree, des Systems für fotorealistische Rendering GLuRay, der Bildrauschunterdrückungsbibliothek oidn (Open Image Denoise) und des Software-Rasterisierungssystems OpenSWR. Der Code ist in C++ geschrieben und unter der Apache 2.0 Lizenz veröffentlicht.
OSPRay ist hauptsächlich für den Einsatz in interaktiven Anwendungen zur Echtzeit-Szenenrendering konzipiert. Für die Simulation des Lichtverhaltens wird das Path-Tracing-Verfahren angewendet. Es wird sowohl volumetrische als auch flächenbasierte Visualisierung unterstützt, einschließlich fotorealistischem globalen Beleuchtung mit physikalisch basierten Materialeigenschaften sowie erweiterten Schattierungs-Effekten (Schatten, Transparenz und Ambient Occlusion).
OSPRay kann ohne Bindung an eine GPU betrieben werden, was die Nutzung der Bibliothek auf einer Vielzahl von Geräten ermöglicht, von Workstations bis hin zu Knoten in Rechenclustern. Um eine angemessene Leistung zu gewährleisten, wird aktiv Multithreading und Vektorisierung auf Basis von SIMD-Instruktionen wie Intel SSE4, AVX, AVX2 und AVX-512 eingesetzt (mindestens SSE4.1-Unterstützung ist für den Betrieb von OSPRay erforderlich).
Das Rendering kann auf mehrere Clusterknoten verteilt werden (MPI wird unterstützt), was es beispielsweise ermöglicht, OSPRay zur Erstellung von Bildern mit sehr hoher Auflösung auf Videowänden zu verwenden, wobei ein einzelnes Bild aus mehreren separaten LCD-Panels zusammengesetzt wird. Die Leistung von OSPRay wurde beispielsweise auf einem zusammengesetzten Bildschirm Stallion demonstriert, der aus 80 30-Zoll-Monitoren besteht (insgesamt 40960×8000 oder 328 Megapixel) und von einem Cluster aus 40 Server 6-Kern-CPUs auf Basis der Mikroarchitektur Intel Sandy Bridge betrieben wird.
Zu den hinzugefügten Änderungen gehören:
- Eine experimentelle Funktion zur Nutzung von Intel Xe GPUs (Intel Arc der Serien Flex und Max) für die hardwarebasierte Beschleunigung der Raytracing-Technologie wurde implementiert (in früheren Versionen von OSPRay wurde Raytracing nur auf der CPU durchgeführt). Die GPU-Unterstützung erfolgt über eine SYCL-Schicht, die es ermöglicht, heterogene Anwendungen in C++ (DPC++ – Data Parallel C++) zu erstellen. Nicht alle Rendering-Funktionen stehen derzeit bei der Verwendung des neuen Geräts "gpu" zur Verfügung, zum Beispiel fehlen noch die Unterstützung für Clipping, Unschärfe und das segmentierte Erstellen glatter Oberflächen (Subdivision).
- Es wurde eine implizite Indizierung der Geometrie des Polygonnetzes hinzugefügt.
- Die Unterstützung für die Übergabe von temporären Buffern wurde hinzugefügt.
- Das MPI-Modul wurde optimiert, was durch ein neues integriertes Instrumentarium zur Leistungsüberwachung ermöglicht wurde.
- Die Gradient-Füllung im SciVis-Renderer wurde optimiert.
- Es wurden Änderungen an der API vorgenommen, die die Kompatibilität beeinträchtigen. Die Unterstützung veralteter Parameter und Aufrufe wurde eingestellt.
- Die Anforderungen an die minimalen Versionen der Abhängigkeiten wurden erhöht: Embree 4.3.0, Open VKL 2.0.0, Open Image Denoise 2.1.0, ISPC 1.21.1 und rkcommon v1.12.0.


Quelle: opennet.ru
