RSS

Grafika komputerów PC

Liczba odsłon: 614

Gdy przy­cho­dzi wy­bie­rać no­wą kar­tę gra­ficz­ną, de­cy­du­ją­cym czyn­ni­kiem jest jej wy­daj­ność w grach. Obsługi­wa­ne roz­dziel­czoś­ci, głę­bia ko­lo­rów, a na­wet spo­sób pro­gra­mo­wa­nia są w za­sa­dzie iden­tycz­ne nie­za­leż­nie od pro­du­cen­ta i mo­de­lu. Kiedyś by­ło zu­peł­nie ina­czej: ko­lej­ne mo­de­le zna­czą­co róż­ni­ły się moż­li­woś­cia­mi oraz ja­koś­cią wy­świet­la­ne­go tek­stu i gra­fi­ki. Poniższy ar­ty­kuł przy­bli­ży Ci hi­sto­rię po­wsta­wa­nia stan­dar­dów gra­ficz­nych kom­pu­te­rów kla­sy PC i po­ka­że, w ja­ki spo­sób zna­leź­liś­my się w punk­cie, w któ­rym jes­teś­my dzi­siaj.

Projekt­an­ci kom­pu­te­ra IBM PC pew­nie nie spo­dzie­wa­li się ani przez chwi­lę, jak po­pu­lar­na sta­nie się ich kon­struk­cja i jak dłu­go w uży­ciu po­zo­sta­ną pry­mi­tyw­ne w za­sa­dzie roz­wią­za­nia tech­nicz­ne w niej za­sto­so­wa­ne. Niezwykła elas­tycz­ność otwar­tej archi­tek­tu­ry PC, któ­ra do­pie­ro nie­daw­no za­częła ule­gać ogra­ni­cze­niu przez ten­den­cje do in­te­gro­wa­nia wszyst­kich ele­men­tów kom­pu­te­ra na pły­cie głów­nej, za­pew­ni­ła moż­li­wość uży­cia kom­pu­te­ra PC w każ­dym za­sto­so­wa­niu – od prze­twa­rza­nia tek­stów, przez gra­fi­kę kom­pu­te­ro­wą, aż po obli­cze­nia in­ży­nier­skie.

Jednym z naj­od­waż­niej­szych kro­ków pro­jek­tan­tów „pe­ce­ta” by­ła re­zyg­na­cja z ter­mi­na­lo­we­go po­dej­ścia do ob­słu­gi ekra­nu, sto­so­wa­ne­go do­tych­czas w „po­waż­nych” kom­pu­te­rach biu­ro­wych. Pamięć obra­zu, za­mon­to­wa­ną na wy­mien­nej kar­cie roz­sze­rza­ją­cej, uczy­nio­no bez­po­śred­nio do­stęp­ną dla mi­kro­pro­ce­so­ra przez umiesz­cze­nie jej w je­go prze­strze­ni adre­so­wej. W ten spo­sób nie tyl­ko umoż­li­wio­no użyt­kow­ni­ko­wi wy­bór roz­wią­za­nia o sa­tys­fak­cjo­nu­ją­cych go moż­li­wo­ściach gra­ficz­nych (lub ogra­ni­cze­nie ce­ny kom­pu­te­ra w przy­pad­ku mniej­szych wy­ma­gań), lecz rów­nież zwięk­szo­no wie­lo­krot­nie moż­li­woś­ci opro­gra­mo­wa­nia, któ­re za­miast nie­in­tu­icyj­ne­go prze­twa­rza­nia tek­stu wiersz po wier­szu do­sta­ło do dys­po­zyc­ji ca­łą po­wierz­chnię ekra­nu wraz z moż­li­woś­cią bły­ska­wicz­ne­go od­czy­ty­wa­nia i mo­dy­fi­ko­wa­nia je­go za­war­toś­ci.

Era ter­mi­na­li

Zanim jesz­cze IBM PC po­ja­wił się w skle­pach, we wnęt­rzach mi­ni­kom­pu­te­rów za­trud­nio­nych do po­waż­nych za­dań kró­lo­wa­ło ter­mi­na­lo­we po­dejś­cie do ob­słu­gi ekra­nu. Sam kom­pu­ter naj­częś­ciej po­zba­wio­ny był moż­li­woś­ci ge­ne­ro­wa­nia tek­stu i obra­zu, dys­po­no­wał za to spo­rą licz­bą łącz sze­re­go­wych umoż­li­wia­ją­cych pod­łą­cze­nie osob­nych urzą­dzeń tek­sto­wo-gra­ficz­nych, tak zwa­nych ter­mi­na­li. Terminale od­czy­ty­wa­ły po­le­ce­nia prze­sy­ła­ne z kom­pu­te­ra, mo­dy­fi­ko­wa­ły na ich pod­sta­wie wy­świet­la­ny ob­raz i prze­ka­zy­wa­ły z po­wro­tem ko­dy na­cis­ka­nych kla­wi­szy.

Największą za­le­tą tech­ni­ki ter­mi­na­lo­wej by­ła pros­to­ta reali­zac­ji wie­lo­do­stę­pu. Dokupienie kil­ku ta­nich ter­mi­na­li umoż­li­wia­ło zwięk­sze­nie ob­cią­że­nia cen­tral­ne­go mi­ni­kom­pu­te­ra i bar­dziej efek­tyw­ne wy­ko­rzys­ta­nie je­go moż­li­woś­ci. Praca ter­mi­na­lo­wa mog­ła też być przer­wa­na w do­wol­nym mo­men­cie i wzno­wio­na póź­niej, gdyż ter­mi­nal był tyl­ko pros­tym spo­so­bem uzys­ka­nia chwi­lo­we­go do­stę­pu do kom­pu­te­ra.

Wraz z roz­wo­jem tej tech­ni­ki moż­li­woś­ci ter­mi­na­li zwięk­sza­ły się. Najpierw po­ja­wi­ły się atry­bu­ty tek­stu i moż­li­wość do­wol­ne­go po­zyc­jo­no­wa­nia kur­so­ra, co stwo­rzy­ło moż­li­woś­ci two­rze­nia opro­gra­mo­wa­nia dzia­ła­ją­ce­go w try­bie peł­no­ekra­no­wym. Najbardziej za­awan­so­wa­ne ter­mi­na­le ob­słu­gi­wa­ły rów­nież tryb gra­ficz­ny, in­ter­pre­tu­jąc po­le­ce­nia pro­to­ko­łu X Win­dow. Jednak mi­mo oczy­wi­stych za­let (spo­śród któ­rych naj­więk­szą jest moż­li­wość uzys­ka­nia do­stę­pu do kom­pu­te­ra z ter­mi­na­la po­ło­żo­ne­go w do­wol­nym miej­scu świa­ta, za po­śred­nic­twem glo­bal­nych łącz te­le­in­for­ma­tycz­nych), ter­mi­na­lo­wa ob­słu­ga ekra­nu jest po­wol­na i nie­po­trzeb­nie skom­pli­ko­wa­na, co mia­ło szcze­gól­ne zna­cze­nie gdy kom­pu­te­ry i ter­mi­na­le nie by­ły jesz­cze tak szyb­kie, jak dzi­siaj.

Era bu­fo­ra ram­ki

W tym sa­mym cza­sie w ośmio­bi­to­wych do­mo­wych mik­ro­kom­pu­te­rach za­miast dro­giej i skom­pli­ko­wa­nej ter­mi­na­lo­wej ob­słu­gi ekra­nu sto­so­wa­no tak zwa­ny bu­for ram­ki. Zasada dzia­ła­nia bu­fo­ra ram­ki jest pry­mi­tyw­nie pros­ta: na po­trze­by opi­su obra­zu prze­zna­cza się frag­ment pa­mię­ci opera­cyj­nej re­gu­lar­nie od­czy­ty­wa­ny przez układ elek­tro­nicz­ny za­mie­nia­ją­cy cyf­ro­we in­for­mac­je o obra­zie na syg­nał ana­lo­go­wy ste­ru­ją­cy moni­to­rem lub te­le­wi­zo­rem (współ­cześ­nie ta­ki układ no­si naz­wę RAMDAC). Zaletą ta­kie­go roz­wią­za­nia jest pros­to­ta: by zmo­dy­fi­ko­wać ob­raz pro­gram mu­si po pros­tu za­pi­sać właś­ci­we licz­by w od­po­wied­nim miej­scu pa­mię­ci. Istotną za­le­tą jest zmniej­sze­nie kosz­tów, gdyż układ RAMDAC jest nie­po­rów­ny­wal­nie prost­szy od ter­mi­na­la in­ter­pre­tu­ją­ce­go skom­pli­ko­wa­ne nie­raz po­le­ce­nia. Dodatko­wym plu­sem jest moż­li­wość od­czy­ty­wa­nia za­war­toś­ci ekra­nu, nie­dos­tęp­na w tra­dy­cyj­nych ter­mi­na­lach.

W wie­lu kom­pu­te­rach, by przy­spie­szyć dzia­ła­nie i w efek­cie zwięk­szyć kom­fort użyt­ko­wa­nia, zmo­dy­fi­ko­wa­no ideę bu­fo­ra ram­ki wpro­wa­dza­jąc do­dat­ko­wy tek­sto­wy tryb pra­cy. W try­bie tek­sto­wym w wy­dzie­lo­nym na opis obra­zu ob­sza­rze pa­mię­ci za­pi­su­je się nie do­kład­ny, cyf­ro­wy opis każ­de­go punk­tu (pik­se­la), lecz tyl­ko ko­dy i atry­bu­ty po­szcze­gól­nych li­ter. Układ RAMDAC mu­siał ulec oczy­wiś­cie skom­pli­ko­wa­niu – po­ja­wił się no­wy mo­duł do­ko­nu­ją­cy za­mia­ny ko­dów zna­ków na sek­wen­cje punk­tów o od­po­wied­niej bar­wie – jed­nak szyb­kość mo­dy­fi­ko­wa­nia i prze­wi­ja­nia ekra­nów peł­nych tek­stu ule­ga­ła zde­cy­do­wa­nej po­pra­wie.

Właśnie ta­ką mie­sza­ną tech­ni­kę tek­sto­wo-gra­ficz­ne­go bu­fo­ra ram­ki po­sta­no­wi­li wy­ko­rzys­tać in­ży­nie­ro­wie z fir­my IBM. Ich pra­cę do­dat­ko­wo ułat­wiał fakt, że ca­ła elek­tro­ni­ka kar­ty gra­ficz­nej (wraz z pa­mię­cią prze­cho­wu­ją­cą opis obra­zu) mia­ła znaj­do­wać się na osob­nej, wy­mien­nej kar­cie, dzię­ki cze­mu pierw­sze, pry­mi­tyw­ne kar­ty mog­ły zo­stać wy­mie­nio­ne w przy­szło­ści na bar­dziej za­awan­so­wa­ne tech­nicz­nie, ofe­ru­ją­ce lep­szą ja­kość obra­zu i wyż­szą wy­daj­ność. Nie bez zna­cze­nia by­ła też ol­brzy­mia jak na ów­czes­ne cza­sy prze­strzeń adre­so­wa pro­ce­so­rów Intel 8086/8088, dzię­ki cze­mu bu­for ram­ki (na któ­ry za­re­zer­wo­wa­no w su­mie 128 KiB prze­strze­ni adre­so­wej!) nie ogra­ni­czał po­jem­noś­ci pa­mię­ci do­stęp­nej dla pro­gra­mów użyt­kow­ni­ka (co by­ło po­waż­nym prob­le­mem w przy­pad­ku mi­kro­kom­pu­te­rów ośmio­bi­to­wych).

Monochrome Display Adapter

Pierwszą kar­tą gra­ficz­ną dla kom­pu­te­rów PC by­ła MDA – Monochrome Display Adapter. W za­my­śle mia­ła być ideal­nym roz­wią­za­niem dla osób zaj­mu­ją­cych się ob­rób­ką tek­stu, ba­za­mi da­nych i obli­cze­nia­mi, gdyż za­pew­nia­ła bar­dzo wy­raź­ny, mono­chro­ma­tycz­ny tekst. Brak moż­li­woś­ci gra­ficz­nych prze­kreś­lił jed­nak jej szan­se na ak­cep­tac­ję wśród użyt­kow­ni­ków i uczy­nił z niej ra­czej kar­tę tes­to­wą, za­pro­jek­to­wa­ną tyl­ko po to, by wi­dać by­ło, że kom­pu­ter fak­tycz­nie dzia­ła i pro­du­ko­wa­ną tyl­ko do mo­men­tu opra­co­wa­nia lep­szych, bar­dziej uni­wer­sal­nych roz­wią­zań.

Jedynym try­bem, w któ­rym dzia­ła­ła kar­ta MDA, był tryb tek­sto­wy o ko­dzie 7 za­pew­nia­ją­cy 25 wier­szy po 80 zna­ków tek­stu. Każdy znak opi­sa­ny był ra­strem 9×14 pikse­li i mógł być ukry­ty (ang. hid­den), roz­jaś­nio­ny (ang. bright), pod­kreś­lo­ny (ang. un­der­li­ned) lub wy­świet­la­ny w re­wer­sie (ang. re­ver­se video). Dodatko­wą funk­cją by­ło sprzę­to­we mi­go­ta­nie (ang. blin­king) wska­za­nych zna­ków. Informacje o obra­zie w tym try­bie zaj­mo­wa­ły do­kład­nie 4000 B (80×25 baj­tów na zna­ki i dru­gie ty­le na ich atry­bu­ty), kar­ta zo­sta­ła za­tem wy­po­sa­żo­na w 4 KiB sta­tycz­nej pa­mię­ci bu­fo­ra ram­ki.

Karta MDA nie zdą­ży­ła na szczęś­cie roz­pow­szech­nić się zbyt­nio. W mo­men­cie, w któ­rym kom­pu­te­ry kla­sy IBM PC za­częły być po­pu­lar­ne na ca­łym świe­cie, zo­sta­ła za­stą­pio­na ko­lej­ny­mi, dos­ko­nal­szy­mi roz­wią­za­nia­mi.

Karta MDA
Oryginal­na kar­ta gra­ficz­na MDA w for­mie peł­nej dłu­goś­ci kar­ty ośmio­bi­to­wej. Widoczne stan­dar­do­wo mon­to­wa­ne gniaz­do por­tu rów­no­leg­łe­go LPT.

Color Graphics Adapter

Zgodnie z za­ło­że­nia­mi kar­ta CGA – Color Graphics Adapter – mia­ła być prze­zna­czo­na dla osób zaj­mu­ją­cych się gra­fi­ką pre­zen­ta­cyj­ną (wy­kre­sy, sche­ma­ty, dia­gra­my) oraz pro­jek­to­wa­niem wspo­ma­ga­nym kom­pu­te­ro­wo (CAD, CAE). Nie zdo­by­ła ona jed­nak uzna­nia wśród użyt­kow­ni­ków kor­po­ra­cyj­nych, sta­jąc się za to na ja­kiś czas stan­dar­dem w kom­pu­te­rach ku­po­wa­nych do do­mów, za­pew­nia­ła bo­wiem moż­li­wość sto­so­wa­nia ko­lo­ro­we­go tek­stu i gra­fi­ki (ta ostat­nia by­ła szcze­gól­nie przy­dat­na w pierw­szych grach pi­sa­nych na PC).

W try­bie tek­sto­wym kar­ta CGA ofe­ro­wa­ła ob­raz wy­świet­la­ny w 25 wier­szach po 40 lub 80 zna­ków. Oprócz wszyst­kich atry­bu­tów „odzie­dzi­czo­nych” po MDA (po­za pod­kreś­le­niem zna­ków) ob­słu­gi­wa­ła 8 ko­lo­rów tła i 16 ko­lo­rów zna­ków, po raz pierw­szy wzbo­ga­ca­jąc moż­li­woś­ci biu­ro­we­go kom­pu­te­ra oso­bis­te­go o pre­zen­tac­ję barw. W try­bach gra­ficz­nych moż­na by­ło wy­świet­lać ob­raz o roz­dziel­czoś­ci 320×200 pikse­li w czte­rech ko­lo­rach lub 640×200 pikse­li w dwóch ko­lo­rach.

Największą wa­dą CGA, prze­kreś­la­ją­cą jej szan­se na ak­cep­tac­ję w biu­rach i wśród za­awan­so­wa­nych użyt­kow­ni­ków, by­ła tra­gicz­nie nis­ka ja­kość wy­świet­la­nych zna­ków. Matryca opi­su­ją­ca zna­ki mia­ła roz­miar tyl­ko 8×8 pikse­li, przez co wy­świet­la­ny tekst był kan­cia­sty, nie­czy­tel­ny i roz­my­ty. O ile na mo­ni­to­rze mono­chro­ma­tycz­nym nie wy­glą­da­ło to jesz­cze aż tak źle (choć tra­ci­ło się w ten spo­sób moż­li­wość pre­zen­tac­ji barw), moni­tor ko­lo­ro­wy do­dat­ko­wo po­gar­szał ja­kość obra­zu „roz­my­wa­jąc” pik­se­le. W grach to nie prze­szka­dza­ło, jed­nak dłuż­sza pra­ca w edy­to­rze tek­stu czy ar­ku­szu kal­ku­la­cyj­nym mu­sia­ła koń­czyć się bo­les­nym zmę­cze­niem oczu.

Ekran
Przykład mono­chro­ma­tycz­nej gra­fi­ki CGA w try­bie 640×200

Ciekawą ce­chą kar­ty CGA by­ło na­rzu­ca­nie pa­le­ty barw w try­bie gra­ficz­nym 320×200 pikse­li. Do dys­po­zyc­ji by­ły dwa (a przy odro­bi­nie kom­bi­no­wa­nia trzy) ze­sta­wy, z któ­rych każ­dy za­wie­rał bar­wy za­pew­nia­ją­ce ge­ne­ro­wa­nej gra­fi­ce zde­cy­do­wa­nie „orygi­nal­ny” wy­gląd:

Paleta 0: tło tur­kus fio­let jas­ny sza­ry
Paleta 1: tło zie­lo­ny czer­wo­ny brą­zo­wy
Paleta 2: tło tur­kus czer­wo­ny jas­ny sza­ry

We wszyst­kich try­bach gra­ficz­nych moż­na też by­ło zmie­nić ko­lor tła z czar­ne­go na do­wol­ny z 16 do­stęp­nych, a w try­bie „wy­so­kiej roz­dziel­czoś­ci” 640×200 pikse­li rów­nież ko­lor pierw­sze­go pla­nu z bia­łe­go na do­wol­ny. Trudno jed­nak nie zgo­dzić się, że moż­li­woś­ci gra­ficz­ne kar­ty CGA by­ły wy­so­ce nie­za­do­wa­la­ją­ce za­rów­no pod wzglę­dem roz­dziel­czoś­ci, jak i pa­le­ty barw.

Na osło­dę kar­ta CGA kry­ła pa­rę nie­spo­dzia­nek. Pierwszą z nich by­ło 16 KiB dyna­micz­nej pa­mię­ci obra­zu, co umoż­li­wia­ło prze­cho­wy­wa­nie 8 peł­nych stron tek­stu w try­bie 40×25 zna­ków i 4 stron w try­bie 80×25 zna­ków. Przełą­cza­nie mię­dzy stro­na­mi na­stę­po­wa­ło w spo­sób na­tych­mia­sto­wy, a pro­gra­my mog­ły przy­go­to­wy­wać stro­ny do wy­świet­la­nia w cza­sie, gdy by­ły one jesz­cze ukry­te, za­pi­su­jąc da­ne w od­po­wied­nie ob­sza­ry pa­mię­ci opera­cyj­nej.

Drugą był tryb se­mi­gra­ficz­ny 160×100 pikse­li, uzys­ki­wa­ny przez prze­pro­gra­mo­wa­nie kon­tro­le­ra obra­zu w tryb tek­sto­wy 80×100 zna­ków i wy­peł­nie­nie ca­łe­go obra­zu tym sa­mym sym­bo­lem dzie­lą­cym po­le zna­ko­we na po­ło­wy – jed­na o bar­wie tła, a dru­ga o bar­wie pierw­sze­go pla­nu. Kolejna re­kon­fi­gu­ra­cja kon­tro­le­ra obra­zu wy­łą­cza­ła atry­but mi­go­ta­nia zna­ków, umoż­li­wia­jąc do­stęp do wszyst­kich 16 barw ja­ko ko­lo­rów tła. Od te­go mo­men­tu sa­my­mi ope­ra­cja­mi na atry­bu­tach obra­zu moż­na by­ło zmie­niać bar­wy po­szcze­gól­nych pseu­do-pikse­li, uzys­ku­jąc ob­raz o bar­dzo ni­skiej roz­dziel­czoś­ci, wy­star­cza­ją­cy jed­nak do reali­zac­ji wie­lo­barw­nych plansz ty­tu­ło­wych lub wy­kre­sów i dia­gra­mów.

Ekran
Przykład ko­lo­ro­wej gra­fi­ki CGA w try­bie 320×200

Karcie CGA, po­cząt­ko­wo do­syć dro­giej, a nie­wąt­pli­wie po­zba­wio­nej więk­szych moż­li­woś­ci, uda­ło się jed­nak usta­no­wić pew­ne­go ro­dza­ju stan­dard. Pojawiło się na­wet kil­ka zgod­nych z CGA kart nie­za­leż­nych pro­du­cen­tów, im­ple­men­tu­ją­cych rów­nież try­by gra­ficz­ne o wyż­szej licz­bie barw. Szerokie roz­pow­szech­nie­nie ob­słu­gi CGA w opro­gra­mo­wa­niu spra­wi­ło, że każ­da póź­niej­sza kar­ta gra­ficz­na pro­duk­cji IBM po­tra­fi­ła emu­lo­wać jej dzia­ła­nie (do­ty­czy to rów­nież naj­now­szych kart Super VGA nie­za­leż­nych pro­du­cen­tów). Jednak kar­tą, któ­ra trwa­le ode­bra­ła pry­mat CGA i usta­no­wi­ła (szcze­gól­nie w Polsce) stan­dard obo­wią­zu­ją­cy ca­łe la­ta był pro­dukt nie IBM, a nie­wiel­kiej fir­my Hercules Compu­ter Technology.

Hercules Graphics Card

Brak moż­li­woś­ci gra­ficz­nych kar­ty MDA i ża­łos­na ja­kość tek­stu i gra­fi­ki w przy­pad­ku kar­ty CGA umoż­li­wi­ły w 1982 ro­ku fir­mie Hercules Compu­ter Technology roz­pow­szech­nie­nie włas­ne­go roz­wią­za­nia. Karta HGC (ang. Hercules Graphics Card) łą­czy­ła za­le­ty MDACGA (oprócz moż­li­woś­ci sto­so­wa­nia barw) lik­wi­du­jąc za­ra­zem ich wa­dy.

Karty HGC
Dwa róż­ne eg­zem­pla­rze ośmio­bi­to­wej wer­sji kar­ty gra­ficz­nej Hercules Graphics Card. Widoczne są gniaz­da por­tu rów­no­leg­łe­go LPT, mon­to­wa­ne stan­dar­do­wo na wszyst­kich kar­tach gra­ficz­nych HGC (po­dob­nie jak w przy­pad­ku MDA).

Karta HGC (zwa­na naj­częś­ciej po pros­tu Herculesem) ofe­ro­wa­ła tyl­ko je­den mono­chro­ma­tycz­ny tryb tek­sto­wy 80×25 zna­ków (cał­ko­wi­cie zgod­ny z MDA) i je­den mono­chro­ma­tycz­ny tryb gra­ficz­ny 720×348 pikse­li (nie­zgod­ny z ni­czym). Ponie­waż na płyt­ce kar­ty za­in­sta­lo­wa­na by­ła pa­mięć o po­jem­noś­ci 64 KiB, moż­li­we by­ło ry­so­wa­nie obra­zu tek­sto­we­go na 16, a gra­ficz­ne­go na dwóch nie­za­leż­nych, prze­łą­cza­nych sprzę­to­wo stro­nach. Matryca zna­ków mia­ła roz­miar 9×14 pikse­li, za­pew­nia­jąc czy­tel­ność obra­zu iden­tycz­ną z MDA.

Problem nie­zgod­noś­ci z CGA roz­wią­za­no po­cząt­ko­wo za po­mo­cą pro­gra­mów emu­lu­ją­cych CGA (naj­po­pu­lar­niej­szym był color.com). Z bra­ku ko­lo­rów wszyst­kie bar­wy by­ły sy­mu­lo­wa­ne za po­mo­cą tech­nik roz­pra­sza­nia (ang. dithering). Szybko ros­ną­ca po­pu­lar­ność Herculesa spo­wo­do­wa­ła jed­nak, że pro­gra­miś­ci chęt­nie do­da­wa­li do swo­ich pro­gra­mów ob­słu­gę tej kar­ty, z cze­go naj­więk­sze zys­ki czer­pa­li pro­jek­tan­ci, zy­sku­jąc czar­no-bia­ły co praw­da, lecz po­jem­ny i wy­raź­ny pul­pit gra­ficz­ny znacz­nie prze­wyż­sza­ją­cy ja­koś­cią osiąg­nię­cia kar­ty CGA.

W try­bie tek­sto­wym kar­ta HGC uży­wa­ła ze­sta­wu zna­ków za­pi­sa­ne­go w pa­mię­ci ROM (tak sa­mo zresz­tą jak MDACGA), co zmu­sza­ło użyt­kow­ni­ków po­słu­gu­ją­cych się ję­zy­kiem in­nym niż an­giels­ki do prze­pro­gra­mo­wy­wa­nia ge­ne­ra­to­ra zna­ków. I na to zna­laz­ło się roz­wią­za­nie: pa­kiet pro­gra­mo­wy GOP16H autor­stwa Andrze­ja Kad­lo­fa sy­mu­lo­wał tryb tek­sto­wy w try­bie gra­ficz­nym kar­ty HGC, za ce­nę mniej­szej wy­daj­noś­ci da­jąc moż­li­wość w peł­ni pro­gra­mo­wej za­mia­ny ca­łe­go ze­sta­wu zna­ków (a na­wet jed­no­czes­ne­go uży­wa­nia dwóch nie­za­leż­nych ze­sta­wów zna­ków).

Choć z cza­sem co­raz sil­niej zin­te­gro­wa­ne roz­wią­za­nia róż­nych pro­du­cen­tów zgod­ne z HGC roz­pow­szech­nia­ły się i sta­wa­ły się co­raz tań­sze (w skraj­nej for­mie ob­słu­gą obra­zu zaj­mo­wał się je­den układ sca­lo­ny), ogól­ny spa­dek cen elek­tro­ni­ki spo­wo­do­wał, że użyt­kow­ni­cy chęt­niej się­ga­li po now­sze kar­ty, wy­po­sa­żo­ne w moż­li­wość pre­zen­tac­ji barw­nej. Producent Herculesa pró­bo­wał jesz­cze „re­ani­mo­wać” swój pro­dukt roz­sze­rza­jąc go o moż­li­wość de­fi­nio­wa­nia ze­sta­wu zna­ków uży­wa­ne­go w try­bie tek­sto­wym (HGC+, 1986 rok) i o ko­lo­ro­wą gra­fi­kę (HICC, 1987 rok), nie mógł już jed­nak po­wstrzy­mać ofen­sy­wy do­sko­nal­szych pro­duk­tów fir­my IBM. Wraz z roz­po­wszech­nie­niem stan­dar­du VGA pa­mięć o Hercu­le­sie umar­ła.

Enhanced Graphics Adapter

Równolegle z pre­mie­rą no­we­go, wy­daj­ne­go mo­de­lu PC/AT, fir­ma IBM po­sta­no­wi­ła za­pre­zen­to­wać no­wy mo­duł gra­ficz­ny wy­ko­rzy­stu­ją­cy moc obli­cze­nio­wą kom­pu­te­rów AT i roz­sze­rza­ją­cy ich moż­li­woś­ci pre­zen­tac­ji da­nych. Karta EGA mia­ła za­stą­pić za­rów­no MDA, jak i CGA.

Karta EGA
Karta QuadEGA fir­my Quadram.

Najważniej­szą ce­chą no­wej kar­ty by­ła da­le­ce po­su­nię­ta, choć nie ideal­na, zgod­ność z za­stę­po­wa­ny­mi stan­dar­da­mi. Karta EGA ob­słu­gi­wa­ła za­rów­no tryb tek­sto­wy MDA, jak i try­by tek­sto­we i gra­ficz­ne CGA. W try­bie tek­sto­wym – na­wet pod­czas emu­lac­ji kar­ty CGA – za­pew­nia­ła zaw­sze ja­kość obra­zu do­rów­nu­ją­cą MDA (mat­ry­ca zna­ków mia­ła roz­miar 8×14 pikse­li). Dodatkowy tryb tek­sto­wy, prze­zna­czo­ny dla osób prag­ną­cych zmieś­cić na jed­nym ekra­nie jak naj­więk­szą ilość in­for­mac­ji, kosz­tem zmniej­sze­nia ma­try­cy zna­ków do 8×8 pikse­li (stan­dar­do­wa czcion­ka CGA) umoż­li­wiał wy­świet­la­nie 43 wier­szy po 80 zna­ków.

Pierwsze mo­de­le kar­ty wy­po­sa­żo­ne by­ły w 64 KiB pa­mię­ci obra­zu, co po­zwa­la­ło na ko­rzy­sta­nie – oprócz emu­lo­wa­nych try­bów gra­ficz­nych CGA – z 16-ko­lo­ro­we­go try­bu ni­skiej roz­dziel­czoś­ci (320×200 pikse­li), 16-ko­lo­ro­we­go try­bu śred­niej roz­dziel­czoś­ci (640×200 pikse­li) oraz mono­chro­ma­tycz­ne­go i czte­ro­ko­lo­ro­we­go try­bu wy­so­kiej roz­dziel­czoś­ci (640×350 pikse­li). Rozszerzenie pa­mię­ci do 128 KiB uaktyw­nia­ło 16-ko­lo­ro­wy tryb wy­so­kiej roz­dziel­czoś­ci, dzię­ki cze­mu przy po­jem­noś­ci obra­zu nie­wie­le ustę­pu­ją­cej kar­cie Hercules na ekra­nie moż­na by­ło ob­ser­wo­wać gra­fi­kę wy­ko­rzy­stu­ją­cą jed­no­cześ­nie szes­naś­cie z 64 do­stęp­nych barw. Pełna ob­sa­da pa­mię­ci (256 KiB) umoż­li­wia­ła tyl­ko wy­ko­rzys­ta­nie dwóch rów­no­leg­łych, prze­łą­cza­nych sprzę­to­wo ekra­nów gra­ficz­nych wy­so­kiej roz­dziel­czoś­ci (co by­ło przy­dat­ne pod­czas ani­ma­cji).

Karta EGA by­ła wy­po­sa­żo­na w nie­co ta­jem­ni­cze gniaz­do kra­wę­dzio­we naz­wa­ne Feature Connector. Choć rzad­ko wy­ko­rzys­ty­wa­ne, po­zwa­la­ło ono na mie­sza­nie obra­zu z ze­wnętrz­ne­go źród­ła z obra­zem wy­świet­la­nym na ekra­nie kom­pu­te­ra (aż po cał­ko­wi­te za­stą­pie­nie syg­na­łu in­nym, na przy­kład po­cho­dzą­cym z mo­du­łu roz­bu­do­wu­ją­ce­go moż­li­woś­ci gra­ficz­ne) i mo­dy­fi­ko­wa­nie pa­ra­met­rów obra­zu (na przy­kład two­rze­nie no­wych try­bów tek­sto­wych o wyż­szej roz­dziel­czoś­ci).

EGA by­ła też pierw­szą po­pu­lar­ną kar­tą gra­ficz­ną wy­po­sa­żo­ną we włas­ny mo­duł BIOS, uzu­peł­nia­ją­cy i za­stę­pu­ją­cy pro­ce­du­ry za­pi­sa­ne w BIOS pły­ty głów­nej. Dzięki te­mu moż­li­wa by­ła peł­na ob­słu­ga apli­kac­ji przy­sto­so­wa­nych do gra­fi­ki CGA i udos­tęp­nia­nie w ze­stan­da­ry­zo­wa­ny spo­sób no­wych funk­cji i try­bów gra­ficz­nych.

Grafika EGA
16-ko­lo­ro­wa gra­fi­ka kar­ty EGA w roz­dziel­czoś­ci 320×200 pikse­li

Karty zgod­ne z EGA pro­du­ko­wa­ne przez nie­za­leż­nych pro­du­cen­tów, z mo­de­lu na mo­del sil­niej zin­te­gro­wa­ne i tań­sze w pro­duk­cji, ofe­ro­wa­ły częs­to do­dat­ko­we moż­li­woś­ci, na przy­kład emu­lac­ję kar­ty HGC (z oczy­wi­stych wzglę­dów funk­cji tej nie mia­ła orygi­nal­na kar­ta pro­duk­cji IBM) lub wyż­sze roz­dziel­czoś­ci gra­ficz­ne i tek­sto­we. Nadejście ery VGA trzy la­ta póź­niej przy­pie­czę­to­wa­ło jed­nak los EGA za­nim jesz­cze na­stą­pi­ła ma­so­wa re­zyg­na­cja ze stan­dar­du Hercules.

Multi-Colour Graphics Adapter

Sterownik MCGA nig­dy nie był do­stęp­ny w for­mie osob­nej kar­ty roz­sze­rza­ją­cej, a je­dy­nie mon­to­wa­ny w for­mie zin­te­gro­wa­nej z pły­tą głów­ną (choć z włas­ną, nie­za­leż­ną pa­mię­cią gra­ficz­ną o po­jem­noś­ci 64 KiB) w kom­pu­te­rach IBM PS/2, Model 25 i 30. W za­mie­rze­niach mia­ła za­stą­pić kar­tę CGA, da­jąc jed­no­cześ­nie moż­li­woś­ci gra­ficz­ne po­trzeb­ne do­mo­we­mu użyt­kow­ni­ko­wi za­in­te­re­so­wa­ne­mu gra­mi kom­pu­te­ro­wy­mi i pros­ty­mi pro­gra­ma­mi użyt­ko­wy­mi, a więc wie­lo­ko­lo­ro­wą gra­fi­kę ni­skiej roz­dziel­czoś­ci i mono­chro­ma­tycz­ną gra­fi­kę wy­so­ko­roz­dziel­czą.

Sterownik MCGA był zgod­ny z MDA i CGA na po­zio­mie pro­gra­mo­wym. W try­bach tek­sto­wych za­pew­niał znacz­nie wyż­szą ja­kość obra­zu (mat­ry­ca zna­ku 9×16 pikse­li), nie tyl­ko nad­ra­bia­jąc wa­dy CGA, ale też osią­ga­jąc lep­szą ja­kość niż MDAEGA. Niestety, MCGA nie po­tra­fi­ła emu­lo­wać try­bów gra­ficz­nych EGA. Usprawied­li­wia­ła to w pew­nym za­kre­sie obec­ność dwóch no­wych try­bów pra­cy, z któ­rych pierw­szy – 320×200 pikse­li w 256 ko­lo­rach wy­bra­nych z pa­le­ty 262 144 barw – był wprost stwo­rzo­ny dla gier kom­pu­te­ro­wych i gra­fi­ki re­kla­mo­wej, a dru­gi – mono­chro­ma­tycz­ny 640×480 pikse­li – kon­ku­ro­wał z kar­tą HGC, da­jąc jed­nak ob­raz o znacz­nie przy­jem­niej­szych pro­porc­jach.

Grafika MCGA
256-ko­lo­ro­wa gra­fi­ka MCGA w roz­dziel­czoś­ci 320×200 pikse­li

Video Graphics Array

Podczas gdy MCGA by­ło tyl­ko przy­gryw­ką, pros­tym, sil­nie zin­te­gro­wa­nym ukła­dem prze­zna­czo­nym do ta­nich kom­pu­te­rów, sil­niej­sze mo­de­le z ro­dzi­ny PS/2 zo­sta­ły wy­po­sa­żo­ne w układ gra­ficz­ny no­wej ge­ne­ra­cji, któ­ry – jak się oka­za­ło – wy­zna­czył stan­dard obo­wią­zu­ją­cy do dziś.

Kontroler VGA, po­dob­nie jak MCGA, wy­ko­rzys­ty­wał naj­now­sze zdo­by­cze w za­kre­sie pro­gra­mo­wa­nych mat­ryc lo­gicz­nych. Dzięki te­mu funkcjo­nal­ność ol­brzy­mich kart roz­sze­rza­ją­cych zbu­do­wa­nych w opar­ciu o uni­wer­sal­ne kon­tro­le­ry wi­zji uda­ło się zmieś­cić w jed­nym ukła­dzie sca­lo­nym, wy­ma­ga­ją­cym tyl­ko kil­ku zew­nętrz­nych ele­men­tów i łat­wym w zin­teg­ro­wa­niu z pły­ta­mi głów­ny­mi kom­pu­te­rów PS/2. Podobnie jak EGA, układ VGA wy­ma­gał włas­nej pa­mię­ci BIOS, za­wie­ra­ją­cej pro­ce­du­ry ob­słu­gi wszyst­kich try­bów gra­ficz­nych.

Grafika VGA
Win­dows 3.0 with Multi­media Exten­sions wy­świet­la­ją­ce pul­pit w 16-ko­lo­ro­wym try­bie VGA 640×480 pikse­li

Podstawo­wym za­da­niem kon­struk­to­rów VGA by­ło za­pew­nie­nie zgod­no­ści ze wszyst­ki­mi po­przed­ni­mi kar­ta­mi gra­ficz­ny­mi sprze­da­wa­ny­mi przez kon­cern. W efek­cie układ VGA ob­słu­gi­wał try­by tek­sto­we MDA (z lep­szej ja­koś­ci tek­stem, mat­ry­ca zna­ku mia­ła roz­miar 9×16 pikse­li), tek­sto­we i gra­ficz­ne CGA (znów z tek­stem o nie­po­rów­ny­wal­nie lep­szej ja­koś­ci), tek­sto­we i gra­ficz­ne EGA (tekst jak wy­żej) oraz włas­ne do­dat­ko­we try­by:

Podobnie jak EGA, ste­row­nik VGA umoż­li­wiał do­wol­ne mani­pu­lo­wa­nie ze­sta­wa­mi zna­ków uży­wa­ny­mi w tek­sto­wych try­bach pra­cy. Dzięki te­mu moż­na by­ło do­ko­nać wy­mia­ny ze­sta­wu zna­ków – czy to z po­wo­dów este­tycz­nych, czy w ce­lu za­pro­gra­mo­wa­nia do­dat­ko­wych zna­ków al­fa­be­tów nie­an­giels­kich – w spo­sób czys­to pro­gra­mo­wy, bez ko­niecz­noś­ci prze­pro­gra­mo­wy­wa­nia pa­mię­ci ROM ge­ne­ra­to­ra zna­ków czy ucie­ka­nia się do sztu­czek w sty­lu emu­lac­ji try­bu tek­sto­we­go w try­bie gra­ficz­nym.

Stopień in­te­grac­ji ste­row­ni­ka VGA utrud­niał je­go klo­no­wa­nie (pro­du­cen­ci kon­ku­ren­cyj­nych wer­sji mu­sie­li w za­sa­dzie za­pro­jek­to­wać włas­ne ukła­dy o ana­lo­gicz­nej funkcjo­nal­noś­ci), nie prze­szko­dzi­ło to jed­nak w szyb­kim roz­pow­szech­nie­niu się VGA ja­ko stan­dar­du. Zaczęły po­ja­wiać się na­wet kar­ty o jesz­cze lep­szych pa­ra­met­rach, udos­tęp­nia­ją­ce szer­szą pa­le­tę barw oraz wyż­sze roz­dziel­czoś­ci. Karty te na­zy­wa­no wspól­nym mia­nem Super VGA. Początko­wo każ­da ta­ka kar­ta wy­ma­ga­ła spe­cy­ficz­nych pro­gra­mów ob­słu­gi, do­sto­so­wu­ją­cych każ­dy pro­gram do swo­ich moż­li­woś­ci, szyb­ko jed­nak oka­za­ło się, że znacz­nie lep­szym roz­wią­za­niem jest ze­stan­da­ry­zo­wa­nie do­dat­ko­wych try­bów gra­ficz­nych. Uczyniono to w ra­mach or­ga­ni­za­cji VESA, a do ob­słu­gi ujed­no­li­co­nych try­bów gra­ficz­nych wyz­na­czo­no mo­duł VESA BIOS (roz­sze­rza­ją­cy BIOS ste­row­ni­ka VGA), któ­ry mógł być in­sta­lo­wa­ny w for­mie re­zy­dent­ne­go pro­gra­mu ob­słu­gi (do­sto­so­wu­jąc do stan­dar­du VESA na­wet nie­któ­re star­sze kar­ty gra­ficz­ne) lub zin­te­gro­wa­ny z BIOS sa­mej kar­ty gra­ficz­nej.

Era ak­ce­le­ra­to­rów i ko­pro­ce­so­rów gra­ficz­nych

Wraz ze wzros­tem stop­nia skom­pli­ko­wa­nia gra­ficz­nych inter­fej­sów użyt­kow­ni­ka (GUI) oraz licz­by punk­tów i ko­lo­rów wy­świet­la­nych jed­no­cześ­nie na ekra­nie sta­ło się ja­sne, że idea bu­fo­ra ram­ki nie zda­je eg­za­mi­nu. Mimo sto­so­wa­nia co­raz szyb­szych ma­gis­tral pa­mię­ci gra­ficz­nych od­ry­so­wy­wa­nie obra­zu by­ło za­uwa­żal­nie po­wol­ne.

Natural­nym, na­rzu­ca­ją­cym się roz­wią­za­niem by­ło prze­nie­sie­nie częś­ci od­po­wie­dzial­noś­ci za two­rze­nie obra­zu z pro­ce­so­ra cen­tral­ne­go (do­tych­czas sa­mo­dziel­nie za­pi­su­ją­ce­go da­ne obra­zu do pa­mię­ci gra­ficz­nej) na ukła­dy za­mon­to­wa­ne na płyt­ce kar­ty gra­ficz­nej. Takie spe­cja­li­zo­wa­ne ukła­dy pod­le­ga­ją­ce moż­li­woś­ci pro­gra­mo­wa­nia do­wol­nych ope­rac­ji gra­ficz­nych na­zwa­no ko­pro­ce­so­ra­mi gra­ficz­ny­mi (ang. gra­phics co-pro­cessor), pod­czas gdy ich prost­sze wer­sje z na­rzu­co­nym ze­sta­wem ope­rac­ji gra­ficz­nych – ak­ce­le­ra­to­ra­mi gra­fi­ki (ang. gra­phics ac­ce­le­ra­tors).

Moż­li­wość pro­gra­mo­wa­nia do­wol­nych funk­cji gra­ficz­nych by­ła szcze­gól­nie nę­cą­ca dla pro­gra­mis­tów pra­cu­ją­cych nad pa­kie­ta­mi gra­ficz­ny­mi. Zamiast po­le­gać na po­wol­nym pro­ce­so­rze cen­tral­nym, mog­li oni za­pro­gra­mo­wać po­trzeb­ne funk­cje (ry­so­wa­nie krzy­wych, wy­peł­nia­nie po­wierz­chni, prze­miesz­cza­nie blo­ków obra­zu, zmia­nę ja­sno­ści i kon­tra­stu) bez­po­śred­nio w ukła­dach kar­ty gra­ficz­nej i zle­cać po­tem ich wy­ko­ny­wa­nie. Pozwala­ło to nie tyl­ko przy­spie­szyć ge­ne­ro­wa­nie obra­zu (ko­pro­ce­sor gra­ficz­ny miał bez­po­śred­ni do­stęp do pa­mię­ci obra­zu, pod­czas gdy pro­ce­sor cen­tral­ny ca­ły czas mu­siał ko­rzy­stać z po­śred­nic­twa ma­gi­stra­li roz­sze­rza­ją­cej), ale też zwal­nia­ło CPU do wy­ko­ny­wa­nia in­nych za­dań w tym sa­mym cza­sie. Podczas gdy ko­pro­ce­sor gra­ficz­ny mo­zo­lił się z ry­so­wa­niem jed­nej skom­pli­ko­wa­nej krzy­wej, pro­ce­sor cen­tral­ny mógł już przy­go­to­wy­wać pa­ra­met­ry ko­lej­nej. Takie zrów­no­leg­la­nie prze­twa­rza­nia po­zwa­la­ło znów od­czuć użyt­kow­ni­kom wy­daj­ność szyb­kich mi­kro­pro­ce­so­rów ich kom­pu­te­rów, mi­mo wzros­tu po­zio­mu skom­pli­ko­wa­nia opro­gra­mo­wa­nia.

Rynek IT nie lu­bi zbyt­niej jed­no­rod­no­ści, nie jest za­tem dziw­ne, że szyb­ko po­ja­wi­ło się kil­ka naj­waż­niej­szych ro­dzin ak­ce­le­ra­to­rów i ko­pro­ce­so­rów gra­ficz­nych, a in­ni pro­du­cen­ci do­sto­so­wa­li swo­je pro­duk­ty tak, aby by­ły zgod­ne al­bo sprzę­to­wo (na po­zio­mie re­jest­rów ukła­du), al­bo pro­gra­mo­wo (na po­zio­mie inter­fej­su ste­row­ni­ka po­śred­ni­czą­ce­go).

TIGA

Standard Texas Instru­ments Graphics Architecture na krót­ką chwi­lę wpro­wa­dził po­rzą­dek do świa­ta ko­pro­ce­so­rów gra­ficz­nych. Pełna moż­li­wość pro­gra­mo­wa­nia ope­rac­ji gra­ficz­nych po­zwa­la­ła ideal­nie do­sto­so­wać wy­daj­ność kar­ty do po­trzeb uży­wa­ne­go pro­gra­mu, jed­nak sto­pień skom­pli­ko­wa­nia pro­gra­mów ob­słu­gi ogra­ni­czał wy­ko­rzys­ta­nie ko­pro­ce­so­ra w opro­gra­mo­wa­niu użyt­ko­wym, zaś upow­szech­nie­nie się Micro­soft Win­dows (i in­nych po­pu­lar­nych, uni­wer­sal­nych śro­do­wisk gra­ficz­nych) do­bi­ło stan­dard TIGA.

Ciekawost­ką by­ła sil­na „wir­tua­li­za­cja” urzą­dzeń TIGA. General­nie mog­ły one mieć do­wol­ną roz­dziel­czość i głę­bię ko­lo­rów, a opro­gra­mo­wa­nie mog­ło od­py­tać kar­tę o moż­li­we try­by pra­cy i użyć do­wol­ne­go. Również ste­row­ni­ki by­ły za­zwy­czaj roz­bi­te na dwa mo­du­ły, z któ­rych je­den do­star­cza­ny był przez pro­du­cen­ta kon­kret­nej kar­ty i zaj­mo­wał się tłu­ma­cze­niem stan­dar­do­wych od­wo­łań TIGA w spo­sób zro­zu­mia­ły dla za­sto­so­wa­ne­go pro­ce­so­ra gra­ficz­ne­go, a dru­gi za je­go po­śred­nic­twem na­ka­zy­wał wy­ko­ny­wa­nie po­le­ceń gra­ficz­nych.

Cena kart TIGA nie przy­spo­rzy­ła im po­pu­lar­noś­ci, a ros­ną­ca wy­daj­ność prost­szych ak­ce­le­ra­to­rów do­peł­ni­ła dzie­ła.

IBM 8514/A

Wprowa­dzo­ny w 1987 ro­ku rów­no­leg­le z VGA i wy­ko­rzy­stu­ją­cy moż­li­woś­ci ma­gi­stra­li MCA kom­pu­te­rów PS/2, ten ak­ce­le­ra­tor fir­my IBM był chy­ba pierw­szym udo­stęp­nia­ją­cym sta­ły ze­staw przy­spie­sza­nych funk­cji gra­ficz­nych. Zawieszony sprzę­to­wo gdzieś po­mię­dzy świa­tem ak­ce­le­ra­to­rów i ko­pro­ce­so­rów, udos­tęp­niał wszyst­kie swo­je funk­cje za po­śred­nic­twem mo­du­łu 8514/AI (ang. Appli­ca­tion Interface), pro­gra­mu­ją­ce­go kar­tę i wy­wo­łu­ją­ce­go okreś­lo­ne funk­cje. Dzięki te­mu kar­ty in­nych pro­du­cen­tów mog­ły dzia­łać od­mien­nie, mi­mo to za­cho­wu­jąc zgod­ność z ory­gi­na­łem.

Karta ATi 8514/Ultra
Karta gra­ficz­na ATi 8514/Ultra, zgod­na z IBM 8514/A lecz przy­sto­so­wa­na do 16-bi­to­wej ma­gi­stra­li ISA

Karta 8514/A nie by­ła sa­mo­dziel­ną kar­tą gra­ficz­ną. Łączona ze ste­row­ni­kiem VGA za po­śred­nic­twem od­mia­ny złą­cza AVE, ob­słu­gi­wa­ła tyl­ko włas­ne try­by gra­ficz­ne 640×480 i 1024×768 pikse­li w 16 lub 256 ko­lo­rach (z cze­go tryb 1024×768 ko­rzy­stał z prze­plo­tu). Pozostałe try­by (z tek­sto­wy­mi włącz­nie) po­zos­ta­wa­ły w ge­stii rów­no­leg­le pra­cu­ją­ce­go ste­row­ni­ka VGA.

Interfejs pro­gra­mo­wa­nia kar­ty 8514/A zo­stał stwo­rzo­ny z myś­lą o pro­gra­mach do two­rze­nia gra­fi­ki wek­to­ro­wej i przy­sto­so­wa­ny był głów­nie do ope­rac­ji ry­so­wa­nia od­cin­ków i krzy­wych oraz za­peł­nia­nia ob­sza­rów. Niezwyk­le przy­dat­ną funk­cją był też ak­ce­le­ra­tor ope­rac­ji bit-blit, po­le­ga­ją­cej na prze­nie­sie­niu blo­ku obra­zu z jed­ne­go miej­sca w dru­gie (wy­ko­rzys­ty­wa­ne jest to szcze­gól­nie przy prze­miesz­cza­niu okien na ekra­nie).

Choć orygi­nal­na kar­ta 8514/A nie zdo­by­ła więk­szej po­pu­lar­noś­ci, wie­lu pro­du­cen­tów pod­chwy­ci­ło po­mysł i za­ofe­ro­wa­ło włas­ne kar­ty zgod­ne z 8514/A, nie wy­ma­ga­ją­ce jed­nak ma­gi­stra­li MCA, zgod­ne z VGA i star­szy­mi roz­wią­za­nia­mi i ofe­ru­ją­ce do­dat­ko­we moż­li­woś­ci. Najpopu­lar­niej­szy­mi pro­du­cen­ta­mi „klo­nów” 8514/A by­ły fir­my ATi (seria Mach), Chips and Techno­lo­gies oraz Western Digi­tal. Oferowanie przez nich roz­wią­za­nia częs­to by­ły lep­sze od ory­gi­na­łu, wy­świet­la­jąc ob­raz w mak­sy­mal­nej roz­dziel­czoś­ci bez prze­plo­tu, ak­ce­le­ru­jąc ry­so­wa­nie czcio­nek z wy­ko­rzys­ta­niem tech­ni­ki anti-aliasing (na przy­kład ATi Crystal Fonts) czy ofe­ru­jąc szer­szy wy­bór roz­dziel­czoś­ci obra­zu.

IBM XGA

Koncern IBM zdał so­bie spra­wę z eg­zo­tycz­no­ści 8514/A, ni­skiej ja­koś­ci obra­zu wy­świet­la­ne­go z prze­plo­tem i nie­zbyt kon­ku­ren­cyj­nej wy­daj­noś­ci. Krokiem na­przód miał być ste­row­nik obra­zu XGA, wpro­wa­dzo­ny na ry­nek (oczy­wiś­cie w wer­sji MCA) w 1990 ro­ku.

XGA to już peł­no­praw­ny, no­wo­czes­ny ak­ce­le­ra­tor gra­ficz­ny. Zrezyg­no­wa­no z pra­cy w tan­de­mie z VGA, in­teg­ru­jąc ste­row­nik VGA we wnęt­rzu ukła­du. Wprowadzo­no roz­dziel­czość 800×600 pikse­li z pa­le­tą 65 536 jed­no­cześ­nie wy­świet­la­nych barw (i peł­ną sprzę­to­wą ak­ce­le­rac­ją te­go try­bu) i utrzy­ma­no tryb 1024×768 pikse­li w 256 ko­lo­rach, tym ra­zem jed­nak bez wy­bie­ra­nia mię­dzy­li­nio­we­go (prze­plo­tu). Rozszerzono za­kres ak­ce­le­ro­wa­nych funk­cji gra­ficz­nych (mię­dzy in­ny­mi o ob­słu­gę sprzę­to­we­go wskaź­ni­ka mysz­ki), za­cho­wu­jąc przy tym zgod­ność z inter­fej­sem 8514/AI (a więc i opro­gra­mo­wa­niem na­pi­sa­nym z myś­lą o kar­cie 8514/A).

W ko­lej­nym wcie­le­niu, XGA-2, jesz­cze bar­dziej roz­sze­rzo­no moż­li­woś­ci gra­ficz­ne, wpro­wa­dza­jąc try­by gra­ficz­ne 640×480 pikse­li z 24-bi­to­wym opi­sem ko­lo­ru (16 777 216 barw) i 1024×768 pikse­li z 16-bi­to­wym opi­sem ko­lo­ru (65 536 barw), oby­dwa oczy­wiś­cie w peł­ni ak­ce­le­ro­wa­ne. Również pręd­kość dzia­ła­nia kar­ty uleg­ła za­uwa­żal­nej po­pra­wie.

Era pros­tych ak­ce­le­ra­to­rów gra­ficz­nych

Wymienio­ne po­wy­żej stan­dar­dy ko­pro­ce­so­rów i ak­ce­le­ra­to­rów gra­ficz­nych mia­ły nie­sa­mo­wi­te moż­li­woś­ci, jed­nak sło­no się za nie pła­ci­ło. Tymcza­sem prze­cięt­ne­mu użyt­kow­ni­ko­wi nie by­ły po­trzeb­ne ukła­dy gra­ficz­ne ak­ce­le­ru­ją­ce sprzę­to­wo każ­dą funk­cję, ja­ką moż­na so­bie wy­myś­leć, tyl­ko ta­nie kar­ty za­pew­nia­ją­ce od­po­wied­nie pa­ra­met­ry obra­zu i sen­sow­ną szyb­kość je­go ge­ne­ro­wa­nia. Nastąpiło star­cie dwóch świa­tów: tak zwa­ne „głu­pie bu­fo­ry ram­ki” (ang. dumb frame buffers) mu­sia­ły „na­uczyć się” od ak­ce­le­ra­to­rów gra­ficz­nych pa­ru sztu­czek przy­spie­sza­ją­cych two­rze­nie obra­zu, nie tra­cąc jed­nak przy okaz­ji swo­jej pod­sta­wo­wej za­le­ty, ja­ką by­ła śmiesz­nie nis­ka ce­na.

Badania wy­ka­za­ły, że wy­star­czy przy­spie­szyć tyl­ko kil­ka pod­sta­wo­wych ty­pów ope­rac­ji gra­ficz­nych, by uzys­kać nie­sa­mo­wi­ty, za­uwa­żal­ny go­łym okiem przy­rost wy­daj­noś­ci. Operacje te, wy­ko­rzys­ty­wa­ne szcze­gól­nie in­ten­sy­wnie w zuni­fi­ko­wa­nych śro­do­wis­kach gra­ficz­nych ty­pu Micro­soft Win­dows, to prze­de wszyst­kim:

Szybko za­częły po­ja­wiać się sil­nie zin­te­gro­wa­ne (a więc ta­nie w pro­duk­cji) ukła­dy gra­ficz­ne przy­spie­sza­ją­ce tyl­ko tych kil­ka naj­prost­szych ope­rac­ji, po­zo­sta­wia­jąc ry­so­wa­nie skom­pli­ko­wa­nych wzo­rów geo­met­rycz­nych, czcio­nek wek­to­ro­wych i wy­peł­nia­nie ob­sza­rów ogra­ni­czo­nych krzy­wy­mi pro­ce­so­ro­wi cen­tral­ne­mu. Pierwsze ukła­dy (ta­kie jak S3 Vision) ko­rzy­sta­ły z dro­giej, dwu­por­to­wej pa­mię­ci VRAM, lecz ko­lej­ne (na przy­kład S3 Trio) z ta­niej i po­wszech­nie do­stęp­nej DRAM lub EDO DRAM. Stopniowe­mu roz­sze­rza­niu ule­gał też wach­larz ak­ce­le­ro­wa­nych funk­cji (elek­tro­ni­ka jest ta­nia), a w szcze­gól­noś­ci moż­li­woś­ci na­kład­ko­wa­nia i ska­lo­wa­nia obra­zu wideo. Dalsze ogra­ni­cze­nie kosz­tów przy­nios­ło zin­te­gro­wa­nie od­ręb­ne­go do­tych­czas ukła­du RAMDAC z wnęt­rzem ukła­du.

Era pierw­szych ak­ce­le­ra­to­rów 3D

Rewolucja roz­po­czę­ła się w 1996 ro­ku, gdy fir­ma 3Dfx Inter­ac­tive za­pre­zen­to­wa­ła ze­staw ukła­dów sca­lo­nych o wspól­nej naz­wie Voodoo, a fir­ma Diamond Multi­media – zbu­do­wa­ną na je­go ba­zie kar­tę Diamond Monster. Ta do­dat­ko­wa kar­ta roz­sze­rza­ją­ca, przy­po­mi­na­ją­ca nie­co 8514/A spo­so­bem rów­no­leg­łej pra­cy z do­wol­ną in­ną kar­tą zgod­ną z VGA (choć łą­czo­na z nią zwyk­łym, ze­wnętrz­nym prze­wo­dem syg­na­ło­wym) roz­sze­rza­ła zna­czą­co moż­li­woś­ci gra­ficz­ne kom­pu­te­ra o funk­cje zwią­za­ne z ry­so­wa­niem pseu­do-trój­wy­mia­ro­we­go obra­zu na płasz­czyź­nie moni­to­ra. Procesor cen­tral­ny ogra­ni­czo­ny zo­stał do ro­li źród­ła da­nych opi­su­ją­cych trój­wy­mia­ro­wy świat: wierz­choł­ków trój­ką­tów, tek­stur po­kry­wa­ją­cych je i miejsc wy­stę­po­wa­nia efek­tów spe­cjal­nych w sty­lu mgły.

Karta Diamond Monster
Karta Diamond Monster z dwu­ukła­do­wym ze­sta­wem 3Dfx Voodoo

Choć fir­ma 3Dfx osiad­ła na lau­rach i szyb­ko prze­sta­ła się li­czyć w świe­cie gra­fi­ki kom­pu­te­ro­wej, jej osiąg­nię­cia kon­ty­nuo­wa­li in­ni. Na pro­wa­dze­nie szyb­ko wy­su­nę­ła się fir­ma nVidia, któ­rej ro­dzi­na ukła­dów Riva TNT po­ko­ny­wa­ła ko­lej­ne gra­ni­ce wy­daj­noś­ci gra­ficz­nej, a ro­dzi­na GeForce wpro­wa­dza­ła no­we funk­cje od­cią­ża­ją­ce pro­ce­sor cen­tral­ny, jak na przy­kład blok trans­for­ma­cji obra­zu i źró­deł świat­ła (ang. Transform and Lighting). Po okre­sie stag­na­cji na kon­ku­ren­ta wy­rósł jej kon­cern ATi z ro­dzi­ną ukła­dów Radeon, a w mię­dzy­cza­sie na are­nie po­ja­wia­li się in­ni jesz­cze za­wod­ni­cy (Matrox, Intel, S3) z włas­ny­mi, naj­częś­ciej ma­ło kon­ku­ren­cyj­ny­mi roz­wią­za­nia­mi.

Wszystkie te wcze­sne ukła­dy wspo­ma­ga­ją­ce two­rze­nie gra­fi­ki pseu­do-trój­wy­mia­ro­wej mia­ły jed­ną wspól­ną ce­chę: brak moż­li­woś­ci pro­gra­mo­wa­nia. Stały ze­staw funk­cji po­zwa­lał co praw­da two­rzyć do­wol­ne­go ty­pu sce­ne­rię, jed­nak opro­gra­mo­wa­nie ja­kich­kol­wiek zmien­nych efek­tów wpły­wa­ją­cych na kształt obra­zu wy­ma­gał za każ­dym ra­zem an­ga­żo­wa­nia pro­ce­so­ra cen­tral­ne­go i mo­dy­fi­ko­wa­nia pa­ra­met­rów prze­sy­ła­ne­go opi­su sce­ny.

Era no­wo­czes­nych pro­ce­so­rów gra­ficz­nych

Dzisiejsze kar­ty gra­ficz­ne co­raz bar­dziej przy­po­mi­na­ją za­awan­so­wa­ne ko­pro­ce­so­ry gra­ficz­ne z moż­li­woś­cią pro­gra­mo­wa­nia ich dzia­ła­nia. Coraz mniej­szą wa­gę przy­kła­da się też do try­bu two­rze­nia gra­fi­ki płas­kiej, sku­pia­jąc wszyst­kie wy­sił­ki na jak naj­spraw­niej­szej ob­słu­dze gra­fi­ki pseu­do-trój­wy­mia­ro­wej.

Wbrew po­zo­rom nie zys­ku­ją na tym tyl­ko wiel­bi­cie­le gier kom­pu­te­ro­wych. Nowo­czes­ne inter­fej­sy gra­ficz­ne co­raz częś­ciej im­ple­men­tu­je się w po­sta­ci zbio­ru pro­sto­kąt­nych ob­sza­rów od­po­wia­da­ją­cych ok­nom po­szcze­gól­nych apli­kac­ji, któ­rych za­war­tość wy­świet­la­na jest ja­ko tek­stu­ra. Również ob­raz wideo moż­na w łat­wy spo­sób wy­świet­lać, ska­lo­wać i prze­kształ­cać trak­tu­jąc go ja­ko tek­stu­rę wie­lo­ką­ta. Takie po­trak­to­wa­nie wciąż jesz­cze płas­kie­go inter­fej­su użyt­kow­ni­ka po­zwa­la mi­ni­mal­nym na­kła­dem pra­cy i bez an­ga­żo­wa­nia pro­ce­so­ra cen­tral­ne­go w do­wol­ny spo­sób ma­ni­pu­lo­wać ok­na­mi, ska­lu­jąc je w cza­sie rze­czy­wis­tym, mio­ta­jąc ni­mi po ekra­nie i na­kła­da­jąc je na sie­bie z za­cho­wa­niem przez­ro­czy­sto­ści po­szcze­gól­nych warstw i bez wi­docz­ne­go efek­tu od­ry­so­wy­wa­nia od­kry­wa­nych ob­sza­rów ekra­nu.

Tym, co jed­nak na­praw­dę zmie­nia spo­sób two­rze­nia gra­fi­ki, są wpro­wa­dza­ne kon­sek­went­nie moż­li­woś­ci pro­gra­mo­wa­nia pro­ce­su za­peł­nia­nia ekra­nu. Progra­my Pixel ShaderVertex Shader umoż­li­wia­ją prze­nie­sie­nie na układ gra­ficz­ny spo­rej częś­ci od­po­wie­dzial­noś­ci za wy­gląd brył i płasz­czyzn. Zamiast pod­mie­nia­nia tek­stur w ce­lu uzys­ka­nia efek­tów spe­cjal­nych wy­star­czy uru­cho­mić pro­gram sha­der do­da­ją­cy do do­wol­nej po­wierz­chni efekt bły­sku, lus­trza­ne­go od­bi­cia lub pło­mie­nia. Najważniej­sze jest to, że ta­kie pro­gra­my wy­ko­ny­wa­ne są w cza­sie rze­czy­wis­tym, pod­czas ge­ne­ro­wa­nia sce­ny i nie wy­ma­ga­ją cza­so­chłon­ne­go mo­dy­fi­ko­wa­nia jej pa­ra­met­rów przed wy­świet­le­niem każ­dej klat­ki.

Karty gra­ficz­ne, któ­rych uży­wa­my dzi­siaj, ni­czym nie przy­po­mi­na­ją skom­pli­ko­wa­nych, lecz ubo­gich ukła­dów sprzed 20 lat. Dziś by­le kom­pu­ter prze­noś­ny dys­po­nu­je wyż­szą roz­dziel­czoś­cią i licz­bą ko­lo­rów niż kar­ty EGA czy MCGA, a szyb­kość two­rze­nia wy­so­ko­roz­dziel­czych obra­zów prze­wyż­sza osiąg­nię­cia wie­lu ak­ce­le­ra­to­rów gra­ficz­nych sprzed lat. Musimy tyl­ko wy­ko­rzys­tać te moż­li­woś­ci, prze­no­sząc jak naj­szyb­ciej ob­słu­gę gra­ficz­nych inter­fej­sów użyt­kow­ni­ka na bar­ki pro­ce­so­ra gra­ficz­ne­go, na­ka­zu­jąc mu skła­da­nie przez­ro­czys­tych okien z tek­stur i żon­glo­wa­nie ni­mi.

Pierwszy krok zo­stał wy­ko­na­ny. System Apple Mac OS X wy­ko­rzys­tu­je moż­li­woś­ci pro­gra­mo­wa­nia kart gra­ficz­nych, uży­wa­jąc pro­ce­so­ra cen­tral­ne­go tyl­ko w tak skraj­nie skom­pli­ko­wa­nych za­da­niach jak ras­te­ry­za­cja tek­stu. Nieco mniej­sze moż­li­woś­ci ma za­pew­niać Micro­soft Win­dows Vista, ofe­ru­jąc „tyl­ko” sprzę­to­we wspo­ma­ga­nie skła­da­nia obra­zów okien (ang. com­po­si­ting). Trwają też pra­ce nad roz­sze­rze­niem moż­li­woś­ci ser­we­rów sys­te­mu X Win­dow o skła­da­nie obra­zów okien, a z wy­ko­rzys­ta­niem bi­blio­te­ki gra­ficz­nej Cairo – rów­nież o sprzę­to­wo ak­ce­le­ro­wa­ne ry­so­wa­nie kształ­tów i czcio­nek. Wszystko po to, by skom­pli­ko­wa­ne, in­tui­cyj­nie za­pro­jek­to­wa­ne ok­na apli­kac­ji ry­so­wa­ły się w mgnie­niu oka, a ob­raz o wy­so­kiej roz­dziel­czoś­ci jak naj­wier­niej od­wzo­ro­wy­wał wy­druk.


Fantastyczny artykuł – pozwolił uzupełnić szczątkową wiedzę na temat tej fascynującej drogi: od zielonych literek na czarnym tle do GF7800GT i milionów wielokątów generowanych w ułamkach sekund ;-)

Pozdrawiam ;)
Czytam już któryś z rzędu pański artykuł i jestem pod wielkim wrażeniem :). Naprawde gratuluje wiedzy a przede wszystkim bardzo dobrego języka inżyniera, o którym sam co nieco wiem. Oby tak dalej. Pozdrawiam!