Idézet: SATAN - Dátum: 2008. nov. 9., vasárnap - 2:03
Ertem a lenyeget annak amit az optimalizaciorol irtal. koszonom a faradtsagod hogy ilyen boven leirtad.
De ebbol meg mondjuk mindig nem teljesen tiszta hogy maga a jatek gyartoja hogy optimalizal hogyha optimalizalni akar. mert a te peldadnal te az ASMel megkerulod az apit es kozvetlenul a hardverhez nyulsz ,es kozvetlenul a hardverhez windowsban csak a vga driver nyulhat ha jol tudom.szal elvileg ilyen szintu optimalizaciot nem hajthat vegre a jatek programozoja. Mondjuk nem tudom hogy dx api belul mennyire van rendszerkozeli programozasi lehetoseg. ha van ra lehetoseg akkor ha kap segitseget a vga gyartotol akkor mar lehetseges, de ebben nem vagyok biztos hogy dx en belulrol te tudsz kozvetlenul a vgahoz nyulni hogy kihasznaljad a belso felepites adta lehetosegeket.
A video memoria hasznalat meg azert erdekel mert nekem csak 384MBos kartyam van es szeretnem tudni hogy az egyes progiknal teszteknel mikor fogy ki a memoriabol. mennyivel dobja meg a memoriahasznalatot egy fsaa pl meg ilyesmi.Mindig is ezgatott hogy mennyire er hatrany engem amiatt hogy nincs 512MB ramom.
Amikor belassul a kartyam akkor a memoria miatt lassul be vagy a gpu sebesseg miatt.
Túl magasszintűnek képzeled el a DX-et, szerintem ezért "nem érted", hogy lehet optimalizálni egy adott architektúrára.
A DX nem úgy működik, hogy kiadod, hogy rajzolj kockát, legyen köd, meg stb... (nagyon leegyszerűsítve), hanem azt kell leprogramoznod, hogyan végezze el az előbbi feladatokat lépésről lépésre (durván egyszerűsítve pixel, vertex, regiszter szinten) mit csináljon a GPU az adatokkal.
Az optimalizációt egy adott hardverre pont ez teszi lehetővé, hogy a megvalósítás során olyan programot lehet írni ami egyik kártyán jól megy, a másikon pedig lassabban mégis ugyanaz az eredmény. (És pont ez teszi lehetővé hardver független effektek és megvalósítások létrehozását, vagyis a rugalmasságot ami egyre inkább előtérbe kerül.)
Például a DX előírja legyen összeadás művelet.
Ha egy Geforce egyszerre csak 1 összeadást tud elvégezni, de gyorsabban mert nagyobb az órajele, mint egy párhuzamosan 5-öt összeadni képes Radeon lassabb órajellel, akkor kedvezhetsz optimalizálással mind a két típusnak.
A Geforce-nak egy olyan kód ami egymás után összead 5 számot de úgy, hogy a kód egyes utasításai mindig megvárják az előző eredményét (vagyis függőek, így nem hajthatóak végre egymással párhuzamosan), de ez nem követelmény az eredmény szempontjából, akkor az gyorsabb lesz a Geforce-on a nagyobb órajel miatt, mert ő is meg a Radeon is csak egymás után tudja végrehajtani (1-et órajelenként) .
Ha olyan kódot írsz ami párhuzamosan összeadja a számokat (mondjuk kettesével), akkor viszont a Radeon nyerhet, mert míg a Geforce-nak egyesével végig kell hajtani minden utasítást megvárva az eredményeket, addig a Radeon kettesével párhuzamosan el tudja végezni a feladatot (pl 2/3 idő alatt, mert az lassabb órajel miatt azért nem ideális a nyereség ügye), hiába alacsonyabb az órajele. Extrém esetben pl mind az 5-öt elvégzi párhuzamosan mert olyan jó a kód, akkor 5x gyorsabb logikailag.
Amikor egy játékot fejlesztessz, akkor a fentihez hasonló döntéseken múlik/múlhat, hogy milyen gyors lesz egy játék egy adott kártyán és bizony támogatói nyomásra lehetséges a másik versenytárs hátránybahozása.
Remélem érthető, amit akartam írni ilyen gyorsan.
Itt van pl angolul a fenti jellegű dolog szemléltetve mai hardveren:
http://www.anandtech...aspx?i=3341&p=6
Persze van még számos más mód "optimalizálásra", ez csak egyike volt a sok módnak.
Szerkesztette: ThomasS31 2008. 11. 10. 11:52 -kor