Renderelési módok
A távoli renderelés két fő üzemmódot kínál, a TileBasedComposition módot és a DepthBasedComposition módot. Ezek a módok határozzák meg, hogyan oszlik el a számítási feladat több GPU-n a kiszolgálón. A módot a kapcsolati időben kell megadni, és futásidőben nem módosítható.
Mindkét módnak vannak előnyei, de az eredendő funkciók korlátozásai is, ezért a legmegfelelőbb mód kiválasztása a használati esetekre jellemző.
Módok
A két módról most részletesebben is szó lesz.
"TileBasedComposition" mód
TileBasedComposition módban minden érintett GPU adott alhálózatokat (csempéket) jelenít meg a képernyőn. A fő GPU a csempékből összeállítja a végső képet, mielőtt videokeretként elküldené az ügyfélnek. Ennek megfelelően minden GPU-nak azonos erőforráskészlettel kell rendelkeznie a rendereléshez, így a betöltött eszközöknek egyetlen GPU memóriájába kell illeszkedniük.
A renderelési minőség ebben a módban valamivel jobb, mint a DepthBasedComposition módban, mivel az MSAA minden GPU-ra képes a geometria teljes készletén. Az alábbi képernyőképen látható, hogy az antialiasing mindkét élhez hasonlóan működik megfelelően:
Ezen kívül ebben a módban az egyes részeket át lehet kapcsolni átlátszó anyagra, vagy átlátszatlan üzemmódra lehet váltani a HierarchicalStateOverrideComponent használatával
"DepthBasedComposition" mód
A DepthBasedComposition módban minden érintett GPU teljes képernyős felbontásban jelenik meg, de csak a hálók egy részhalmaza. A fő GPU végső képösszeállítása gondoskodik arról, hogy az alkatrészek a mélységi információknak megfelelően megfelelően egyesüljenek. A memória hasznos adatai természetesen a GPU-k között oszlanak el, így olyan renderelési modelleket is lehetővé tesznek, amelyek nem férnek el egyetlen GPU memóriájában.
Minden egyes GPU MSAA-t használ a helyi tartalom ellen. Előfordulhat azonban, hogy a különböző GPU-k szélei között eredendő aliasolás van. Ezt a hatást a végső kép utófeldolgozása csökkenti, de az MSAA minősége még mindig rosszabb, mint a TileBasedComposition módban.
Az MSAA-összetevőket az alábbi képen szemléltetjük:
Az antialiasing megfelelően működik a szobor és a függöny között, mivel mindkét rész ugyanazon a GPU-n jelenik meg. Másrészt, a függöny és a fal közötti szél némi aliast mutat, mert ez a két rész különböző GPU-kból áll.
Ennek a módnak a legnagyobb korlátozása, hogy a geometriai részek nem válthatók át dinamikusan transzparens anyagokra, és az átlátszatlan mód sem működik a HierarchicalStateOverrideComponent esetében. Más állapot felülbírálási funkciók (vázlat, színárnyalat, ...) azonban működnek. Az átalakításkor transzparensként megjelölt anyagok is megfelelően működnek ebben a módban.
Teljesítmény
Mindkét mód teljesítményjellemzői a használati esettől függően változnak, és nehéz indokolni vagy általános javaslatokat tenni. Ha nem korlátozza a fent említett korlátozások (memória vagy átlátszóság/átlátszatlanság), javasoljuk, hogy próbálja ki mindkét módot, és figyelje a teljesítményt különböző kamerapozíciók használatával.
A renderelési mód beállítása
A távoli renderelési kiszolgálón használt renderelési módot a RenderingSession.ConnectAsync
rendszer a 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-dokumentáció
- C# RenderingSession. Csatlakozás Async()
- C# RendererInitOptions szerkezet
- C++ RenderingSession::Csatlakozás To Csatlakozás AsyncRuntime()
- C++ RendererInitOptions szerkezet