A játékok jövője: DirectX 10

Az ATI Technologies csütörtökön felvázolta a szaksajtó számára a DirectX 10 alkalmazásprogramozási interfészben (API) rejlő lehetőségeket, illetve ezzel kapcsolatban kitértek az egységesített shaderekből (unified shader) álló mikroarchitektúra jellemzőire is.

A DirectX 10 szorosan a Windows Vistával együtt érkezik. Első nagy előnye, hogy az API és a meghajtó/grafikus kártya között sokkal kevesebb vezérlési tevékenység zajlik, így több erőforrás használható ki a tényleges számításokra. Míg a DirectX 9-nél a vezérléssel kapcsolatos és a hasznos műveletekre fordított idő aránya nagyjából 40/60 százalék, addig a DirectX 10-ben ez 20/80 százalékra javul. Igazából ez nem is a DirectX 10-nek köszönhető, hanem a Vista újfajta API/driver-kezelésére vezethető vissza, vagyis az NVIDIA videokártyáinál is javul majd a hasznos műveletek időaránya.

A DirectX 10 fontos újítása, hogy a vertex shader (VS) és pixel shader (PS) számolók közé beékelődik egy geometry shadernek (GS) nevezett egység, így a VS–PS útvonal VS–GS–PS-re módosul. A GS vertexcsoportokkal, jellemzően geometriai primitívekkel tud dolgozni, a testek animálásában vesz részt. Korábbam a CPU építette fel az animációhoz szükséges geometriát (csontvázat), kiszámolta a fizikai kölcsönhatásokat, és ez alapján küldte a grafikus processzornak a vertexeket, illetve egyszerűbb köd vagy duplikációs adatokat (például egy jelenetben többször használt vertexcsoportokat, például fákat – ezt nevezik instancingnek). A VS ebből megépítette a vázat, a PS pedig árnyékolta, színezte stb.

Az eljárás most úgy módosul, hogy a CPU a geometriai modelleket és az animációs paramétereket (fizikát, pozíciókat stb.) is elküldi a GPU-nak. A VS összerakja az objektumokat, majd továbbítja a GS-nek, amely összerendezi a jelenetet, eltolja, kölcsönhatásba állítja, transzformálja az objektumokat a fizikai adatok alapján, azután visszaadja a VS-nek (esetleg mindjárt továbbítja a PS-nek) az eredményt. A VS ismét rendbeteszi a vertexeket, kiüti azokat, amelyek nem kellenek, nem látszanak, és ha nincs szükség újabb ciklusokra, akkor elküldi a PS-nek, amely ugyanúgy számol, mint eddig.

A DirectX 10 modell lehetővé teszi az egységesített shaderes felépítést. Amint a fenti képen látható, már most is előfordul, hogy a dedikált VS és PS számolóegységeket nem sikerül egyformán kihasználni, így az egyikben szabad kapacitás hever parlagon, míg a másik éppen szűknek bizonyuló erőforrásaival fékezi a munkát. A kockázatot csak fokozza egy harmadik számolóegységtípus bevezetése, így bár a DirectX 10 nem írja elő kötelezően, ésszerűnek tűnik, hogy a vertex-, pixel- és geometriai számításokat ugyanazok a számolóegységek végezzék.

Ez egy nagy, egyforma matematikai számolókból álló tömböt jelent, amit könnyű megtervezni, gyártani és a hibás egységeket kikapcsolni belőle. Ezt a számolótömböt egy arbiter irányítja, és kell a képletbe még valami nagyon jól szervezhető regisztertömb. Ez utóbbi azért fontos, mert a DirectX 9-cel ellentétben újra előtérbe kerülnek a textúraműveletek. A korábbi API-nál a textúraolvasás nem kedvelt művelet volt, mert egy nagyságrenddel lassabb volt a számolásnál, hiszen nem regiszterben, hanem a sokkal lassabb memóriában voltak a textúrák. Most valószínűleg sok textúra(szerűség) bekerül a nagy regisztertömbbe, és így gyorsan el lehet érni őket. A VS–GS–PS kommunikációt is ez támogatja; az egyik beleteszi, a másik kiolvassa a szükséges adatokat.

Az ATI előadója néhány érdekességet is elhintett, utalt például arra, hogy két eltérő (akár DX9-es és DX10-es) videokártya is összeköthető lesz – az egyik kezelheti a fizikát, a másik pedig a grafikai számításokat. Azzal kapcsolatban nem kívánt nyilatkozni, hogy lesz-e fizikai API a DirectX-ben. Egyelőre nincs, de a későbbiekben – ahogy erről a közelmúltban több forrásban olvashattunk – lehet, sőt akár a Havok is készítheti. Nem kizárható, tesszük hozzá, hogy egy SM3.0-alapokra helyezett fizikai API (mint amilyen a Havoké) része lehet majd a DirectX 10-nek, így fizikai gyorsító (PPU) gyanánt elvileg bármilyen DirectX 9-es (SM3.0-s) grafikus processzort munkába lehetne állítani – venni egy új kártyát, a régit pedig megtartani fizikát számolni.

Ami hátrány, hogy DirectX 9-es videokártyával gyakorlatilag nem lehet emulálni a DirectX 10-et, ez pedig alaposan lelassíthatja az új API térhódítását. Az ATI hardverújdonságaival kapcsolatban az előadó azt mondta, hogy a DirectX 10-es, unified shaderes megoldáshoz új architektúra kell, amiből arra következtethetünk, hogy az év második felében az ATI egy olyan újdonsággal áll elő, ami bizonyos tekintetben nagyon hasonlít majd az Xbox 360 grafikus vezérlőjéhez.

rudi, janpotocki

Azóta történt

Előzmények

Hirdetés