Размеры серверов
Удаленная отрисовка Azure доступна в двух конфигурациях сервера: Standard
и Premium
.
Примитивные ограничения
Примитив — это один треугольник (в треугольных сетках) или одна точка (в точечных облачных сетках). Триангулярные сетки можно создать вместе с облаками точек, в этом случае сумма всех точек и треугольников в сеансе учитывается по пределу.
Стандартный размер
Удаленная отрисовка с Standard
сервером размера имеет максимальный размер сцены 20 миллионов примитивов. Когда отрисовщик на уровне сервера "Стандартный" попадает в это ограничение, он переключает отрисовку на фон проверка доски:
Размер класса Premium
Удаленная отрисовка с Premium
размером не применяет жесткое максимальное значение, но производительность может снизиться, если содержимое превышает возможности отрисовки службы. Кроме того, для треугольных сеток (и в отличие от облаков точек), доступное количество графической памяти является жестким ограничением. Невозможно сопоставить объем графической памяти с определенным числом треугольников, так как существует множество факторов, которые зависят от исходной сетки и параметров:
- число и разрешение текстур,
- количество уникальных геометрических и вложенных экземпляров сетки внутри сетки (см. также неустанные объекты);
- используемые потоки вершин,
- режим отрисовки композиции, используемый
Premium
с размером.
Для облаков точек нет реального ограничения, так как облачные ресурсы точки используют подход потоковой передачи данных. При потоковой передаче данных отрисовщик автоматически управляет бюджетом памяти на графическом карта на основе фактической видимой геометрии.
Указание размера сервера
Требуемый тип конфигурации сервера должен быть указан во время инициализации сеанса отрисовки. Его нельзя изменить в рамках запущенного сеанса. В следующих примерах кода показано место, где должен быть указан размер сервера.
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
}
});
}
В примерах сценариев PowerShell требуемый размер сервера должен быть указан в файле arrconfig.json
.
{
"accountSettings": {
...
},
"renderingSessionSettings": {
"vmSize": "<standard or premium>",
...
},
Как отрисовщик оценивает количество примитивов
Число примитивов, которые считаются для теста ограничения, — это количество примитивов (треугольников и точек), которые фактически передаются в отрисовщик. Эта геометрия обычно является суммой всех экземпляров сеток, но существуют и исключения. Следующая геометрия не включается.
- Загруженные экземпляры модели, которые полностью выходят за пределы усеченной пирамиды видимости.
- Модели или части модели, которые переключаются на невидимость, с использованием компонента переопределения иерархического состояния.
Соответственно, можно написать приложение, которое предназначено standard
для размера, который загружает несколько моделей с примитивным числом близко к пределу для каждой отдельной модели. Если приложение отображает только одну модель одновременно, проверка erboard не активируется.
Определение количества примитивов
Существует два способа определить количество примитивов модели или сцены, которые способствуют ограничению standard
бюджета размера конфигурации:
- На стороне преобразования модели извлеките выходной json-файл преобразования и проверка
numFaces
запись в разделе inputStatistics. Это число обозначает число треугольников в треугольных сетках и количество точек в точках облака соответственно. - Если приложение работает с динамическим содержимым, количество отрисованных примитивов может выполняться динамически во время выполнения. Используйте запрос оценки производительности и проверка для суммы значений в двух членах
PolygonsRendered
иPointsRendered
вPerformanceAssessment
структуре. ПолеPolygonsRendered
/PointsRendered
заданоbad
, когда средство отрисовки попадает в примитивное ограничение. Шахматный фон всегда проступает с некоторой задержкой, чтобы можно было выполнить пользовательское действие после этого асинхронного запроса. Действие пользователя может, например, скрывать или удалять экземпляры модели.
Цены
Подробные сведения о ценах для каждого типа конфигурации см. на странице цен на удаленную отрисовку.