Gyors OIT implementáción dolgozik az AMD

A hardverek fejlődésével és az új generációs konzolok érkezésével igen komoly igény alakult ki az OIT-re (Order Independent Transparency, azaz sorrendtől független átlátszóság), ami az egyik legfontosabb alapkőnek számít a számítógépes grafika további fejlődése szempontjából. A manapság jellemzően alkalmazott ODT-től (Order Dependent Transparency, azaz sorrendtől függő átlátszóság) már igencsak búcsúznának a fejlesztők, mivel rengeteg korlátot szab a megjelenítés terén. A mai programok grafikai dizájnját alapvetően úgy építik fel, hogy az ODT szabta határokon belül jól működjön, ezzel viszont a művészek korlátok között dolgoznak, így rengeteg trükköt kell alkalmazni, hogy elfogadható eredményt kapjon a felhasználó, de még ez sem lesz mentes a leképzési hibáktól.

Az új generációs konzolok ebből a szempontból úttörő megoldások lesznek, mivel komoly tudást és számítási teljesítményt sikerült beléjük préselni. Ebből a szempontból nem meglepő, hogy az új generációs konzolokra készülő játékok jó része OIT-t használ majd az átlátszó felületek tökéletes leképzése érdekében. Emellett természetesen a PC-s port használhat még ODT-t is, de ez esetlegesen komoly limitációt jelenthet a fejlesztőknek, így PC-n is érdemes átállni az OIT-re. Probléma azonban, hogy az egyetlen szabványos megoldás erre a gondra az AMD, nagyjából három és fél éve kidolgozott OIT implementációja. Ez ugyan jól muzsikál a Tomb Raider TressFX effektje alatt, és elvben megfelel a fejlesztőknek is, de igen nagy a teljesítményigénye.

Az OIT-re az eddigi legjobb megoldás az Intel PixelSync technikája, mely minőségben hozza azt, amire az AMD korábbi implementációja képes, viszont sokkal gyorsabb feldolgozás mellett. Ezzel azonban az a probléma, hogy csak a Haswell kódnevű lapka IGP-jén érhető el, ami a komolyabb igényekkel rendelkező játékosok számára nem alternatíva. Az AMD jelenleg egy olyan modernizált OIT implementáción dolgozik, mely sebességben jelentős előrelépés az aktuális kódhoz képest, és továbbra is szabványos, vagyis lehetőleg minden minimum DirectX 11-et kezelő grafikus processzoron működőképes legyen.

Leképzés ODT-vel. Leképzés OIT-vel.
Leképzés ODT és OIT mellett. Megfelelő trükkök és odafigyelés nélkül az ODT-vel készült eredmény teljesen hibás. [+]

A vállalat az alapok tekintetében az Intel PixelSync megoldását másolja, ami tulajdonképpen egy olyan kiterjesztés, mely gondoskodik arról, hogy a folyamatok megfelelő sorrendben érjék el az UAV-ket. Az AMD szerint erre a DirectX API-n belül is van lehetőség, méghozzá mutex-alapú zárolási sémával. A mutex (mutual exclusion, azaz kölcsönös kizárás) ismert funkció a programozók számára, hiszen biztosítja, hogy több versengő folyamat közül csak az egyik férhessen hozzá az adott erőforráshoz. Ezzel elvben biztosítható a folyamatok megfelelő sorrendű hozzáférése az UAV-khez, de a gyakorlatban ennél problémásabb a helyzet.

A DirectX API ugyan lehetőséget ad a mutex-alapú zárolási séma használatára, de ez nem biztonságos, ugyanis a shadereket nem lehet várakoztatni, vagy az erőforrásokat elzárni. A DirectX és az OpenGL API is kizárólag olyan implementációkat ír elő, ahol minden shader akkor futhat, amikor arra lehetőség adódik, és csak a felfüggesztésükre van mód, ha esetleg egy adatra várnak, így ilyenkor más shadereket futtathatnak a hardverek, amíg a szükséges adat meg nem érkezik. Persze az API megcsinálja azt, amit a programozó kér, viszont egy mutex-alapú zárolási séma használatakor nincs arra garancia, hogy minden egyes hardveren tökéletes lesz a működés.

Az érintett cégek azonban rá vannak kényszerítve, hogy szabványos megoldást találjanak az OIT-re, hiszen ez a konzolokon abszolút megoldható, ráadásul kvázi sebességvesztés nélkül. Persze az AMD és az NVIDIA is képes lenne egyedi kiterjesztésekkel specifikus és egyben gyors OIT implementációkra, de nem ezt akarják a fejlesztők és a piac sem, hiszen ezek használata legalább három algoritmus implementálását igényli egy PC-s port esetében, amire egyszerűen se pénz, se idő, se humánerőforrás. Az AMD készülő és szabványos mutex-alapú OIT implementációjához minden bizonnyal igen komoly driveres optimalizálás szükséges majd, és pár hardveren az sem biztos, hogy egyáltalán működni fog, de ez az első lépés afelé, hogy végre vállalható sebességű és igazán szabványos OIT-vel érkezzenek az új generációs játékok, ezzel igazodva a hamarosan befutó konzolokhoz.

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés