Azure Remote Rendering — informacje

Azure Remote Rendering (ARR) to usługa, która umożliwia renderowanie wysokiej jakości, interaktywnej zawartości 3D w chmurze i przesyłanie strumieniowe jej w czasie rzeczywistym do urządzeń, takich jak HoloLens 2.

Diagram przedstawiający przykład renderowanego, interaktywnego silnika samochodowego 3D o wysokiej jakości.

Urządzenia nienadane mają ograniczoną moc obliczeniową do renderowania złożonych modeli. W przypadku wielu aplikacji byłoby to jednak niedopuszczalne, aby zmniejszyć w jakikolwiek sposób wierność wizualizacji. Poniższy zrzut ekranu porównuje model pod pełnymi szczegółami z modelem, który został zdziesiątkowany przy użyciu wspólnego narzędzia do tworzenia zawartości:

Przykładowy model

Model zredukowany składa się z około 200 000 trójkątów (w tym szczegółowych części wewnętrznych) w porównaniu z ponad 18 milionami trójkątów w oryginalnym modelu.

Remote Rendering rozwiązuje ten problem, przenosząc obciążenie renderowania do wysokiej klasy procesorów GPU w chmurze. Aparat graficzny hostowany w chmurze renderuje obraz, koduje go jako strumień wideo i przesyła strumieniowo do urządzenia docelowego.

Renderowanie hybrydowe

W większości aplikacji nie wystarczy tylko renderować złożony model. Potrzebujesz również niestandardowego interfejsu użytkownika, aby zapewnić użytkownikowi funkcjonalność. Usługa Azure Remote Rendering nie wymusza używania dedykowanej platformy interfejsu użytkownika, a nie obsługuje renderowania hybrydowego. Oznacza to, że można renderować elementy na urządzeniu przy użyciu preferowanej metody, takiej jak zestaw narzędzi MRTK.

Na końcu ramki platforma Azure Remote Rendering następnie automatycznie łączy lokalnie renderowaną zawartość z obrazem zdalnym. Jest nawet w stanie to zrobić z poprawnym okluzji.

Renderowanie z wieloma procesorami GPU

Niektóre modele są zbyt złożone, aby renderować w interakcyjnych szybkościach klatek, nawet w przypadku wysokiej klasy procesorów GPU. Szczególnie w wizualizacji przemysłowej jest to typowy problem. Aby jeszcze bardziej przesunąć limity, usługa Azure Remote Rendering może dystrybuować obciążenie do wielu procesorów GPU. Wyniki są scalane w jeden obraz, dzięki czemu proces jest całkowicie niewidoczny dla użytkownika.

Architektura wysokiego poziomu

Na tym diagramie przedstawiono architekturę renderowania zdalnego:

Architektura

Pełny cykl generowania obrazu obejmuje następujące kroki:

  1. Po stronie klienta: konfiguracja ramki
    1. Twój kod: Dane wejściowe użytkownika są przetwarzane, graf sceny jest aktualizowany
    2. Kod ARR: Aktualizacje grafu sceny i przewidywana pozycja głowy są wysyłane do serwera
  2. Po stronie serwera: renderowanie zdalne
    1. Aparat renderowania dystrybuuje renderowanie między dostępnymi procesorami GPU
    2. Dane wyjściowe z wielu procesorów GPU są komponowane w jeden obraz
    3. Obraz jest zakodowany jako strumień wideo, wysyłany z powrotem do klienta
  3. Po stronie klienta: finalizacja
    1. Twój kod: opcjonalna zawartość lokalna (interfejs użytkownika, znaczniki, ...) jest renderowana
    2. Kod ARR: W przypadku elementu "present" lokalnie renderowana zawartość jest automatycznie scalana ze strumieniem wideo

Opóźnienie sieci jest głównym problemem. Czas między wysłaniem żądania i odebraniem wyniku jest zazwyczaj zbyt długi w przypadku interakcyjnych szybkości klatek. W związku z tym więcej niż jedna ramka może być w locie w dowolnym momencie.

Następne kroki