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

Ez a cikk a Mixed Reality-alkalmazás teljesítményének 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ég mellett fut. A 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 lengyel feladatnak.

Az egyes célplatformok teljesítménybeli keretsebesség-értékeit alább találja.

Platform Célkeret sebessége
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 Keretsebesség Unity-környezetben való mérésére és javítására vonatkozó tippekért javasoljuk, hogy olvassa el a Unity teljesítményjavaslatait ismertető cikket

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

Ha az alkalmazás alulteljesítő keretrátával 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 fő hely, ahol szűk keresztmetszetek fordulhatnak elő:

  1. Alkalmazásszál – CPU – Az alkalmazáslogikáért felel, beleértve a bemeneti adatok feldolgozását, az animációkat, a fizikát és más alkalmazáslogikát.
  2. Render szál – CPU-ról GPU-ra – Felelős a rajzhívások GPU-nak való elküldéséért. Amikor az alkalmazás megjelenít egy objektumot, például egy kockát vagy modellt, ez a szál kérést küld a GPU-nak a műveletek elvégzéséhez.
  3. GPU – Leggyakrabban az alkalmazás grafikus folyamatát kezeli a 3D adatok (modellek, textúrák stb.) képponttá alakításához. Végül egy 2D-s rendszerképet hoz létre az eszköz képernyőjén való küldéshez.

Keret élettartama

A HoloLens-alkalmazások általában 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 vegyes valóság alkalmazás teljesítményprofiljának és lehetséges szűk keresztmetszeteinek megértését.

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-ra vagy CPU-ra van-e kötve, csökkentheti a renderelési célkimenet felbontását. A kiszámítandó képpontok számának csökkentésével csökkentheti a GPU-terhelést. Az eszköz kisebb anyagmintára, majd felfelé mutat a végső kép megjelenítéséhez.

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

  1. Az alkalmazás keretsebessége nő, akkor valószínűleg GPU-kötött
  2. Az alkalmazás keretsebessé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 futtatókörnyezetben az XRSettings.renderViewportScale tulajdonságon keresztül. Az eszközön megjelenő végső kép rögzített felbontással rendelkezik. A platform mintát vesz az alacsonyabb felbontású kimenetből, hogy egy nagyobb felbontású képet hozzon létre a megjelenítéshez.

UnityEngine.XR.XRSettings.renderScale = 0.7f;

Az alkalmazás továbbfejleszté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

Keret GPU-n való renderelésekor az alkalmazásokat 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 által a memóriából elvégezhető olvasási és írási sebesség
    • 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 keretsebessé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 az alábbiakra való optimalizálást foglalja magában:

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

A kitöltési arány 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. Renderelendő/feldolgozandó objektumok száma
  2. Műveletek száma árnyékolónként
  3. A gpu-fázisok száma a végeredményhez (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 poligonszám a legegyszerűbb metrika, amely meghatározza, hogy mennyi munka szükséges a jelenet megjelenítéséhez.

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

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

Shader

A shaderek olyan kis programok, amelyek a GPU-n futnak, és két fontos lépést tesznek a renderelésben:

  1. Annak meghatározása, hogy mely csúcsokat kell rajzolni, és hol vannak a képernyőtérben (a Csúcspont árnyalata)
    • A csúcspontárnyékolót csúcsonként hajtja végre a rendszer minden háló esetében.
  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élmegjelenítési textúra felé jeleníti meg.

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, ára is van. 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
  • A MAD belső metrikáit használó kifejezések átrendezése a szorzás és a hozzáadás egyidejű végrehajtásához
  • 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-szakaszok eltávolítása

Az utófeldolgozási hatások költségesek lehetnek, és növelhetik az alkalmazás kitöltési arányát, beleértve az olyan élsimítási technikákat is, mint az MSAA. A HoloLens esetében javasoljuk, hogy kerülje 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, lefagyott kereteket és egyéb káros viselkedést eredményezhetnek. Különösen fontos megérteni a memóriahasználattal kapcsolatos szempontokat a Unityben való fejlesztés során, mivel a memóriakezelést a szemétgyűjtő szabályozza.

Objektumkészletezés

Az objektumkészletezés népszerű módszer az objektumok folyamatos lefoglalásának és felszabadításának költségének csökkentésére. 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 folyamatosan ívanálja és megsemmisíti az objektumokat 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 egy alkalmazás során.

Lásd még