-> #17
Det har vi, som sådan også. Der er rigtig meget regnekraft i en moderne CPU, Cell processor eller PowerPC. Problemet er blot, at grafik stadig er en del af det der "ukendte" land, hvor alting kan ske.
En CPU har det ret nemt, og får (for det meste af tiden) leveret en kontinuerlig strøm af ret forudsigelige data. Det er sværere for grafikkortet. Der er mange faktorer at tage højde for.
Hvis vi spiller et skydespil, så fortæller vi CPU'en - med musen - at nu drejer vi til højre. Den information sender CPU'en videre til grafikkortet, som;
- Placerer dig i 3D-space
- Tegner jord
- Tegner træer
- Tegner skyer
- Tegner partikler
- Tegner teksturer
- Beregner fysik?
- Osv. osv.
Der er rigtigt mange parametre at tage højde for. Derudover, så er det ret nemt at holde styr på koordinater i 3D-space. Men når samtidig samtlige triangler skal placeres, skydes på, sprænges i luften, hoppe, danse og jeg ved snart ikke hvad. Så er det, at opgaven bliver ret kompliceret.
Personligt, så havde jeg nok foretrukket, at div. spiludviklere (og programmører) ville øve sig lidt mere i effektiv programmering. Jeg tænker her især på ibrugtagning af flere kerner og en bedre fordeling af arbejdsbyrden (hvormed beregningskraft bliver brugt langt mere effektivt).
Det er jo lidt noget lort, at CPU'en i regelen blot bliver bedt om at "videresende" data til grafikkortet, som jo bare hoster af sted. Når nu vi (eller, nogle af os) har en firekernet processor, og en effektiv grafikchip (vi ser lige bort fra lyd hér), så ville det da være smart med:
CPU:
Core0 - Windows og baggrundsapplikationer
Core1 - Spil, interface, 3D-space
Core2 - Spil, AI/Kunstig intelligens
Core3 - Spil, fysik og 3D-space
Grafikkort:
Core 0-?! - Triangler
"Problemet" ligger lidt i, at de nuværende programmører sådan set kun er skolet til at kunne gøre brug af to-tre processorer på samme tid. Altså CPU, GPU og lydchip. Det er som sådan, den mest basale opsætning i en PC.
Ok. De kan nu gøre brug af lidt flere processorer, da Intel og AMD har været søde, at arbejde sammen med Microsoft, om at lægge dualcore understøttelse direkte ind i API'en.
Et godt eksempel er PS3'eren, der jo - som bekendt - gør brug af 7 kerner. Jeg kan let forestille mig, at de første tusinde programmører har kigget noget nervøst på opgaven.
Et spil som 'Crysis' gør faktisk fint brug af 4 kerner. Men pga. de programmører som har lavet "grundpillen" (jeg snakker ikke om grafikmotoren hér) i spillet, ikke kan lide flere kerner, så er det simpelthen pillet ud af spillet.
Hvis man eksempelvis sprænger en nuke. Er det så ikke lidt sært, at kun det træ man rammer direkte, vælter? Hva' med de omkrinstående træer? Biler, bygninger osv. springer også fint i luften, men hvad med træerne?
Det er blot et spørgsmål om at rette lidt i et par XML-filer, så vil man kunne eftervise det.
Min Q6600 afgik næsten ved døden, da jeg forsøgte at pille lidt ved det.
Vi må blot håbe, at folk (læs: udviklerne) tager sig ved nakken, og får indkørt en bedre kode, endsige en bedre platform. Så glæder jeg mig til at se real-time CGI 😎