Keresés

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

  • M0ng00se

    őstag

    LOGOUT blog

    válasz Abu85 #10 üzenetére

    bf5-ben pályánként sokat kell várni hogy cache-seljen dx12 módban, amíg ezzel nincs kész addig stutter a jutalom
    ahhoz meg keveset játszom, hogy minden pályán meglegyenek ezek, úgyhogy maradt a dx11 :U

  • #88750080

    törölt tag

    válasz Abu85 #10 üzenetére

    Nem kételkedem abban, amit mondasz, bár a fejlesztők problémáját nem igazán értem.
    A "random" shaderfordítás dx11-ben kb. azt jelenti, hogy a DXBC shaderkódból a driver "valahol" saját GPU-kódot fordít, jellemzően akkor, amikor a háttérszálon az aktuális Draw-híváshoz összerakja a teljes pipeline-t. Ez nagy shadereknél időigényes lehet, akadozásokat okozhat, de pont ezért létezik idétlen idők óta a shader cache. Még a fordítás előtt lehet a pipeline-ból egy hash-t számolni, és ha megvan valahol a cache-ben, akkor további teendő nincs is, csak fel kell használni. Ezt közvetlenül valóban nem tudja befolyásolni az API-t hajtó játék, ellentétben a dx12-vel, ahol neki kell átvennie a driver szerepét, és kézzel összerakni mindent. Ellenben ha nagyon kell, dx11-ben is ki lehet kényszeríteni a korai fordítást, induláskor az összes lehetséges általunk használt pipeline-verzióval rajzolunk valami kamu dolgot egy képernyőn kívüli területre, és onnan kezdve azok be is kerülnek a külső és belső cache-be. A dx9-es ATI demók pl. mind ezt csinálják, induláskor egy külön bitkolbász jelzi, hogy holt tart a "Warming caches" folyamat.
    (zárójelben: egyébként ez a dx11-es probléma talán dx12-ben is megvan, mert a gyors fordítás érdekében a driver tud egy optimalizálatlan shader verziót fordítani, a végleges legyártását pedig kiszervezi egy háttérszálra, majd suttyomban kicseréli arra, ha végzett vele. Ezt kb. csak letiltani lehet vmi flaggel inicializáláskor, és ezt is csak arra találták ki, hogy ha valaki pontos performance-méréseket akar végezni, akkor ez ne zavarjon be)

    A shaderfordításos probléma inkább ott szokott jelentkezni, amikor egy játék menet közben fordítgat HLSL-ből DXBC-re (az amúgy is lassabb mint kódról kódra), mert olyan temérdek variánst képes használni, de ennek nincs köze az API-hoz. A Gothic 3 volt ilyen, lépten-nyomon akadozott szó szerint minden fűszálnál. Na ezekre tényleg nem marad nagyon más megoldás, mint első induláskor 5 perces malmozás keretében előre lefordítani az összeset, és egy lokális fájl-cache-ben eltárolni őket.

  • M0ng00se

    őstag

    LOGOUT blog

    válasz Abu85 #8 üzenetére

    elex2 dx11-gyes api-val jött ki de csak én játszok ilyen nyomiságokkal :DDD (aztán erre is jött ki dx12 patch)
    BF5 DX12 módját próbáltam az mondjuk borzalom

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