Server sizes

Azure Remote Rendering is available in two server configurations: Standard and Premium.

Polygon limits

Remote Rendering with Standard size server has a maximum scene size of 20 million polygons. Remote Rendering with Premium size does not enforce a hard maximum, but performance may be degraded if your content exceeds the rendering capabilities of the service.

When the renderer on on a 'Standard' server size hits this limitation, it switches rendering to a checkerboard background:

Screenshot shows a grid of black and white squares with a Tools menu.

Specify the server size

The desired type of server configuration has to be specified at rendering session initialization time. It cannot be changed within a running session. The following code examples show the place where the server size must be specified:

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
        }
    });
}

For the example PowerShell scripts, the desired server size has to be specified inside the arrconfig.json file:

{
  "accountSettings": {
    ...
  },
  "renderingSessionSettings": {
    "vmSize": "<standard or premium>",
    ...
  },

How the renderer evaluates the number of polygons

The number of polygons that are considered for the limitation test are the number of polygons that are actually passed to the renderer. This geometry is typically the sum of all instantiated models, but there are also exceptions. The following geometry is not included:

Accordingly, it is possible to write an application that targets the standard size that loads multiple models with a polygon count close to the limit for every single model. When the application only shows a single model at a time, the checkerboard is not triggered.

How to determine the number of polygons

There are two ways to determine the number of polygons of a model or scene that contribute to the budget limit of the standard configuration size:

  • On the model conversion side, retrieve the conversion output json file, and check the numFaces entry in the inputStatistics section
  • If your application is dealing with dynamic content, the number of rendered polygons can be queried dynamically during runtime. Use a performance assessment query and check for the polygonsRendered member in the FrameStatistics struct. The PolygonsRendered field will be set to bad when the renderer hits the polygon limitation. The checkerboard background is always faded in with some delay to ensure user action can be taken after this asynchronous query. User action can for instance be hiding or deleting model instances.

Pricing

For a detailed breakdown of the pricing for each type of configuration, refer to the Remote Rendering pricing page.

Next steps