A vegyes valóság teljesítményének megértése

Ez a cikk az Mixed Reality-alkalmazás teljesítménybeli jelentőségének megértését ismerteti. A felhasználói élmény jelentősen csökkenhet, ha az alkalmazás nem optimális képkockasebességen fut. Hologramok instabilnak tűnnek, és a környezet fejkövetése pontatlan lesz, ami rossz felhasználói élményt eredményez. A teljesítményt a vegyes valóság fejlesztésének első osztályú funkciójának kell tekinteni, nem pedig egy lengyel feladatnak.

Az egyes célplatformok teljesítménybeli keretsebesség-értékei az alábbiakban láthatók.

Platform Célkockasebesség
HoloLens 60 FPS
Windows Mixed Reality Ultra pc-k 90 FPS
Windows Mixed Reality pc-k 60 FPS

Az alábbi keretrendszer a célkeretek sebességének elérésére vonatkozó ajánlott eljárásokat ismerteti. A Unity-környezetben a keretsebesség mérésével és javításával kapcsolatos tippekért javasoljuk, hogy olvassa el a Unity-cikk teljesítményére vonatkozó javaslatokat

A teljesítmény szűk keresztmetszeteinek ismertetése

Ha az alkalmazás alulteljesítő kerettel rendelkezik, az első lépés az alkalmazás számítási igényének elemzése és megértése. A jelenet rendereléséhez két elsődleges processzor felelős: a processzor és a GPU, amelyek mindegyike a Mixed Reality-alkalmazás különböző aspektusait kezeli. A három legfontosabb hely, ahol szűk keresztmetszetek fordulhatnak elő:

  1. Alkalmazásszál – CPU – Az alkalmazáslogikáért felelős, beleértve a bemenetek feldolgozását, az animációkat, a fizikát és más alkalmazáslogikát.
  2. Renderelési szál – CPU-ról GPU-ra – Felelős a rajzhívások GPU-nak való elküldéséért. Amikor az alkalmazás egy objektumot, például kockát vagy modellt szeretne renderelni, ez a szál kérést küld a GPU-nak a műveletek végrehajtásához.
  3. GPU – Az alkalmazás grafikus folyamatát leggyakrabban úgy kezeli, hogy a 3D-s adatokat (modelleket, textúrákat stb.) képponttá alakítsa. Végül létrehoz egy 2D-s rendszerképet, hogy elküldje az eszköz képernyőjén.

Lifetime of a Frame

Általában HoloLens alkalmazások GPU-ra lesznek kötve, de nem mindig. Az alábbi eszközökkel és technikákkal megtudhatja, hogy az adott alkalmazás hol szűkül el.

Az alkalmazás elemzése

Számos olyan eszköz van, amely lehetővé teszi a teljesítményprofil és a lehetséges szűk keresztmetszetek megértését a vegyes valósági alkalmazásban.

Az alábbiakban néhány gyakori eszközt talál az alkalmazás részletes profilkészítési adatainak gyűjtéséhez:

Profilkészítés bármilyen környezetben

Annak megállapítására, hogy az alkalmazás GPU-hoz vagy CPU-hoz kötött-e, az egyik módszer a renderelési cél kimenetének felbontásának csökkentése. A kiszámítandó képpontok számának csökkentésével csökkentheti a GPU-terhelést. Az eszköz kisebb anyagmintát jelenít meg, majd a végső kép megjelenítéséhez mintaképet jelenít meg.

A renderelés felbontásának csökkentése után, ha:

  1. Az alkalmazás képkockasebessége , akkor valószínűleg GPU-kötött
  2. Az alkalmazás képkockasebessége változatlan, akkor valószínűleg cpu-kötött

Megjegyzés

A Unity lehetővé teszi az alkalmazás renderelési célfelbontásának egyszerű módosítását futásidőben az XRSettings.renderViewportScale tulajdonságon keresztül. Az eszközön megjelenő végső kép rögzített felbontással rendelkezik. A platform az alacsonyabb felbontású kimenetet fogja mintaként létrehozni egy nagyobb felbontású kép megjelenítéséhez a kijelzőkön.

UnityEngine.XR.XRSettings.renderScale = 0.7f;

Az alkalmazás fejlesztése

Cpu-teljesítményre vonatkozó javaslatok

Általában a legtöbb munka egy vegyes valóságú alkalmazásban a CPU-n magában foglalja a jelenet "szimulációját" és az alkalmazáslogika feldolgozását. Az optimalizálás a következő területeket célozza meg:

  • Animációk
  • Fizika
  • Memóriafoglalások
  • Összetett algoritmusok (inverz kinematika, elérésiút-keresés)

GPU-teljesítményre vonatkozó javaslatok

A sávszélesség és a kitöltési sebesség ismertetése

Ha képkockát jelenít meg a GPU-n, az alkalmazást vagy a memória sávszélessége vagy a kitöltési sebesség köti össze.

  • A memória sávszélessége a GPU memóriából elvégezhető olvasási és írási sebessége
    • A sávszélesség korlátainak azonosításához csökkentse a textúra minőségét, és ellenőrizze, hogy javult-e a keretsebesség.
    • A kitöltési sebesség korlátozásainak azonosításához csökkentse a kijelző felbontását, és ellenőrizze, hogy javul-e a képkockasebesség.

Megjegyzés

Ha a Unityvel dolgozik, tekintse meg a Unity-specifikus GPU-teljesítményre vonatkozó javaslatainkat. – A Unityben használja az XRSettings.renderViewportScale tulajdonságot

A memória sávszélessége általában a következő optimalizálásokat foglalja magában:

  1. Alsó textúrafelbontás
  2. Használjon kevesebb textúrát (normál, spekuláris stb.)

A kitöltési sebesség a végső renderelt képponthoz kiszámítandó műveletek számának csökkentésére összpontosít, beleértve a következőket:

  1. Megjelenítendő/feldolgozandó objektumok száma
  2. Műveletek száma árnyékolónként
  3. A GPU-fázisok száma a végső eredményig (geometriai árnyékolók, utófeldolgozási effektusok stb.)
  4. Megjelenítendő képpontok száma (megjelenítési felbontás)

A sokszögek számának csökkentése

A nagyobb sokszögszám több műveletet eredményez a GPU-ban, így a jelenetben lévő sokszögek számának csökkentése csökkenti a megjelenítési időt. Vannak más tényezők is, amelyek költségessé teszik a geometria árnyékolását, de a sokszögek száma a legegyszerűbb metrika annak meghatározásához, hogy mennyi munka szükséges egy jelenet megjelenítéséhez.

Túllépés korlátozása

Nagy mértékű átfedés akkor fordul elő, ha több objektum jelenik meg, de nem jelenik meg a képernyőn, mivel egy elzárt objektum elrejti őket. Imagine egy olyan falra néz, amely mögött objektumok vannak. Az összes geometria feldolgozásra kerül, de csak az átlátszatlan falat kell renderelni, ami szükségtelen műveleteket eredményez.

Shader

A árnyékolók olyan kis programok, amelyek a GPU-n futnak, és két fontos lépést tesznek a renderelés során:

  1. Annak meghatározása, hogy mely csúcsokat kell rajzolni, és hol vannak a képernyőtérben (a Csúcspont árnyékoló)
    • A csúcspont-árnyékoló minden háló esetében csúcsonként lesz végrehajtva.
  2. Az egyes képpontok színének meghatározása (a képpontárnyékoló)
    • A képpontárnyékolót képpontonként hajtja végre, és a geometria a cél renderelési anyagmintára rendereli.

Az árnyékolók általában számos átalakítást és világítási számítást végeznek. Bár az összetett világítási modellek, árnyékok és egyéb műveletek fantasztikus eredményeket hozhatnak, ár is jár nekik. Az árnyékolókban kiszámított műveletek számának csökkentése jelentősen csökkentheti a GPU-hoz szükséges munkát keretenként.

Shader kódolási javaslatok
  • Ha lehetséges, használjon kétsoros szűrést
  • Kifejezések átrendezése a MAD belső metrikáinak használatával egy szorzás és egy hozzáadás egyidejű műveletéhez
  • A cpu-n a lehető legnagyobb mértékben számítsa ki az előszámítást, és adja át a konstansokat az anyagnak
  • A műveletek áthelyezésének előnyben részesítése a képpontárnyékolóról a csúcspont-árnyékolóra
    • Általában a csúcspontok száma sokkal kisebb, mint a képpontok száma (720p 921 600 képpont, 1080p 2 073 600 képpont stb.)

GPU-fázisok eltávolítása

Az utófeldolgozási hatások költségesek lehetnek, és növelhetik az alkalmazás kitöltési sebességét, beleértve az olyan aliasolási technikákat is, mint az MSAA. A HoloLens ajánlott kerülni ezeket a technikákat és további árnyékoló fázisokat, például a geometriát, a hajótestet és a számítási árnyékolókat.

Memóriajavaslatok

A túlzott memóriafoglalási és felszabadítási műveletek inkonzisztens teljesítményt, rögzített kereteket és egyéb káros viselkedést eredményezhetnek. A Unityben való fejlesztés során különösen fontos megérteni a memóriahasználattal kapcsolatos szempontokat, mivel a memóriakezelést a szemétgyűjtő vezérli.

Objektumkészletezés

Az objektumkészletezés egy népszerű technika, amely csökkenti az objektumok folyamatos lefoglalásának és felszabadításának költségeit. Ez egy nagy méretű, azonos objektumokból álló készlet lefoglalásával és az inaktív, rendelkezésre álló példányok újbóli használatával történik a készletből ahelyett, hogy az objektumok folyamatosan ívanak és megsemmisülnek az idő múlásával. Az objektumkészletek kiválóan használhatók olyan újrafelhasználható összetevőkhöz, amelyek változó élettartammal rendelkeznek az alkalmazások során.

Lásd még