Rozmiary serwerów
Usługa Azure Remote Rendering jest dostępna w dwóch konfiguracjach serwera: Standard
i Premium
.
Limity pierwotne
Element pierwotny to pojedynczy trójkąt (w trójkątnych siatkach) lub pojedynczy punkt (w siatkach chmury punktowej). Trójkątne siatki można utworzyć razem z chmurami punktowymi, w tym przypadku suma wszystkich punktów i trójkątów w sesji jest liczona względem limitu.
Rozmiar standardowy
Renderowanie zdalne z serwerem Standard
o rozmiarze ma maksymalny rozmiar sceny wynoszący 20 milionów elementów pierwotnych. Gdy program renderujący w rozmiarze serwera w warstwie Standardowa osiągnie to ograniczenie, przełącza renderowanie na tło tablicy kontrolnej:
Rozmiar Premium
Renderowanie zdalne z rozmiarem Premium
nie wymusza twardej maksymalnej wydajności, ale wydajność może być obniżona, jeśli zawartość przekracza możliwości renderowania usługi. Ponadto w przypadku trójkątnych siatk (i w przeciwieństwie do chmur punktowych) dostępna ilość pamięci graficznej jest twardym limitem. Nie można mapować ilości pamięci graficznej na określoną liczbę trójkątów, ponieważ istnieje wiele czynników, które zależą od siatki źródłowej i ustawień:
- liczba i rozdzielczość tekstur,
- ilość unikatowej geometrii w porównaniu z wystąpieniem podsiatek wewnątrz siatki (zobacz również tworzenie wystąpień w siatce),
- używane strumienie wierzchołków ,
- tryb renderowania kompozycji używany z rozmiarem
Premium
.
W przypadku chmur punktowych nie ma rzeczywistego limitu, ponieważ zasoby chmury punktowej używają podejścia do przesyłania strumieniowego danych. W przypadku przesyłania strumieniowego danych renderator automatycznie zarządza budżetem pamięci na karcie graficznej na podstawie rzeczywistej widocznej geometrii.
Określanie rozmiaru serwera
Żądany typ konfiguracji serwera musi być określony podczas inicjowania sesji renderowania. Nie można jej zmienić w ramach uruchomionej sesji. W poniższych przykładach kodu pokazano miejsce, w którym należy określić rozmiar serwera:
async void CreateRenderingSession(RemoteRenderingClient client)
{
RenderingSessionCreationOptions sessionCreationOptions = default;
sessionCreationOptions.Size = RenderingSessionVmSize.Standard; // or RenderingSessionVmSize.Premium
CreateRenderingSessionResult result = await client.CreateNewRenderingSessionAsync(sessionCreationOptions);
if (result.ErrorCode == Result.Success)
{
RenderingSession session = result.Session;
// do something with the session
}
}
void CreateRenderingSession(ApiHandle<RemoteRenderingClient> client)
{
RenderingSessionCreationOptions sessionCreationOptions;
sessionCreationOptions.Size = RenderingSessionVmSize::Standard; // or RenderingSessionVmSize::Premium
client->CreateNewRenderingSessionAsync(sessionCreationOptions, [](Status status, ApiHandle<CreateRenderingSessionResult> result) {
if (status == Status::OK && result->GetErrorCode() == Result::Success)
{
ApiHandle<RenderingSession> session = result->GetSession();
// do something with the session
}
});
}
W przypadku przykładowych skryptów programu PowerShell żądany rozmiar serwera musi być określony wewnątrz arrconfig.json
pliku:
{
"accountSettings": {
...
},
"renderingSessionSettings": {
"vmSize": "<standard or premium>",
...
},
Jak moduł renderowania ocenia liczbę elementów pierwotnych
Liczba elementów pierwotnych, które są brane pod uwagę w przypadku testu ograniczenia, to liczba elementów pierwotnych (trójkątów i punktów), które są rzeczywiście przekazywane do modułu renderowania. Ta geometria jest zwykle sumą wszystkich wystąpień siatki, ale istnieją również wyjątki. Nie uwzględniono następującej geometrii:
- Załadowane wystąpienia modelu, które są w pełni poza widokiem frustum.
- Modele lub części modelu, które są przełączane na niewidoczne, przy użyciu składnika zastępowania stanu hierarchicznego.
W związku z tym można napisać aplikację, która jest przeznaczona dla rozmiaru standard
, który ładuje wiele modeli z liczbą pierwotną zbliżoną do limitu dla każdego pojedynczego modelu. Gdy aplikacja wyświetla tylko jeden model w danym momencie, tablica kontrolna nie jest wyzwalana.
Jak określić liczbę elementów pierwotnych
Istnieją dwa sposoby określania liczby elementów pierwotnych modelu lub sceny, które przyczyniają się do limitu budżetu rozmiaru standard
konfiguracji:
- Po stronie konwersji modelu pobierz plik JSON konwersji i sprawdź
numFaces
wpis w sekcji inputStatistics. Ta liczba określa liczbę trójkątów w trójkątnych siatkach i odpowiednio liczbę punktów w chmurach punktów. - Jeśli aplikacja ma do czynienia z zawartością dynamiczną, liczba renderowanych elementów pierwotnych może być badana dynamicznie w czasie wykonywania. Użyj zapytania oceny wydajności i sprawdź sumę wartości w dwóch elementach członkowskich
PolygonsRendered
iPointsRendered
wPerformanceAssessment
strukturę. PolePolygonsRendered
/PointsRendered
jest ustawione nabad
wartość , gdy program renderowany osiągnie ograniczenie pierwotne. Tło tablicy kontrolnej jest zawsze zanikane z pewnym opóźnieniem, aby upewnić się, że po tym asynchronicznym zapytaniu można wykonać akcję użytkownika. Akcja użytkownika może na przykład ukrywać lub usuwać wystąpienia modelu.
Ceny
Aby uzyskać szczegółowy podział cen dla każdego typu konfiguracji, zapoznaj się ze stroną cennika usługi Remote Rendering.