Dela via


Renderingsmodeller

Fjärrrendering erbjuder två huvudsakliga driftlägen, TileBasedComposition-läge och DepthBasedComposition-läge . Dessa lägen avgör hur arbetsbelastningen distribueras över flera GPU:er på servern. Läget måste anges vid anslutningstiden och kan inte ändras under körningen.

Båda lägena har fördelar men också med inbyggda funktionsbegränsningar, så att välja det lämpligaste läget är användningsfallsspecifikt.

Lägen

De två lägena beskrivs nu mer detaljerat.

Läget TileBasedComposition

I Läget TileBasedComposition renderar varje berörd GPU specifika underpunkter (paneler) på skärmen. Huvud-GPU:n består av den slutliga bilden från panelerna innan den skickas som en videoram till klienten. Därför måste alla GPU:er ha samma uppsättning resurser för rendering, så de inlästa tillgångarna måste passa in i en enda GPU:s minne.

Renderingskvaliteten i det här läget är något bättre än i DepthBasedComposition-läget , eftersom MSAA kan arbeta med hela uppsättningen geometri för varje GPU. Följande skärmbild visar att antialiasing fungerar korrekt för båda kanterna på samma sätt:

MSAA in TileBasedComposition

I det här läget kan dessutom varje del växlas till ett transparent material eller växlas till genomskinligt läge via HierarchicalStateOverrideComponent

Läget "DepthBasedComposition"

I Läget DepthBasedComposition renderas alla berörda GPU:er i fullskärmsupplösning men bara en delmängd av näten. Den slutliga bildsammansättningen på huvud-GPU:n ser till att delarna sammanfogas korrekt enligt deras djupinformation. Minnesnyttolasten distribueras naturligtvis över GPU:erna, vilket möjliggör renderingsmodeller som inte skulle passa in i en enda GPU:s minne.

Varje GPU använder MSAA till lokalt innehåll med antialias. Det kan dock finnas inbyggda alias mellan kanter från distinkta GPU:er. Den här effekten minimeras genom att den slutliga avbildningen bearbetas, men MSAA-kvaliteten är fortfarande sämre än i TileBasedComposition-läge .

MSAA-artefakter illustreras i följande bild: MSAA in DepthBasedComposition

Antialiasing fungerar korrekt mellan skulpturen och ridån, eftersom båda delarna återges på samma GPU. Å andra sidan visar kanten mellan gardin och vägg vissa alias eftersom dessa två delar består av distinkta GPU:er.

Den största begränsningen i det här läget är att geometridelar inte kan växlas till transparenta material dynamiskt och inte heller fungerar genomskinligt läge för HierarchicalStateOverrideComponent. Andra funktioner för åsidosättning av tillstånd (disposition, färgton, ...) fungerar dock. Även material som har markerats som transparenta vid konverteringen fungerar korrekt i det här läget.

Prestanda

Prestandaegenskaperna för båda lägena varierar beroende på användningsfallet, och det är svårt att resonera eller ge allmänna rekommendationer. Om du inte begränsas av de begränsningar som nämns ovan (minne eller genomskinlighet/genomskinlighet/genomskinlighet) rekommenderar vi att du provar båda lägena och övervakar prestandan med hjälp av olika kamerapositioner.

Ange återgivningsläget

Återgivningsläget som används på en fjärrrenderingsserver anges under RenderingSession.ConnectAsync via 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-dokumentation

Nästa steg