Jövőbe tekintő sorozat 16. rész: Mit tud majd a DirectX 11?
- Írta: Chocho
- 2009. február 14.
Link másolása
Akármilyen géppel vagy konzollal rendelkezzünk is, elvárjuk, hogy évről évre szebb játékok lássanak napvilágot. Egyre divatosabban használjuk a "shader" és "szűrés" kifejezéseket, minden eltelt nappal kritikusabbá válunk, és csak reméljük, hogy lassan eljön a nap, amikor már meg se lehet különböztetni a valóságot a játéktól. De vajon ez mikor következik be?
Mielőtt még elmerülnénk a DirectX 11 mélységeiben, nem árt egy kis technikaóra, hogy könnyebben érthető legyen, miért is várunk olyan sokat a Microsoft legfrissebb üdvöskéjétől. A videokártyák grafikus processzorai (GPU-i) abban különböznek a számítógép agyának is nevezett processzoroktól (CPU-któl), hogy míg utóbbiakat már évek óta szigorú szabványok alapján kell felépíteni, addig előbbiekre mindez nem igaz. Akármilyen architektúrát alkalmazhatunk, a lehetőségek határa a csillagos ég. Ahhoz viszont, hogy mindez működjön, szükség van egy alkalmazási felületre (API-ra), ami bármilyen videokártyát képes felismerni, s mellyel kommunikálva annak meghajtó programja kihasználhatja az eszközben rejlő lehetőségeket. Ez az API tehát létfontosságú a gyors és mindenki számára elérhető 3D-s grafika kiszámításában. Jelenleg két uralkodó típus osztja meg egymással a piacot. Az egyik az OpenGL, melyet az egyszeri játékosok főként az id FPS-eiből ismerhetnek (az összes teljesen 3D-s id motor arra épült), a másik pedig a tortából jóval nagyobb szeletet kivágó DirectX.
Mivel utóbbi nem szorul különösebb bemutatásra, legyen elég annyi, hogy ez manapság a legelterjedtebb platform. A forradalmi 8.1 után (Az übergéniusz, John Carmack szerint se készült azóta innovatívabb felület.) megérkezett a 9, mely bár koránt sem volt akkora durranás, mégis átvette a korábban uralkodó 7 helyét a játékvilágban. A DirectX 10-re a Windows Vista megjelenéséig várnunk kellett, ám mikor végre kijött, nagyon megosztotta a közönséget. Kihasználni a mai napig nem tudta senki, holott lényege nem is a grafikai tupír, hanem a programozást leegyszerűsítendő felépítésében rejlett. Ennek ellenére még most is a DirectX 9 a vezető, s még egyetlen olyan játék sem látott napvilágot, mely kizárólag a DirectX 10-re épült volna. A Microsoft látva a kvázi sikertelenségét, nem is oly rég bejelentette API-ja 11. generációját, ami a 10-hez hasonlóan most is egy új operációs rendszer keretében érkezik majd (Windows 7). De vajon jó lesz-e ez nekünk? Szükségünk van-e még egy kihasználatlan felületre, avagy komoly forradalom készül? Bemutatómban igyekszem közérthetően megismertetni a DirectX 11 legfontosabb tulajdonságait és újdonságait.
Szebb jövőt
A DirectX 10 legnagyobb buktatói pont az őt teremtő cég ostobaságaiból fakadtak. Csak és kizárólag Windows Vista operációs rendszer mellett volt elérhető, egyetlen játék sem használta ki, a driverek nem támogatták rendesen, és a tetejébe még a beígért Flight Simulator patch sem érkezett meg időben. Szerencsére az óriás tanult a hibáiból, így a DX 11 Vista alatt is elérhető lesz, jóval nagyobb táborra szert téve már rögtön a megjelenésekor. Mindez persze mit sem érne, ha nem lehetne rendesen programot írni rá, de a birtokunkban lévő eddigi információk és a novemberben elérhetővé tett DirectX SDK DX 11-et is tartalmazó elemei kellően meggyőzőek. A legnagyobb előnye a DX 11-nek a DX 10-zel szemben, hogy míg utóbbi egy abszolút új irányba terelt fejlesztés volt, addig a 11 nagyon sok elemében hasonlít a DX 10-hez.
Ahhoz, hogy ezt megértsük, tudnunk kell, hogy is működik egy átlagos API. Legfontosabb feladata természetesen nem más, mint megmondani a hardvernek, hogyan számolja ki a 3D-s világ szintén 3D-s elemeit és miként rajzolja ki őket a képernyőre. Ezt a folyamatot hívjuk pipeline-nak. A DirectX 10 sok forradalmi lépést tett a dolgok egyszerűsítése érdekében, s utódja mindezeket egy az egyben át fogja venni. Amiben mégis más lesz, az a vertex számítások után beiktatott három új tesszellációs lépcsőfok. A tesszellátor feladata a térgeometriai formák apró elemekre bontása, hogy valami bonyolultabb épülhessen fel belőlük, alapanyagot, azaz számítási kapacitást spórolva ezzel. Továbbá megjelenik még a Compute Shadernek nevezett, minden tekintetben forradalmi eljárás, mely lehetővé teszi a fejlesztők számára, hogy magát az API-t megkerülve sajtoljanak ki extra erőforrásokat a GPU-ból. Ennek részletezésébe most nem mennék bele, de mindez magyarra lefordítva annyit tesz, hogy sokkal kevesebb munkával jóval nagyobb teljesítmény érhető el a DirectX 11 használata közben, egyre közelebb hozva a valóságos grafika álmának megvalósulását.
Joggal tehetjük fel a kérdést, hogy miért is jó nekünk mindez, ha olyan 70-30%-os arányban még mindig a DirectX 10.1-et kapjuk meg új köntösben? A válasz egy üzletileg kétségkívül zseniális ötletben rejlik. A 11-es Microsoft API megjelenésével nem csak az új csúcskártyák tulajdonosai jutnak előnyökhöz, hanem a mostani, DX 10.1-es VGA-k felhasználói is! Köszönhetően a 11 operációs rendszerhez és driverekhez szorosan kötődő programozási hátterének, megfelelő támogatással a mostani kártyák teljesítménye is nő. A legszebb az egészben, hogy ez még a meghajtókat programozó csapatoktól sem kíván túl nagy megerőltetést, mert a két platform közti átjárásnak hála pofonegyszerű lesz 10-ről 11-re, vagy épp fordítva portolni. Aki tehát nemrégiben vette meg HD4870 X2-esét, nem kell elkeseredjen, mert jó ideig szórakozhat még vele, különösebb kompromisszumok nélkül is. Meg kell még jegyezni, hogy a DX 11 a 10-től eltérően az összes régebbi kártyával együttműködik majd.
Nem csak gyorsabb, sokkal szebb is!
Ugyan a több szálon futó (angolul csak multi-threaded) programozás lehetősége már évtizedek óta adott, a fejlesztők csak nemrégiben kerültek vele konkrét kapcsolatba, hála a többmagos processzoroknak. A Microsoft felismerte az ebben rejlő lehetőségeket, s most végre úgy tűnik, élnek is velük. A DX 11 nem csak a grafikus engine több szálra való installálását támogatja, de maga a játék belső motorja, forráskódja is profitálhat belőle. Mi több, ez működik majd DirectX 10-zel felszerelt, de DX 11-et telepített gépeken is, noha elképzelhető, hogy egyes esetekben a gyorsulás helyett lassulást eredményez. Manapság még nem nagyon létezik olyan motor, ami komolyan szükségessé tenné ezt a felhasználási módot, de a jövő megpróbáltatásai (CryEngine 3.0, vagy a már régóta készülő Unreal Engine 4.0) napról napra közelebb vannak, így nem árt a felkészülés.
Ha pedig már a jövő, akkor új shaderek. A Microsoft's High Level Shader Language (azaz HLSL) a DirectX 11-gyel az 5.0-ás verziószámhoz érkezik. Mivel a HLSL felépítése mindig emlékeztetett a C programnyelvére, már épp ideje volt az osztályok és interfészek beimplantálásának. Akik egy kicsit is ismerik a programozást, tudják, hogy milyen nehéz nagy adategységekkel dolgozni, ha nincs objektumorientált háttér. Ez a helyzet a mai játékok shaderigényeivel is. A kódsorok nagyok, újra és újra be kell illeszteni őket, ami lassítja a motort és elnyújtja a fejlesztés fázisait. Az új megoldásnak hála viszont minden egyes fontosabb shader leírható lesz egy osztályban, mely később bármikor meghívhatóvá válik a forrásból. Ezzel együttvéve a mutatókat is száműzik a nyelvből, így a memória sem kap felesleges terhelést.
Végszó
Ugyan sok dologról nem ejtettem szót, és lenne még bőven írnivaló a DirectX 11-ről, de szándékosan fogtam vissza magam. Egyrészről már így is picit túl technokrata lett a megközelítés, továbbá pedig úgyis csak az elméletek és elképzelések vizein eveznénk, mert ettől fogva az ismereteink már nem mind bizonyítottak. Nincs tehát jobb dolgunk, mint várni, hogy a Windows 7 elvileg jövő év eleji premierjekor az új API berobbanjon a köztudatba. Ami viszont mindenképp biztos, az a DX 11 innovációja. Ilyet már a 8.1 óta várunk, s ha csak nem rontanak el valamit nagyon a Microsoft fejlesztői, nem is fogunk csalódni. Csak jelenjen már meg a Crysis 2, hogy láthassak egy multi-threaded dzsungelt!
Mivel utóbbi nem szorul különösebb bemutatásra, legyen elég annyi, hogy ez manapság a legelterjedtebb platform. A forradalmi 8.1 után (Az übergéniusz, John Carmack szerint se készült azóta innovatívabb felület.) megérkezett a 9, mely bár koránt sem volt akkora durranás, mégis átvette a korábban uralkodó 7 helyét a játékvilágban. A DirectX 10-re a Windows Vista megjelenéséig várnunk kellett, ám mikor végre kijött, nagyon megosztotta a közönséget. Kihasználni a mai napig nem tudta senki, holott lényege nem is a grafikai tupír, hanem a programozást leegyszerűsítendő felépítésében rejlett. Ennek ellenére még most is a DirectX 9 a vezető, s még egyetlen olyan játék sem látott napvilágot, mely kizárólag a DirectX 10-re épült volna. A Microsoft látva a kvázi sikertelenségét, nem is oly rég bejelentette API-ja 11. generációját, ami a 10-hez hasonlóan most is egy új operációs rendszer keretében érkezik majd (Windows 7). De vajon jó lesz-e ez nekünk? Szükségünk van-e még egy kihasználatlan felületre, avagy komoly forradalom készül? Bemutatómban igyekszem közérthetően megismertetni a DirectX 11 legfontosabb tulajdonságait és újdonságait.
Szebb jövőt
A DirectX 10 legnagyobb buktatói pont az őt teremtő cég ostobaságaiból fakadtak. Csak és kizárólag Windows Vista operációs rendszer mellett volt elérhető, egyetlen játék sem használta ki, a driverek nem támogatták rendesen, és a tetejébe még a beígért Flight Simulator patch sem érkezett meg időben. Szerencsére az óriás tanult a hibáiból, így a DX 11 Vista alatt is elérhető lesz, jóval nagyobb táborra szert téve már rögtön a megjelenésekor. Mindez persze mit sem érne, ha nem lehetne rendesen programot írni rá, de a birtokunkban lévő eddigi információk és a novemberben elérhetővé tett DirectX SDK DX 11-et is tartalmazó elemei kellően meggyőzőek. A legnagyobb előnye a DX 11-nek a DX 10-zel szemben, hogy míg utóbbi egy abszolút új irányba terelt fejlesztés volt, addig a 11 nagyon sok elemében hasonlít a DX 10-hez.
Ahhoz, hogy ezt megértsük, tudnunk kell, hogy is működik egy átlagos API. Legfontosabb feladata természetesen nem más, mint megmondani a hardvernek, hogyan számolja ki a 3D-s világ szintén 3D-s elemeit és miként rajzolja ki őket a képernyőre. Ezt a folyamatot hívjuk pipeline-nak. A DirectX 10 sok forradalmi lépést tett a dolgok egyszerűsítése érdekében, s utódja mindezeket egy az egyben át fogja venni. Amiben mégis más lesz, az a vertex számítások után beiktatott három új tesszellációs lépcsőfok. A tesszellátor feladata a térgeometriai formák apró elemekre bontása, hogy valami bonyolultabb épülhessen fel belőlük, alapanyagot, azaz számítási kapacitást spórolva ezzel. Továbbá megjelenik még a Compute Shadernek nevezett, minden tekintetben forradalmi eljárás, mely lehetővé teszi a fejlesztők számára, hogy magát az API-t megkerülve sajtoljanak ki extra erőforrásokat a GPU-ból. Ennek részletezésébe most nem mennék bele, de mindez magyarra lefordítva annyit tesz, hogy sokkal kevesebb munkával jóval nagyobb teljesítmény érhető el a DirectX 11 használata közben, egyre közelebb hozva a valóságos grafika álmának megvalósulását.
Joggal tehetjük fel a kérdést, hogy miért is jó nekünk mindez, ha olyan 70-30%-os arányban még mindig a DirectX 10.1-et kapjuk meg új köntösben? A válasz egy üzletileg kétségkívül zseniális ötletben rejlik. A 11-es Microsoft API megjelenésével nem csak az új csúcskártyák tulajdonosai jutnak előnyökhöz, hanem a mostani, DX 10.1-es VGA-k felhasználói is! Köszönhetően a 11 operációs rendszerhez és driverekhez szorosan kötődő programozási hátterének, megfelelő támogatással a mostani kártyák teljesítménye is nő. A legszebb az egészben, hogy ez még a meghajtókat programozó csapatoktól sem kíván túl nagy megerőltetést, mert a két platform közti átjárásnak hála pofonegyszerű lesz 10-ről 11-re, vagy épp fordítva portolni. Aki tehát nemrégiben vette meg HD4870 X2-esét, nem kell elkeseredjen, mert jó ideig szórakozhat még vele, különösebb kompromisszumok nélkül is. Meg kell még jegyezni, hogy a DX 11 a 10-től eltérően az összes régebbi kártyával együttműködik majd.
Nem csak gyorsabb, sokkal szebb is!
Ugyan a több szálon futó (angolul csak multi-threaded) programozás lehetősége már évtizedek óta adott, a fejlesztők csak nemrégiben kerültek vele konkrét kapcsolatba, hála a többmagos processzoroknak. A Microsoft felismerte az ebben rejlő lehetőségeket, s most végre úgy tűnik, élnek is velük. A DX 11 nem csak a grafikus engine több szálra való installálását támogatja, de maga a játék belső motorja, forráskódja is profitálhat belőle. Mi több, ez működik majd DirectX 10-zel felszerelt, de DX 11-et telepített gépeken is, noha elképzelhető, hogy egyes esetekben a gyorsulás helyett lassulást eredményez. Manapság még nem nagyon létezik olyan motor, ami komolyan szükségessé tenné ezt a felhasználási módot, de a jövő megpróbáltatásai (CryEngine 3.0, vagy a már régóta készülő Unreal Engine 4.0) napról napra közelebb vannak, így nem árt a felkészülés.
Ha pedig már a jövő, akkor új shaderek. A Microsoft's High Level Shader Language (azaz HLSL) a DirectX 11-gyel az 5.0-ás verziószámhoz érkezik. Mivel a HLSL felépítése mindig emlékeztetett a C programnyelvére, már épp ideje volt az osztályok és interfészek beimplantálásának. Akik egy kicsit is ismerik a programozást, tudják, hogy milyen nehéz nagy adategységekkel dolgozni, ha nincs objektumorientált háttér. Ez a helyzet a mai játékok shaderigényeivel is. A kódsorok nagyok, újra és újra be kell illeszteni őket, ami lassítja a motort és elnyújtja a fejlesztés fázisait. Az új megoldásnak hála viszont minden egyes fontosabb shader leírható lesz egy osztályban, mely később bármikor meghívhatóvá válik a forrásból. Ezzel együttvéve a mutatókat is száműzik a nyelvből, így a memória sem kap felesleges terhelést.
Végszó
Ugyan sok dologról nem ejtettem szót, és lenne még bőven írnivaló a DirectX 11-ről, de szándékosan fogtam vissza magam. Egyrészről már így is picit túl technokrata lett a megközelítés, továbbá pedig úgyis csak az elméletek és elképzelések vizein eveznénk, mert ettől fogva az ismereteink már nem mind bizonyítottak. Nincs tehát jobb dolgunk, mint várni, hogy a Windows 7 elvileg jövő év eleji premierjekor az új API berobbanjon a köztudatba. Ami viszont mindenképp biztos, az a DX 11 innovációja. Ilyet már a 8.1 óta várunk, s ha csak nem rontanak el valamit nagyon a Microsoft fejlesztői, nem is fogunk csalódni. Csak jelenjen már meg a Crysis 2, hogy láthassak egy multi-threaded dzsungelt!
Kapcsolódó cikkek
Már láttam ezt a kérdést válaszként egy külföldi oldalon.
"As people here say, games on consoles use a heck of a lot less ram than the same game on a pc."
lefordítom:"Ahogy itt az emberek is mondják,a konzolon a játékok jóval kevesebb ramot használnak mint a pc-n."
És most ha nem bánod más válaszával élnék:
"Nem,az nem így működik.A konzol portok PC-n több RAM-ot használnak,mert van,és akkor miért ne használnák ki?Nincs értelme hogy egy játék 256Mb RAM-ot használjon ha 1024Mb-ot is tud használni lerövidítve ezzel a töltési időt,és akadásmentesen tudjon játszani egy játékot.Szerintem meglehetne oldani azt hogy a konzolos portok PC-n ugyanannyi RAM-ot használjanak mint a konzolok,de akkor több gigabyte-nyi RAM használatlan maradna a gépedben."
Meg ugye az is közrejátszik a legtöbb portnál hogy tuningolva van a PC-s verzió.(Gears of War,GTAIV,DMC4,Lost Planet)
Igazad van, még nem foglalkozom fejlesztőként, csak tanulom egyenlőre, ha minden jól megy 1 év még, most jelenleg Crytektől jönnek szakemberek oktatni fél évig, ha tudok rákérdezek és persze ha válaszolnak a kérdésemre privibe folytatjuk, ha szeretnéd
És kettő:Ram hiány miatt lenne gond.Tudod miért?Mert a konzolok nem tudják azt a nagy teret megjeleníteni ami ott szerepel.Crysis körülbelül 1500Mb RAM-ot tölt be akkor ha csak kicsit akciódúsabb lesz a játék(Nem számítva a Vramot amivel a kártya rendelkezik)Akárhogy is nézzük nincsen elég RAM a konzolokban amik elbírnának a Crysis óriási pályáival,és mert túl sok dolog folyik a háttérben egyszerre.Drasztikusan csökkenteni kéne a látótávolságot,a LOD-ot,a növényzetet,a polygonszámot,és butítani kéne a shadereken,és meg kéne szabadulni a pusztítható tárgyak többségétől.Nem kétséges hogy elfutna a Crysis a konzolokon,de nem eredeti minőségben.Így már érted?Ha ezektől meg kéne szabadulniuk egy teljesen másik játékot kéne már készíteniük.Főleg ha a pályákba is bele kell piszkálniuk.A távolban lévő növényekre is hat a szél,a gép folyamatosan kalkulációkat végez,és a távolban látott dolgok sem "díszek" hanem azokat is betölti a gép.
Ettől nem várhattok egy Killzone csodát mivel teljesen más a deffered rendering és a CryEngine 2.Sőt úgy tudom hogy mikor a Crysis készült nem is volt nagyon elterjedt a DR-féle motor.
Az első link egy nagy marketing fogás, mert ezek a pc-s konfiguráció minimumm gépigénye és ugye nézzük a PS2-t amiben 32 MB ram volt összesen, és az arról áltportolt játékoknak pc-bn kellett 256MB is...
Csődbe is ment volna 2007-ben a PC-s piac ha bejelntik, hogy röhögve elfutna konzolokon is. Meg akkoriban a PC nagyon le volt maradva HW-rileg a konzoloktól, mondhat akárki akármit is
Nem hazudok elhihetitek, erre meg is esküszöm, hogy ott voltam és személyesn a két fülemmel hallottam.
Max csak a fizika miatt lenne gond, de azzal sem lesz mert az eddigi megjelent játékok közűl a Star Wars The Force Unleashednak van a legdurvább fizikai motorja, szám szerint 3 dübörög alatta, ami egy programozói bravúr.
Én azt mondom, hogy 80-90%-ban zsír ugyanaz lenne mint PC-n.
Személyes Kérdés Dcrysis02-hez:
Véletlenűl nem foglalkozol játékfejlesztéssel vagy valami hasonló dologgal?
28:Szerinted miért linkeltem be?Csak azok tudják mi futott akik bennt is voltak.Sajnos nem árulhatják el mi volt.De kétlem hogy a Crysis lett volna.Azt eltudom képzelni hogy egy tech-demót összerittyentettek az alkalomra de ennyi.
A te "nem árulhatom el,ki,mikor,miről,miért,hogyan" szövegedet meg őszintén nagy BS-nek találom.Nem kétséges hogy lesz valamikor konzolon Crysis,de most még kétlem hogy itt lenne annak az ideje.Na,de az első kérdésemre válaszoljál légyszíves.
Ha meg Isten úgy akarja akkor úgysem fog megjelenni, de azt már mindenki tudja, hogy tavaly a Crysis futott konzolkon, amikor a cég a CRYENGINE 2 konzolos változatát demózta
Egyszer:(2007)http://www.gwn.com/news/story.php/id/10208/Crytek_CEO_Crysis_Not_Possible_on_Consoles.html
Kétszer:(2008)http://pc.ign.com/articles/906/906291p1.html
Háromszor:(2009)http://www.1up.com/do/newsStory?cId=3172848
Inkább te nézzél utána a dolgoknak mert nagyon,de nagyon mellé beszélsz.A Crytek most már nem CSAK PC,hanem konzol játékokat is fejleszt,mert ugye a Free Radical konzolos játékokat fejlesztett.De ez nem azt jelenti hogy nem maradnak exkluzívjai.Csak átveszik a megmaradt FR projekteket.
22:igazad van az X1950XTX-nek közelébe sem ért de a korábbi felső kategóriás Radeonokat és GeForceokat (pl.:7800 GS)megverte.Régen nekem is 8600GT-m volt és annyira nem gyenge kártya,persze örülök hogy megszabadultam tőle.
A Crysis2 meg tuti, hogy ki jön konzolokra, vagy csak konzolokra, de idén sztem jön a Crysis is, CRY ENGINE 2 készen van konzolokra, és a cég is inkább a konzolok felé nyít most már, nézzetek utána, neten van egy csomó anyag róla
De mindnekinek természetesen a szíve joga, hogy elhiszi vagy nem, én elhiszem:)
Példának szúrom csak be a két videót:
Eredeti:http://www.gametrailers.com/player/19965.html
YTS-s videója a GDC06-on bemutatott pályával:
http://www.youtube.com/watch?v=IzESIqkzuTU&feature=channel_page&fmt=18
Jó lenne ha megkapnánk a beígért külsőt.De kíváncsi vagyok hogy a DX11 befolyásolni fogja-e a további fejlesztéseket.
#15: A 7600GT nem volt felső kategóriás kártya. A 6600GT helyét kívánta átvenni, viszonylag sikerrel.
XP-vel és egy Geferoce 8600 GT-vel ezeknek nem sok hasznát veszem. Azon felül nagyobb rajongója vagyok a 2-5 éves játékoknak, mint a ma hype-olt grafikai orgiáknak.
Már idleye, hogy kiadnak uja kártyákat, mert az elég buzeráns húzás mind a NVidiatól mind az Atitól, hogy ugyanazt a kártyát eladják 3 különböző néven pl.: geforce 8600 és 9600.... és ennek most jön a 3. rókabőr lehúzása csak nem tudom mi a neve a kártyának...
Ha nem vagy még tag, regisztrálj! 2 perc az egész.