Servergrootten
Azure Remote Rendering is beschikbaar in twee serverconfiguraties: Standard
en Premium
.
Primitieve limieten
Een primitieve is ofwel één driehoek (in driehoekige meshes) of één punt (in puntwolk-meshes). Driehoekige meshes kunnen samen met puntwolken worden geïnstantieerd. In dat geval wordt de som van alle punten en driehoeken in de sessie meegeteld tegen de limiet.
Standaardgrootte
Remote Rendering met Standard
grootteserver heeft een maximale scènegrootte van 20 miljoen primitieven. Wanneer de renderer op de standaardservergrootte deze beperking bereikt, wordt de weergave overgeschakeld naar een achtergrond van het controlebord:
Premium-grootte
Remote Rendering met Premium
grootte dwingt geen harde maximum af, maar de prestaties kunnen afnemen als uw inhoud de renderingmogelijkheden van de service overschrijdt. Bovendien is de beschikbare hoeveelheid grafisch geheugen voor driehoekige meshes (en in tegenstelling tot puntwolken) een vaste limiet. Het is niet mogelijk om de hoeveelheid grafische geheugen toe te wijzen aan een specifiek aantal driehoeken, omdat er veel factoren zijn die afhankelijk zijn van de bron-mesh en -instellingen:
- aantal en resolutie van patronen,
- hoeveelheid unieke geometrie versus sub-mesh instantiëring binnen de mesh (zie ook instancing-objecten),
- hoekpuntstromen die worden gebruikt,
- de weergavesamenstellingsmodus die wordt gebruikt met de
Premium
grootte.
Voor puntclouds is er geen echte limiet omdat puntcloudassets gebruikmaken van de benadering voor gegevensstreaming. Met gegevensstreaming beheert de renderer automatisch het geheugenbudget op de grafische kaart, op basis van de werkelijke zichtbare geometrie.
De servergrootte opgeven
Het gewenste type serverconfiguratie moet worden opgegeven tijdens de initialisatietijd van de renderingsessie. Het kan niet worden gewijzigd binnen een actieve sessie. In de volgende codevoorbeelden ziet u de plaats waar de servergrootte moet worden opgegeven:
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
}
});
}
Voor het voorbeeld van PowerShell-scripts moet de gewenste servergrootte worden opgegeven in het arrconfig.json
bestand:
{
"accountSettings": {
...
},
"renderingSessionSettings": {
"vmSize": "<standard or premium>",
...
},
Hoe de renderer het aantal primitieven evalueert
Het aantal primitieven dat voor de beperkingstest wordt overwogen, is het aantal primitieven (driehoeken en punten) dat daadwerkelijk wordt doorgegeven aan de renderer. Deze geometrie is doorgaans de som van alle geïnstantieerde meshes, maar er zijn ook uitzonderingen. De volgende geometrie is niet inbegrepen:
- Geladen modelexemplaren die volledig buiten het weergave frustum vallen.
- Modellen of modelonderdelen die zijn overgeschakeld naar onzichtbare onderdelen, met behulp van het hiërarchische onderdeel overschrijven.
Daarom is het mogelijk om een toepassing te schrijven die is gericht op de standard
grootte die meerdere modellen laadt met een primitief aantal dicht bij de limiet voor elk model. Wanneer in de toepassing slechts één model tegelijk wordt weergegeven, wordt het controlebord niet geactiveerd.
Het aantal primitieven bepalen
Er zijn twee manieren om het aantal primitieven van een model of scène te bepalen die bijdragen aan de budgetlimiet van de standard
configuratiegrootte:
- Haal aan de kant van de modelconversie het JSON-bestand voor conversie-uitvoer op en controleer de
numFaces
vermelding in de sectie inputStatistics. Dit getal geeft het aantal driehoeken aan in driehoekige meshes en het aantal punten in puntwolken. - Als uw toepassing te maken heeft met dynamische inhoud, kan het aantal gerenderde primitieven dynamisch worden opgevraagd tijdens runtime. Gebruik een query voor prestatiebeoordeling en controleer op de som van de waarden in de twee leden
PolygonsRendered
enPointsRendered
in dePerformanceAssessment
struct. HetPolygonsRendered
/PointsRendered
veld wordt ingesteld opbad
wanneer de renderer de primitieve beperking bereikt. De achtergrond van het controlebord is altijd met enige vertraging vervaagd om ervoor te zorgen dat gebruikersactie kan worden uitgevoerd na deze asynchrone query. Gebruikersactie kan bijvoorbeeld modelexemplaren verbergen of verwijderen.
Prijzen
Raadpleeg de pagina met prijzen voor Remote Rendering voor een gedetailleerde specificatie van de prijzen voor elk type configuratie.