Grafiskā karte pēdējo gadu laikā ir strauji attīstijusies. Tā ir
pāraugusi no visparastākās 2D kartes uz 3D, kā rezultātā mūsdienās ar datoru
var apstrādāt un modelēt visdažādākos 3D objektus, tos var attēlot reālā telpā,
vietā un kustībā. Respektīvi ir pavērusies liela multimediju iespēju pasaule,
kura nepārtraukti attīstās. Tas par ko pirms dažiem gadiem atļāvāmies tikai
sapņot šodien ir pārtapis realitātē. Bet visu no sākuma.
Parasta videokarte sastāv no četriem
pamatmezgliem: atmiņas, kontroliera, RAMDAC un ROM.
Video atmiņa ir domāta attēlu
glabāšanai. No tās apjoma ir atkarīga grafiskās kartes maksimālā izšķirtspēja:
A*B*C, kur A – punktu skaits pa horizontāli, B – punktu skaits pa vertikāli, C
– katra punkta iespējamais krāsu skaits. Piemēram, lai uzturētu izšķirtspēju
640*480*16 ir pietiekoši ar 256 KB, 800*600*256 ir pietiekoši ar 512 KB,
1024*768*64k ir pietiekoši ar 2 MB u.t.t.
No video kontroliera ir atkarīga video adaptera iespējas un ātrdarbība.
Tas ir atbildīgs par attēla izvadīšanu no video atmiņas, signālu formēšanu
priekš monitora un centrālā procesora pieprasījumu apstrādāšanu. Lai paātrinātu
attēla izvadīšanu uz monitora un samazinātu konflikta rašanos griežoties pie
atmiņas video kontrolierim un centrālajam procesoram, video kontrolierim ir
neatkarīgs buferis, kur laikā, kad centrālais procesors negriežas pie tā, tiek
uzkrāti dati no atmiņas. Ja tomēr rodas konflikts, tad kontrolieris aptur
centrālā procesora griešanos pie video atmiņas, kas samazina sistēmas
ātrdarbību. Lai to novērstu mūsdienās tiek uzstādītas tā sauktās divu portu
atmiņa (VRAM, WRAM), kura atļauj pie atmiņas griezties vienlaicīgi diviem.
Mūsdienās video kontroleru arhitektūra pēc sarežģītības maz atšķiras no
centrālā procesora, bet reizēm to pat pārspēj tranzistora skaita ziņā. Mūsdienu
video kontrolierim ir vairāki informācijas apstrādes bloki: 2D apstrādes bloks
(kas sevī ietver SVGA kodolu un grafiskās apstrādes kodolu), 3D apstrādes bloks
(kas parasti sevī ietver sevī virsotņu un virsmas aizpildījuma kodolus) un video
datu apstrādes bloks. Bez tam noteikti ir video atmiņas kontrolieris un galveno
kopņu porti (piemēram, AGP vai PCI). Video kontrolieris darbs parasti saistās
ar daudzu grafiskas informācijas radīšanu un sajaukšanu. Parasti tas ir pamata
attēls uz kura ir jāuzliek kursora attēls vai atsevišķs logs kurā attēlojas
signāls, kurš nāk no TV-uztvērēja vai MPEG dekodera. Video kontrolieri ar
plūsmas apstrādi, kā arī ar aparatūras atbalstu dažādu tipisku uzdevumu
veikšanā sauc par akseleratoru vai paātrinātāju, kas kalpo lai atslogotu
centrālo procesoru no attēlu formēšanas “rutīniskām” operācijām.
RAMDAC ir ciparu analogais
pārveidotājs. Tā uzdevums ir pārveidot, video kontroliera noraidīto datu
plūsmu, krāsu intensitātes līmeņos, ko tālāk pados uz monitoru. Praktiski visi
monitori izmanto analogo video signālu (izņemot jaunos plānos monitorus), tāpēc
iespējamais attēla krāsu diapazons tiek noteikts ar RAMDAC. Visbiežāk RAMDAC ir
četri pamata bloki: trīs ciparu analogie pārveidotāji (DAC), pa vienam uz katru
krāsas kanālu (sarkans, zaļš, zils, RGB), un SRAM (gammas korekcijas
saglabāšanai).
Video ROM ir patstāvīgā atmiņas
iekārta, kurā atrodas video-BIOS, ekrāna šrifti, darba tabulas un tamlīdzīgi.
Video kontrolieris nevar vērsties tieši pie video ROM, jo pie video ROM vēršas
tikai centrālais procesors. Daudzās mūsdienīgās kartēs tiek uzstādīti
pārprogrammējami ROM (EEPROM, Flash ROM), kurus lietotājs ar no kartes
komplektā ietilpstošās speciālas programmas palīdzību var pārprogrammēt. Video
ROM ir nepieciešams tikai pie video adaptera sākuma palaišanas un darbam
MS-DOS, Novell NetWare un citās OS, kuras strādā pārsvarā teksta režīmā. Tādas
OS kā Windows, OS/2 un tamlīdzīgās, kuras strādā caur saviem video draiveriem,
video ROM adaptera vadīšanai neizmanto vai arī to izmanto tikai MS-DOS komandu
veikšanai.
Uz videokartes vēl mēdz būt arī viens
vai vairāki kontakti iekšējiem pievienojumiem, viens no kuriem ir Feature
Connector (kas domāts dažādu iekārtu piekļūšanai pie video atmiņas un
attēliem). Šeit var pieslēgt tādas iekārtas, kā MPEG-dekoders, attēla ievades
iekārta u.t.l.
Kādreiz ar grafisku attēlu sēriju
veidošanu nodarbojās centrālais procesors, bet tagad to dara pati grafiskā
karte, tādejādi CP ir pamatīgi atslogots. Mūsdienas 2D kartes īpašības ir tik
tālu izpētītas, ka uzlabot tās veiktspēju nemainot krasi visu datora uzbūvi
gandrīz nav iespējams, bet savukārt 3D karte ir tikai savas attīstības sākuma
stadijās un šeit vēl daudz pārsteigumu ir priekšā. Piemēram, ieliekot Pentium I
vienu no jaudīgākajām grafiskajām kartēm, bet Pentium II parastu grafisko
karti, darbā ar Windows programmām nebūs īpašas starpības, bet grafiskā vidē,
piemēram, spēlējot kādu spēli Pentium I būs pat krietni pārāks par Pentium II.
Tālāk aplūkosim kā strādā 3D paātrinātājs.
3D paātrinātājs no daudziem
daudzstūriem vai lauztām līnijām rada objektu. Objekts tiek apklāts ar virsmas
aizpildījumu (respektīvi ar attēliem, kuri imitē materiālu no kura sastāv
modelējamā objekta virsma), tiek ievadīti virsmas reljefa karte, atstarošanās
karte u.t.l. Tālāk tiek izvietoti gaismas avoti (vai apgaismojošs vai
aptumšojošais, piemēram, migla, lai simulētu nakts apstākļus) un tiek norādīts
redzes leņķis no kura mēs monitorā vērojam šo scēnu. Tālāk objekts tiek
apstrādāts sekojošā secībā:
1.
Tesselation. Šajā etapā objekts, kurš ir attēlots ar
daudzstūriem vai lauztām līnijām tiek attēlots kā smalks siets, respektīvi
virsma tiek sadalīta trīsstūros.
2.
Ģeometriskā transformācija (Geometry Transformation) ir 3D
objekta griešana, pārvietošana un mēroga maiņa.
3.
Scēnas apgaismojuma aprēķināšana (Lighting). Šeit katrai
virsotnei, izejot no gaismas avota novietojuma, tipa un izkliedes, tiek
aprēķināts apgaismojums.
4.
Cliping. Šajā etapā tiek notušētas tās objekta daļas, kuras
neiekļūst redzamības zonā (gan ārpus ekrāna, gan ļoti lielā attālumā),
respektīvi tiek noteikts apgabals kurā scēnas kādas daļas ir neredzamas.
5.
Sietotā objekta projicēšana uz plakanas virsmas (Projection)
ar vai bez nākotnes perspektīvām.
6.
Trīsstūru beigu sagatavošana (Triangle Setup) pirms
izvadīšanas uz monitora. Šajā etapā tiek aprēķināts apgaismojums trīsstūra
malās par pamatu ņemot virsotņu apgaismojumu, bet izejot no šiem datiem arī
gradienta izmaiņu virzienu.
7.
Rasterizācija (Rasterisation). Šajā etapā tiek galīgi
pabeigts apēnojums un neredzamo scēnas virsmu notušēšana (Hidden Surface
Removal), respektīvi virsmu kam priekšā ir citas virsmas. Šeit arī tiek
apstrādāts virsmas aizpildijums, ņemot vērā virsmu caurspīdīgumu, perspektīvas,
detalizācijas līmeņus un metodes (LOD, Level Of Detail), filtrācijas metodes,
aptumšojumu u.t.t.
8.
Beigu apstrāde (Post processing). Pēdējā etapā tiek strādāts
ar gatavo attēlu. Piemēram, nosākuma attēls tiek aprēķināts lielā izšķirtspējā,
nekā tiek izvadīts uz monitora. Izvadot uz ekrāna tas tiek pārrēķināts nedaudz
mazāks, kā rezultātā krāsas attēlā labāk saplūst un tas ir daudz dabiskāks.
No 3D akseleratora var izdalīt šādas galvenās sastāvdaļas: ģeometrijas
bloks, rasterizācijas bloks un atmiņa, kura ietver sevī kadru buferi (frame
bufer), dziļuma buferi (Z-bufer), šablonu buferi un virsmas aizpildījuma atmiņu
(Texture memory). Tālāk aplūkosim dažus no tiem nedaudz tuvāk.
Kadru buferis. Šī ir tā daļa kur tiek apstrādāta 3D scēnas beigu daļa.
Parasti tiek izmantoti divi kadru buferi – priekšējais (front) un aizmugurējais
(back). Priekšējā buferī atrodas tekošā kadra attēls, bet aizmugurējā buferī
notiek nākošā kadra sagatavošana. Pēc tam kad kadrs parādīts buferi mainās
vietām. Maiņai ir jānotiek tajā brīdi kad monitors ir beidzis rādīt kadru,
pretējā gadījumā ekrāna augšējā daļā būs redzams vecais kadrs, bet apakšējā jau
jaunais. Daži akseleratori ļauj izmantot arī trīs buferus (triple buffering).
Šajā gadījumā viens kadrs tiek rādīts, nākamais tiek turēts gatavībā, bet
trešais tiek sākts gatavot. No kadru bufera lieluma ir atkarīga arī maksimālā
izšķirtspēja un krāsu daudzums. Piemēram, strādājot ar 1024*768 izšķirtspēju un
32 bītu krāsām, kur tiek izmantots trīs kadru buferis, nepieciešamā atmiņa būs
: 1024*768*4*3=9437184 B t.i. 9 MB, bet ar 640*480 un 16 bītu, kur izmanto tikai
priekšējo un aizmugurējo buferi, 640*480*2*2=1228800 B t.i. 1,2 MB.
Z-buferis tiek izmantots galvenokārt pārklājušos daļu noteikšanai, kad
tiek sastādīti 3D objekti. Vienkārši runājot, tas ir masīvs, kurš satur dotā
punkta dziļumu ( z koordinātu). Programma ar parastu dziļuma salīdzināšanu
nosaka kuru punktu nepieciešams notušēt.
Šablonu buferis (Stencil buffer). To izmanto dažādu specifisku efektu
iegūšanai pie objektu apstrādes. Piemēram, sagatavot beigu attēlu kadru buferī
tikai tiem punktiem, kuriem šablonu buferī ir ierakstīta kaut kāda vērtība.
3D grafika ir cieši saistīta ar API interfeisu (Application Programming
Interface). 3D paātrinātāju gadijumā API ir bibliotēku kopums, kas ir kā gatavs
interfeiss darbam ar 3D paātrinātājiem. Uz šodienu eksistē ļoti daudz API,
kurus var iedalīt divās klasēs: universālie un speciālie.
Universālie API ir kopēji visiem 3D paātrinātājiem. Šeit pirmām kārtām
gribas nosaukt tādus API kā: OpenGL un Direct3D. OpenGL interfeiss ir
izstrādāts firmā Silicon Graphics un tas atbalsta daudzas operētāj sistēmas.
Savukārt Direct3D kompānijas Microssoft produkts. Abi šie produkti galvenokārt
tiek izmantoti animāciju programmās un dažādās spēlēs.
Speciālie API ir domāti darbam ar paātrinātājiem, kuri ir būvēti
noteiktās 3D kartēs. Vieni no pazīstamākajiem ir Glide API, kurš domāts darbam
ar VooDoo karti, R-RedLine, kurš domāts darbam ar Rendition Verite karti, Metal
,kurš domāts darbam Savage 3D karti u.t.t. Speciālie API strādā tikai ar tām
programmām kūrām tie tika rakstīti.
Literatūras saraksts.
Žurnāla “Computer Press” publikācijas.
Nav komentāru:
Ierakstīt komentāru