Partilhar via


Tamanhos de servidor

A Renderização Remota do Azure está disponível em duas configurações de servidor: Standard e Premium.

Limites primitivos

Um primitivo é um único triângulo (em malhas triangulares) ou um único ponto (em malhas de nuvens de pontos). As malhas triangulares podem ser instanciadas juntamente com nuvens de pontos, caso em que a soma de todos os pontos e triângulos na sessão são contados contra o limite.

Tamanho padrão

A renderização remota com Standard servidor de tamanho tem um tamanho máximo de cena de 20 milhões de primitivos. Quando o renderizador em um tamanho de servidor 'Padrão' atinge essa limitação, ele alterna a renderização para um plano de fundo quadriculado:

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

Tamanho Premium

A renderização remota com Premium tamanho não impõe um máximo rígido, mas o desempenho pode ser prejudicado se o conteúdo exceder os recursos de renderização do serviço. Além disso, para malhas triangulares (e ao contrário das nuvens de pontos), a quantidade disponível de memória gráfica é um limite rígido. Não é possível mapear a quantidade de memória gráfica para um número específico de triângulos, porque há muitos fatores contribuintes que dependem da malha de origem e das configurações:

  • número e resolução das texturas,
  • quantidade de geometria exclusiva versus instanciação de submalha dentro da malha (ver também objetos de instanciação),
  • fluxos de vértices que estão a ser utilizados,
  • O modo de composição de renderização usado com o Premium tamanho.

Para nuvens de pontos, não há limite real, uma vez que os ativos de nuvem de pontos usam a abordagem de streaming de dados. Com o streaming de dados, o renderizador gerencia automaticamente o orçamento de memória na placa gráfica, com base na geometria visível real.

Especificar o tamanho do servidor

O tipo desejado de configuração de servidor deve ser especificado no momento da inicialização da sessão de renderização. Ele não pode ser alterado dentro de uma sessão em execução. Os exemplos de código a seguir mostram o local onde o tamanho do servidor deve ser especificado:

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

Para o exemplo de scripts do PowerShell, o tamanho do servidor desejado deve ser especificado dentro do arrconfig.json arquivo:

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

Como o renderizador avalia o número de primitivos

O número de primitivos que são considerados para o teste de limitação é o número de primitivos (triângulos e pontos) que são realmente passados para o renderizador. Esta geometria é tipicamente a soma de todas as malhas instanciadas, mas também há exceções. A seguinte geometria não está incluída:

  • Instâncias de modelo carregadas que estão totalmente fora do frustum de exibição.
  • Modelos ou partes de modelo que são alternados para invisíveis, usando o componente de substituição de estado hierárquico.

Assim, é possível escrever um aplicativo que tenha como alvo o standard tamanho que carrega vários modelos com uma contagem primitiva próxima ao limite para cada modelo. Quando o aplicativo mostra apenas um modelo de cada vez, o quadriculado não é acionado.

Como determinar o número de primitivos

Há duas maneiras de determinar o número de primitivos de um modelo ou cena que contribuem para o limite de orçamento do standard tamanho da configuração:

  • No lado da conversão do modelo, recupere o arquivo json de saída de conversão e verifique a numFacesentrada na seção inputStatistics. Este número denota a contagem de triângulos em malhas triangulares e o número de pontos em nuvens de pontos, respectivamente.
  • Se seu aplicativo estiver lidando com conteúdo dinâmico, o número de primitivas renderizadas poderá ser consultado dinamicamente durante o tempo de execução. Use uma consulta de avaliação de desempenho e verifique a soma dos valores nos dois membros PolygonsRendered e PointsRendered no PerformanceAssessment struct. O PolygonsRendered / PointsRendered campo é definido como bad quando o renderizador atinge a limitação primitiva. O plano de fundo do quadriculado é sempre apagado com algum atraso para garantir que a ação do usuário possa ser tomada após essa consulta assíncrona. A ação do usuário pode, por exemplo, ocultar ou excluir instâncias de modelo.

Definição de Preços

Para obter um detalhamento detalhado dos preços para cada tipo de configuração, consulte a página de preços de renderização remota.

Próximos passos