Firma Intel opublikowała wydanie projektu OSPRay Studio 1.0, rozwijającego aplikację do interaktywnej wizualizacji 3D przy użyciu silnika rozproszonego śledzenia promieni OSPRay. Program może być wykorzystywany do precyzyjnego renderowania złożonych scen oraz przetwarzania bardzo dużych scen, które wymagają rozproszonego wykonywania obliczeń w klastrze kilku komputerów. Kod aplikacji został napisany w języku C++ i jest dystrybuowany na licencji Apache 2.0. Do renderowania na ekranie wykorzystano OpenGL oraz bibliotekę GLFW.
Scena wymagająca renderowania może być załadowana w popularnych formatach lub stworzona za pomocą węzłów grafu sceny (scene graph). Obsługiwany jest import modeli w formacie MTL zawierających materiały do fotorealistycznego renderowania, 3D animacji w formacie glTF, tekstur w formacie UDIM, objętościowych rozproszonych cząstek (np. chmury) w formacie VDB, chmur punktów w formacie PCD (Point Cloud Data), profili oświetlenia w formacie EULUMDAT (.ldt). Stan grafu sceny może być zapisany lub załadowany w formacie JSON.
Rozszerzona funkcjonalność, widżety do interfejsu użytkownika i moduły importu danych mogą być dołączane w formie wtyczek. Na przykład, dostępne są wtyczki do wizualizacji danych medycznych w formacie DICOM, generacji krajobrazów na podstawie map wysokości, przetwarzania dużych grup typowych obiektów (trawa, drzewa), symulacji zdarzeń astronomicznych, wizualizacji danych naukowych w formacie VTK itp.
Do symulacji zachowania światła wspierane jest wykorzystanie metody śledzenia ścieżki. Wizualizacja może być wykonywana w objętości lub na płaszczyźnie. Obsługiwane jest fotorealistyczne globalne oświetlenie z uwzględnieniem fizycznych właściwości materiałów oraz rozszerzone efekty cieniowania (cienie, przezroczystość i cieniowanie „Ambient occlusion”). Możliwe jest tworzenie skryptów do wykonywania operacji w trybie wsadowym, na przykład do renderowania obrazów na systemie bez monitora, wybierania obszarów do renderowania, ustawiania kamery, parametrów renderowania i sceny.
W nowej wersji OSPRay Studio:
- Dodano wsparcie dla funkcjonalności silnika OSPRay, która pojawiła się w wydaniu 3.1.
- Do interfejsu użytkownika dodano wsparcie dla dodatkowych materiałów obsługiwanych w silniku OSPRay.
- Dodano wsparcie dla API OpenEXR v2.x i v3.x.
- Zapewniono definiowanie zmian plików w trybie asynchronicznym w celu automatycznej aktualizacji tekstur.
- W API dla wtyczek zaimplementowano dostęp do klas MainWindow i ArcballCamera.
- W trybie wsadowym zapewniono wsparcie dla rozproszonego renderowania za pomocą MPI.
Ponadto warto wspomnieć o opublikowaniu kilka dni temu nowej wersji silnika renderującego 3D OSPRay 3.1, wykorzystywanego w OSPRay Studio 1.0. Silnik rozwija się jako część większego projektu Intel Rendering Framework, który ma na celu opracowanie narzędzi do programowej wizualizacji obliczeń naukowych SDVis (Software Defined Visualization), w tym biblioteki śledzenia promieni Embree, systemu fotorealistycznego renderowania GLuRay, biblioteki do usuwania szumów na obrazach oidn (Open Image Denoise) oraz systemu programowej rastrowania OpenSWR. Kod został napisany w języku C++ i opublikowany na licencji Apache 2.0.
OSPRay jest głównie ukierunkowany na wykorzystanie w interaktywnych aplikacjach do renderowania sceny w locie. Silnik może działać bez powiązania z GPU, co pozwala na użycie biblioteki na szerokim zakresie urządzeń, od stacji roboczych po węzły w klastrach obliczeniowych. Aby zapewnić odpowiednią wydajność, aktywnie wykorzystuje wielowątkowość i wektoryzację opartą na instrukcjach SIMD, takich jak Intel SSE4, AVX, AVX2 i AVX-512. Renderowanie może być rozproszone na kilka węzłów klastra (wspierane MPI), co na przykład pozwala na zastosowanie OSPRay do organizowania renderowania obrazów o bardzo wysokiej rozdzielczości na ścianach wideo, gdzie jeden obraz jest tworzony przez zestaw oddzielnych paneli LCD.
Wśród udoskonaleń w OSPRay 3.1:
- Wsparcie dla wykorzystania emisji tekstur z materiałami świecącymi.
- Do wspieranych obiektów sferycznych dodano „dysk” (OSP_DISC) i „dysk orientowany” (OSP_ORIENTED_DISC).
- Dodano tryby lustrzanego powielania i nałożenia tekstury na krawędź (edge texture wrap).
- Dla wszystkich tekstur dodano wsparcie dla trybu OSPTextureWrapMode.
- Zagwarantowano pełne wsparcie dla owijania tekstur w formacie glTF.
- Dodano wsparcie dla usuwania szumów i korekcji tonów dla danych w buforze.
- Przy użyciu GPU zrealizowano wsparcie dla rozmycia ruchomych obiektów (motion blur).
Źródło: opennet.ru
