Sdílet prostřednictvím


Režimy vykreslování

Vzdálené vykreslování nabízí dva hlavní režimy operací, režim TileBasedComposition a režim DepthBasedComposition . Tyto režimy určují, jak se úloha distribuuje mezi více GPU na serveru. Režim musí být zadán v době připojení a nelze ho během běhu změnit.

Oba režimy mají výhody, ale také vlastní omezení funkcí, takže výběr nejvhodnějšího režimu je specifický pro případ použití.

Režimy

Tyto dva režimy jsou teď podrobněji popsány.

Režim TileBasedComposition

V režimu TileBasedComposition každý zahrnutý GPU vykresluje na obrazovce konkrétní dílčí odkazy (dlaždice). Hlavní GPU sestaví finální obrázek z dlaždic před odesláním do klienta jako snímek videa. Proto musí mít všechny GPU stejnou sadu prostředků pro vykreslování, takže načtené prostředky se musí vejít do paměti jednoho GPU.

Kvalita vykreslování v tomto režimu je mírně lepší než v režimu DepthBasedComposition , protože MSAA může pracovat na úplné sadě geometrie pro každý GPU. Následující snímek obrazovky ukazuje, že antialiasing funguje správně pro obě hrany podobně:

MSAA in TileBasedComposition

V tomto režimu lze navíc přepnout na průhledný materiál nebo přepnout na režim zobrazení prostřednictvím HierarchicalStateOverrideComponent.

Režim DepthBasedComposition

V režimu DepthBasedComposition se každý zahrnutý GPU vykresluje v rozlišení na celé obrazovce, ale pouze podmnožinu sítí. Finální složení obrázků v hlavním GPU se postará o správné sloučení částí podle jejich podrobných informací. Datová část paměti je přirozeně distribuovaná napříč grafickými procesory, což umožňuje vykreslovací modely, které by se nevešly do paměti jednoho GPU.

Každý gpu používá MSAA k antialias místnímu obsahu. Mezi hranami z různých grafických procesorů ale může existovat vlastní alias. Tento účinek je zmírnit následným zpracováním konečného obrázku, ale kvalita MSAA je stále horší než v režimu TileBasedComposition .

Artefakty MSAA jsou znázorněny na následujícím obrázku: MSAA in DepthBasedComposition

Antialiasing funguje správně mezi sochou a oponou, protože obě části jsou vykresleny na stejném GPU. Na druhé straně hrana mezi záclonou a stěnou ukazuje některé aliasy, protože tyto dvě části se skládají z odlišných GPU.

Největší omezení tohoto režimu spočívá v tom, že části geometrie nelze dynamicky přepnout na průhledné materiály ani nefunguje režim zobrazení pro HierarchicalStateOverrideComponent. Jiné funkce přepsání stavu (obrys, barevný nádech, ...) ale fungují. V tomto režimu fungují správně také materiály označené jako transparentní v době převodu.

Výkon

Charakteristiky výkonu pro oba režimy se liší v závislosti na případu použití a je obtížné zdůvodnět nebo poskytnout obecná doporučení. Pokud nejste omezeni výše uvedenými omezeními (paměť nebo průhlednost nebo průhled), doporučujeme vyzkoušet oba režimy a monitorovat výkon pomocí různých poloh fotoaparátu.

Nastavení režimu vykreslování

Režim vykreslování použitý na serveru vzdáleného vykreslování je určen během RenderingSession.ConnectAsync operace 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);
}

Dokumentace k rozhraní API

Další kroky