Új hozzászólás Aktív témák

  • Abu85

    HÁZIGAZDA

    válasz Raymond #29346 üzenetére

    Most nagyrészt leírtad, amit én leírtam itt: [link] , [link] - ezekre nem reagálok, mert eleve másolata a hsz-eimnek a te hsz-ed ezen részei.

    A natív modellekre rátérve nem vagy képben arról, hogy a Nanite mit csinál. Amikor van egy nagy modelled, amit játékban való használatra nem készítettél fel, nincsen belőle kis részletességű verzió normal mappal, nincsenek LOD verziói, stb. ... akkor az a modell elképesztően nagy helyet foglal. Na most egy modellt mindenképpen be kell tölteni a memóriába, függetlenül attól, hogy annak egy részét majd úgyis kivágják a leképezés culling szakaszai. Tehát egyáltalán nem előnyös, olyan nagy modellekkel dolgozni, mert nagyon kevés fér majd bele a memóriába. A játékra felkészített verziók részben itt jelentenek nagy előnyt, mivel a háromszögszámuk nagyságrendekkel kisebb, a részletességet a normal map adja vissza, ami szintén nem egy nagy helyfoglaló, és ezeknek a kisebb modelleknek már a LOD-jai sem nagyok tárhelyigényben, így memóriahasználatban sem. Tehát ha valós idejű feldolgozásra felkészítve töltesz be egy modellt, akkor még az összes LOD-jával is nagyságrendekkel kevesebb memóriát használ, mintha betöltenéd az eredeti nagy részletességű modellt. Utóbbinál a LOD-ok szándékosan vannak mellőzve, mert azok is foglalnák a helyet, jó eséllyel még a legkisebb LOD szint is jóval több memóriát igényelni, mint a játékra átdolgozott modell maximális részletessége. Emiatt nem látod ezeket a natív részletességű modelleket egy játékban, még ha a mai GPU-k az új pipeline lehetőségeivel el is tudnának bánni olyan részletességgel, a memóriaigénye ezeknek a natív modelleknek olyan mértékű, hogy egy nagyon komoly részletességű modellre elmenne az egész memóriája egy mai tipikus PC-nek. Ez az oka annak, hogy a filmstúdiók a tartalomvizualizációhoz felszeletelik a magas részletességű tartalmat kisebb szeletekre, hogy beférjen a GPU-k fedélzeti memóriájába, és ezeket a kisebb szeleteket ellenőrzik. Ráadásul ezek professzionális GPU-k, nem szimpla gaming verziók kevés VRAM-mal.

    A Nanite abból a szempontból más, hogy a PS5-nek egy igen speciális képességét használja ki. Konkrétan az egész alkalmazás maga lesz a rendszermemória. Az SSD-n címzi magát a tartalmat, a hardver memóriavezérlője pedig folyamatosan töltögeti be onnan a 4 kB-os lapokat a memória cache-ként használt részébe. Ehhez kell az az elképesztően gyors SSD, hogy nagyon sok lapot lehessen rövid idő alatt kicserélni, és ráadásul ezzel a modellel töredezettség sincs, mert minden lap 4 kB-os. Ez hasonló modell, amit láthattunk a megatextúrázásnál, csak éppen nem a textúrákra, hanem a geometriára. A valóságban ugyanis az van, hogy a textúra összes texeljére, illetve a geometria összes háromszögére nincs szükség. Ezek egy része kell a feldolgozáshoz, pont az a része, ahonnan a mintavételek történnek, de minél nagyobb a részletesség, annál több lesz azoknak a texeleknek és háromszögeknek a száma, ahonnan mintavétel egy adott képkockához nem fog történni, vagyis az adott képkocka szintjén tök feleslegesen foglalták a helyet a memóriában. Ezekre reagál az Unreal Engine 5, és úgy dolgozik, hogy csak a szükséges adat legyen a memóriába gyorsítótárazva az SSD-ről, de ennek a hatékony kivitelezéséhez szüksége van a PS5 hardverére, mert ez a modell akkor tud igazán jól működni, ha a streamingnek van egy hardveresen asszisztált támogatása, amellyel megoldható, hogy 4 kB-os lapokat cseréljen a rendszer a memóriában, ez a finomszemcsés adatmenedzsmentje a konzolnak. Emiatt tud elbánni olyan részletességű modellekkel, normal map és LOD-ok nélkül amelyekkel korábban semmi más. Ebben persze segíti neki a primitive shader pipeline a PS5-ön.
    Durva szemcsézettségű adatmenedzsmenttel ugyan megvalósítható a dolog, de sokkal rosszabb lesz a kapott élmény, mert nehéz az egészet szoftveres szinten kezelni, így sokszor előfordulhat, hogy az adott modell vagy az adott textúraadat nem érkezik meg időben a memóriába. Ilyenkor az fog történni, hogy egy rendkívül alacsony részletességű modell lesz leszámolva, és hasonló lesz az élmény a Rage-nél ismert a textúra pop-upokhoz. Amint persze megjön a szükséges adat, akkor mehet a teljes modell. De ehhez is túl sok memória kell durva szemcsézettségű memóriamenedzsmenttel, mert maga a finom szemcsézettség felel azért, hogy a nagy részletesség tényleg csak minimális memóriaigénnyel rendelkezzen. Szimplán szoftveres formában küzdeni kell az allokációs stratégiával, esetlegesen defragmentálással (ha az allokációk mérete nem ugyanakkora, akkor elő fog fordulni egy ponton, hogy egy új allokáció már akkor sem fér be a memóriába, ha amúgy lenne benne annyi szabad hely, mert a szabad területek töredezetten vannak meg), és egy rakás tökre hátráltató tényezővel, miközben ezek PS5-ön pusztán azért nem is léteznek, mert 4 kB-os lapok másolgatása megy.

    Na most a fentiek tökre jól hangzanak, de a valóságban van egy gond. Hiába hozza ezt be az Unreal Engine 5, hiába tud a Nanite ennyire extrém részletességet kezelni, a modellek részletességének nagy részét ugyan nem kell majd betölteni a memóriába, csak azt amivel éppen számolsz, de tárolni kell az adatot. És a nagy részletesség ára a nagy tárhelyigény, már pedig ha elkezded ilyen modellekkel feltölteni a potenciálisan készülő játékodat, akkor gyorsan elérhető ám a 825 GB, ami a PS5 SSD-jének teljes kapacitása. Ilyen formában a Nanite képességei csak nagyon limitált formában használhatók, mert a szükséges tárhely, egyszerűen nem áll rendelkezésre. Gyakorlatilag annyi történt, hogy PS5-tel az Unreal Engine 5 megoldott egy viszonylag nagy problémát, amit valószínűleg imádnának a fejlesztők, mert ki ne vágyna arra, hogy közvetlenül sculpting után bevágj egy 20-30 millió poligonból álló modellt a motorba, de ez teremt egy másik problémát, nevezetesen azt, hogy ezeknek a modelleknek bezony kell a tárhely. Nem véletlen, hogy a demóban ugyanazt a modellt rakták ki egy csomószor [link], mert a Nanite és a PS5 bírja a terhelést rendesen, de ha mindegyik egy másik modell lenne, akkor kifogytak volna a tárhelyből.

    [ Szerkesztve ]

    Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.

Új hozzászólás Aktív témák