Delen via


Weergavemodellen

Remote Rendering biedt twee belangrijkste bewerkingsmodi: TileBasedComposition-modus en DepthBasedComposition-modus . Deze modi bepalen hoe de workload wordt verdeeld over meerdere GPU's op de server. De modus moet worden opgegeven tijdens de verbinding en kan niet worden gewijzigd tijdens runtime.

Beide modi hebben voordelen, maar ook met inherente functiebeperkingen, dus het kiezen van de meest geschikte modus is gebruiksvoorbeeldspecifiek.

Modi

De twee modi worden nu uitgebreid besproken.

De modus TileBasedComposition

In de TileBasedComposition-modus geeft elke betrokken GPU specifieke subcorrecties (tegels) op het scherm weer. De hoofd-GPU stelt de uiteindelijke afbeelding op van de tegels voordat deze als videoframe naar de client wordt verzonden. Daarom moeten alle GPU's dezelfde set resources hebben voor rendering, zodat de geladen assets in één GPU-geheugen moeten passen.

De renderingkwaliteit in deze modus is iets beter dan in depthBasedComposition-modus , omdat MSAA kan werken aan de volledige set geometrie voor elke GPU. In de volgende schermopname ziet u dat antialiasing voor beide randen op dezelfde manier werkt:

MSAA in TileBasedComposition

Bovendien kan elk onderdeel in deze modus worden overgeschakeld naar een transparant materiaal of worden overgeschakeld naar de see-through-modus via de HierarchicalStateOverrideComponent

Modus DepthBasedComposition

In depthBasedComposition-modus wordt elke betrokken GPU weergegeven op volledige schermresolutie, maar slechts een subset van meshes. De uiteindelijke samenstelling van de afbeelding op de hoofd-GPU zorgt ervoor dat onderdelen correct worden samengevoegd op basis van hun dieptegegevens. De nettolading van het geheugen wordt natuurlijk verdeeld over de GPU's, waardoor renderingmodellen mogelijk zijn die niet in één GPU-geheugen passen.

Elke GPU maakt gebruik van MSAA om lokale inhoud te antialiasen. Er kan echter inherente aliasing zijn tussen randen van verschillende GPU's. Dit effect wordt beperkt door naverwerking van de uiteindelijke afbeelding, maar de MSAA-kwaliteit is nog steeds erger dan in de TegelBasedComposition-modus .

MSAA-artefacten worden geïllustreerd in de volgende afbeelding: MSAA in DepthBasedComposition

Antialiasing werkt goed tussen het beeldhouwwerk en het gordijn, omdat beide delen op dezelfde GPU worden weergegeven. Aan de andere kant toont de rand tussen gordijn en muur enige aliasing omdat deze twee onderdelen zijn samengesteld uit afzonderlijke GPU's.

De grootste beperking van deze modus is dat geometrieonderdelen dynamisch niet kunnen worden overgeschakeld naar transparante materialen en dat de see-through-modus werkt voor de HierarchicalStateOverrideComponent. Andere functies voor het overschrijven van statussen (omtrek, kleurtint, ...) werken echter wel. Ook materialen die tijdens de conversietijd als transparant zijn gemarkeerd, werken goed in deze modus.

Prestaties

De prestatiekenmerken voor beide modi variëren afhankelijk van de use-case en het is moeilijk om algemene aanbevelingen te geven of te berekent. Als u niet beperkt bent door de hierboven genoemde beperkingen (geheugen of transparantie/see-through), is het raadzaam om beide modi uit te proberen en de prestaties te bewaken met behulp van verschillende cameraposities.

De weergavemodus instellen

De rendermodus die op een Remote Rendering-server wordt gebruikt, wordt opgegeven via RenderingSession.ConnectAsync de RendererInitOptions.

async void ExampleConnect(RenderingSession session)
{
    RendererInitOptions parameters = new RendererInitOptions();

    // Connect with one rendering mode
    parameters.RenderMode = ServiceRenderMode.TileBasedComposition;
    await session.ConnectAsync(parameters);

    session.Disconnect();

    // Wait until session.IsConnected == false

    // Reconnect with a different rendering mode
    parameters.RenderMode = ServiceRenderMode.DepthBasedComposition;
    await session.ConnectAsync(parameters);
}

API-documentatie

Volgende stappen