Hirdetés

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

  • Abu85

    HÁZIGAZDA

    válasz b. #48 üzenetére

    Mi beszélünk róla. Csak nem érted, hogy mi az. Az SVOTI RT az nem SVOTI RT. Az SVOTI a Cryten voxel cone tracing global illumination eljárásának a neve. Ők total illuminationnek hívják, igazából édesmindegy a neve. Az SVOTI-nak ebben nincs igazán szerepe. Ebből csak az SVO az érdekes, mert ez az alap arra, hogy voxelizáld a jelenetet. Aztán ha már ez kész van, akkor ezt felhasználhatod például a global vagy total illuminationre, a név itt mindegy, az effekt ugyanaz. Viszont az SVO felhasználható arra is, hogy erre építsd fel az miss, closest hit és any hit shaderekre épülő sugárkövetést. Ahhoz, hogy ideig elérj, szükséged van egy traversal lépcsőre, ez sok fázisból áll, de a lényege nagyon leegyszerűsítve az, hogy amikor kilövöd a sugarakat, akkor azokat ne kelljen csekkolni az összes háromszögre vagy az összes voxelre, mert az kicsit kurvára időigényes. Emiatt felépítesz egy gyorsítóstruktúrát, amiben a modellek egyes elemeit egy tömbbe rendezed. Ekkor kapsz egy rakás háromdimenziós dobozt, kvázi téglalapot, és a BVH mélységétől függően, szépen le tudod tesztelgetni, hogy melyik dobozt metszi a sugár. Amelyiket nem, ott már a háromszögek vagy voxelek sem lényegesek, mert a dobozon nem megy át, így tuti, hogy azon belül nem talál el semmit. Na ez az a pont, ahol a DXR és a CryEngine másképp dolgozik. A DXR-nél ez a dobozolás a háromszögekre vonatkozik, míg a CryEngine esetében a voxelekre. A DXR ezt nem tudja támogatni, mert maga a grafikai futószalag, amit a DirectX 12 specifikál nem értelmezi azt, hogy mi az a voxel. Tehát bármennyire is sokszorosan hatékonyabb ez a traversal lépcső voxelekkel, DXR alatt nem alkalmazható, az aktuális specifikációkkal, ezért a DXR a nagyon rossz hatékonyságú háromszögekre van kényszerítve. Ezzel azt akarom megértetni veled, hogy bármi, minden, akármi ami megcsinálható DXR-ben, megcsinálható itt is, mert a sugárkövetés effektekre lebontott része a dolgoknak ugyanaz, amint megvan a sugárra vonatkozó intersection eredménye futhat rajta a miss, closest hit vagy any hit shader. Az egytelen különbség, hogy a CryEngine a traversal esetében egy voxeles megoldást használ, mert ez sokkal gyorsabb, bármelyik háromszöges megoldásnál, még a fixfunkciós hardvereknél is. Igen sajnos, ennyire rossz hatékonyságú a háromszöggel a sugárkövetés, de ugye a háromszögek eleve a raszteriáció miatt kellenek, a sugárkövetés támogat más felületeket is. Ezek azok a trükkök, amik miatt előfordulhat, hogy egy-egy offline render engine bár lényegében ugyanazt csinálja, a sebesség tekintetében nagyon-nagyon-nagy lehet a különbség.

    Amiért mérvadó, amit itt bemutattak az az, hogy maga az alap már ki van számolva a traversal során. Az, hogy innen a miss, closest hit és any hit shaderek tekintetében hány effektet írsz, gyakorlatilag mindegy. Működésben tehát különbözik a CryEngine a DXR-es megoldástól, de ha azt nézed, hogy végeredményben az a lényeg, hogy melyik háromszöget lövi át a sugár, akkor pontosan ugyanúgy megmondja a Crytek megoldása, ahogy a DXR is. Csak a Crytek rendszere gyorsabban és hatékonyabban megmondja ezt. És innentől már az egész csak effekt, felhasználód ezt az információt, hogy csinálj visszaverődést, árnyékokat, GI-t, AO-t, akármit. Ez innentől kezdve már az lebegőpontos ALU-kon fut. Amiért a Crytek csak visszaverődést csinált, annak az az oka, hogy ez az az effekt, ahol a sugárkövetésnek valós előnye van. Tehát nem csak abban látod a bekapcsolását, hogy egy számjeggyel kevesebb az fps, hanem a képen is meglátszik, hogy számol valamit a gép. Más effekt esetében nem feltétlenül van előnye a sugárkövetésnek, mert AO-ból alig van különbség egy jelenetszintű, vagy egy olyan multi-view megoldás között, amit a Crytek használ, GI dettó, ott eleve voxel cone tracinggel dolgozik a CryEngine. Tehát lehet, hogy ezeket meg lehetne írni RT-vel is, csak nem látnád az előnyét neki a képen, viszont sebességben kevesebb lenne, amit éreznél. Az árnyékok kérdése necces, mert ott azért lehet előnye az RT-nek, de a CryEngine pont az a motor, amely hihetetlenül jó ebből a szempontból, tehát bőven van esélye, hogy ott se látnál mást, csak az fps csökkenését. A visszaverődés viszont egy olyan dolog, ami nagyon nehezen oldható meg raszterizációval. A rough felületre talán lehetne valami trükk az SVO miatt, de specular szinten látszana, hogy nem az igazi. Az SSR-nek pedig megvannak a korlátjai, míg a reflection probe zabagép. Tehát specular visszaverődésre nem nagyon van más értelmes megoldás, mint az RT. Főleg azzal a sebességgel, ahogy a CryEngine csinálja.

    [ 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