Servergrößen
Azure Remote Rendering ist als zwei Serverkonfigurationen verfügbar: Standard
und Premium
.
Grenzwerte für Grundtypen
Ein Grundtyp ist entweder ein einzelnes Dreieck (in Dreiecksnetzen) oder ein einzelner Punkt (in Punktwolkennetzen). Dreiecksnetze können zusammen mit Punktwolken instanziiert werden. In diesem Fall werden die Summe aller Punkte und Dreiecke in der Sitzung auf den Grenzwert angerechnet.
Standardgröße
Remote Rendering mit einem Server der Größe Standard
hat eine maximale Szenengröße von 20 Millionen Grundtypen. Wenn der Renderer auf einem Server mit der Größe „Standard“ diesen Grenzwert erreicht, schaltet er das Rendering in einen Schachbretthintergrund um:
Premium-Größe
Remote Rendering mit der Größe Premium
erzwingt kein hartes Maximum, die Leistung kann jedoch beeinträchtigt werden, wenn Ihre Inhalte die Renderingkapazität des Diensts überschreiten. Darüber hinaus ist für dreieckige Gitter (und im Gegensatz zu Punktwolken) die verfügbare Menge an Grafikspeicher ein hartes Limit. Es ist nicht möglich, die Menge des Grafikspeichers einer bestimmten Anzahl von Dreiecken zuzuordnen, da es viele faktoren gibt, die von dem Quellgitter und den Einstellungen abhängen:
- Anzahl und Auflösung von Texturen,
- Menge der eindeutigen Geometrie im Vergleich zur Subgitterinstanziierung innerhalb des Gitters (siehe auch Instancing-Objekte),
- verwendete Vertexdatenströme ,
- der Renderingkompositionsmodus , der mit der
Premium
Größe verwendet wird.
Für Punktwolken gibt es keine echte Grenze, da Punktcloudressourcen den Datenstreaming-Ansatz verwenden. Beim Datenstreaming verwaltet der Renderer automatisch das Speicherbudget für die Grafik Karte, basierend auf der tatsächlichen sichtbaren Geometrie.
Angeben der Servergröße
Der gewünschte Serverkonfigurationstyp muss bei der Initialisierung der Renderingsitzung angegeben werden. Er kann nicht während einer laufenden Sitzung geändert werden. Die folgenden Codebeispiele zeigen, wo die Servergröße angegeben werden muss:
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
}
});
}
Für die PowerShell-Beispielskripts muss die Servergröße in der Datei arrconfig.json
angegeben werden:
{
"accountSettings": {
...
},
"renderingSessionSettings": {
"vmSize": "<standard or premium>",
...
},
Auswerten der Anzahl der Grundtypen durch den Renderer
Die Anzahl von Grundtypen, die für den Einschränkungstest berücksichtigt werden, entspricht der Anzahl der Grundtypen (Dreiecke und Punkte), die tatsächlich an den Renderer übermittelt werden. Diese Geometrie ist in der Regel die Summe aller instanziierten Netze, es gibt jedoch auch Ausnahmen. Folgende Geometrie ist nicht eingeschlossen:
- Geladene Modellinstanzen, die vollständig außerhalb des Ansichtsfrustums liegen.
- Modelle oder Modellteile, die mithilfe der Komponente der hierarchischen Zustandsüberschreibung unsichtbar geschaltet werden.
Dementsprechend ist es möglich, eine Anwendung zu schreiben, die auf die standard
-Größe abzielt und mehrere Modelle mit einer Grundtypanzahl nahe des Grenzwerts für das einzelne Modell lädt. Wenn die Anwendung jeweils nur ein Modell anzeigt, wird das Schachbrett nicht ausgelöst.
Bestimmen der Anzahl der Grundtypen
Es gibt zwei Möglichkeiten, die Anzahl der Grundtypen eines Modells oder einer Szene zu ermitteln, die zum Budgetlimit der standard
-Konfigurationsgröße beitragen:
- Rufen Sie auf der Modellkonvertierungsseite die JSON-Datei der Konvertierungsausgabe ab, und überprüfen Sie den
numFaces
-Eintrag im Abschnitt inputStatistics (Eingabestatistik). Diese Zahl gibt die Anzahl von Dreiecken in Dreiecksnetzen bzw. die Anzahl der Punkte in Punktwolken an. - Wenn die Anwendung dynamische Inhalte verarbeitet, kann die Anzahl gerenderter Grundtypen während der Laufzeit dynamisch abgefragt werden. Verwenden Sie eine Leistungsbewertungsabfrage, und überprüfen Sie die Summe der Werte in den beiden Elementen
PolygonsRendered
undPointsRendered
in derPerformanceAssessment
-Struktur. DasPolygonsRendered
/PointsRendered
Feld wird festgelegtbad
, wenn der Renderer auf die Grundtypeinschränkung trifft. Der Schachbretthintergrund wird stets mit einiger Verzögerung ausgeblendet, um sicherzustellen, dass nach dieser asynchronen Abfrage eine Benutzeraktion durchgeführt werden kann. Eine Benutzeraktion kann beispielsweise Modellinstanzen ausblenden oder löschen.
Preise
Eine detaillierte Aufschlüsselung der Preise für die einzelnen Konfigurationstypen finden Sie auf der Seite Remote Rendering – Preise.