3Dfx

Titlul-grafic al articolului: „3D" cu albastru și „fx" cu roșu, peste o umbră gri repetând același logo
Titlul-grafic al articolului: „3D" cu albastru și „fx" cu roșu, peste o umbră gri repetând același logo

Cu mulți ani în urmă, am întâlnit un joc extraordinar, al cărui nume ar trebui să fie familiar oricărui jucător care se respectă: Lemmings. Nu știu câți din cititori l-au văzut pe CGA (nu e nevoie să strâmbați din nas), dar părerea mea e că Psygnosis au făcut o treabă foarte bună la capitolul respectiv. Surpriza a intervenit atunci când l-am jucat pe VGA, diferența fiind atât de mare încât aș fi fost în stare să pariez că este alt joc. Din acel moment nu am mai întâlnit minuni de genul ăsta, cel puțin nu până acum câteva luni. Dar, să revenim la titlul de pe copertă, să vedem „adevărul"...

Prima placă cu Voodoo 2, care a obținut peste 100 fps în Quake, de trei ori mai mult decât Voodoo 1.
Prima placă cu Voodoo 2, care a obținut peste 100 fps în Quake, de trei ori mai mult decât Voodoo 1.

De-a lungul timpului, au existat multe firme care au produs plăci video al căror nume conținea magicul „3D", dar, totul se rezuma la implementarea câtorva funcții accelerate pentru umbrire „flat" sau Gouraud, Z-buffer și... cam atât. Pentru cine are idee ce înseamnă asta, e clar că suportul OpenGL al respectivelor plăci era cam subțire, ca să nu mai vorbim de sprijinul oferit producătorilor de jocuri care doreau „3D". În momentul în care producătorii de console video aveau și lucrau cu procesoare grafice specializate în 3D cu tot felul de primitive extravagante, a căror performanțe în materie de poligoane umbrite, corectate și cu texturi mapate era de *foarte* multe ori mai mare, a fost clar că situația nu mai poate continua așa. Au apărut astfel o grămadă de cip-uri cum ar fi: Mystique (Matrox), ViRGE (S3), Laguna3D (Cirrus Logic), Glint, Perimedia (3d Labs), NV1, Riva128 (NVidia), Verite 1000/2000 (Rendition), RAGE (ATI), Warp5 (Oak), PowerVR PCX[1,2] (NEC). Acestea aduc mai mult sau mai puțin „3D" calculatorului în care se află, fiecare venind cu inovațiile proprii aducătoare de avantaje și/sau dezavantaje (cel mai important este prețul, dat de cip și tipul/dimensiunea memoriei - aici ar fi de amintit Warp5 care se laudă cu o implementare de z-buffer care nu necesită memorie - impactul asupra prețului fiind drastic). Deoarece spațiul nu permite o analiză comparativă a chipset-urilor respective, se va vorbi despre unul singur, care (minune!) le este superior din multe privințe: Voodoo, produs de 3Dfx.

Cu toate că atunci când m-am apucat să scriu articolul, firmele de „hardware" din București nu prea aveau tangență cu subiectul (dacă cereai o placă 3D ți se oferea ViRGE sau Mystique, de 3Dfx nu se auzise), sunt convins că în momentul apariției revistei, subiectul o să fie foarte la modă, așa că nu strică să se știe „what's hot & what's not".

De ce este important Voodoo? Foarte simplu: performanțele sale sunt foarte bune pentru categoria în care concurează, a reușit să impună un standard și să câștige producătorii de software, iar prețul este accesibil (în comparație cu acceleratoare performante gen Intergraph RealiZM, Diamond FireGL etc).

Chipset-ul Voodoo este compus din două unități: PixelFX și TexelFX totalizând aproape 1 milion de tranzistoare. Primul se ocupă, după cum spune și numele, cu „punerea pixelilor", efectele speciale, ceață, transparență, și conține în același timp interfața cu DAC-ul, cu bus-ul PCI, precum și controlerul memoriei plus engine-ul de rendat triunghiuri (primele două generații Graphics/Rush nu au unitate dedicată pentru calculele respective „full triangle setup", performanțele lor fiind astfel influențate de puterea procesorului, în sarcina căruia cad respectivele operații). TexelFX este responsabil pentru texturi, MIP-mapping (folosirea mai multor texturi pentru aceeași suprafață, texturi a căror complexitate este invers proporțională cu distanța de la care sunt privite), filtrare avansată sau bilineară. Filtrarea este necesară deoarece în momentul în care ne apropiem de un obiect 3D pe care este mapată o textură, dimensiunea obiectului crește, fiecare pixel trebuind să fie copiat în zonele adiacente pentru a acoperi suprafața suplimentară, rezultatul concretizându-se în zone mari de aceeași culoare, provenite dintr-un singur pixel. Filtrarea atenuează acest inconvenient, prin interpolarea liniară a culorii mai multor pixeli din textura respectivă, prin copierea pixelilor între două nivele consecutive ale texturilor MIP (avansată), sau prin interpolarea a patru pixeli adiacenți (bilineară).

Există mai multe versiuni ale chip-ului: Voodoo Graphics, Voodoo Rush și Voodoo2.

Apărut în septembrie 1996, Voodoo Graphics este primul din generația sa și, depășind performanțele celorlalte chipset-uri din aproape toate punctele de vedere, a situat 3Dfx-ul cu mult înaintea concurenței.

Voodoo Rush este al doilea din serie și își propune să îmbine 2D cu 3D, în timp ce proaspătul Voodoo2 se mulțumește doar cu 3D pe care e hotărât să-l facă de câteva ori mai bine decât mezinul familiei.

Aceeași imagine din Quake II (test) pe trei plăci diferite: PowerVR PCX2, Riva128 și 3Dfx. Nu cred că mai trebuie alte comentarii.
Aceeași imagine din Quake II (test) pe trei plăci diferite: PowerVR PCX2, Riva128 și 3Dfx. Nu cred că mai trebuie alte comentarii.

VOODOO GRAPHICS

În primul rând avem nevoie de o placă video obișnuită, dat fiind faptul că chipsetul se ocupă doar cu partea 3D. Placa acceleratoare este PCI și are două conectoare: unul „tată" în care intră semnalul ce vine de la placa video, iar altul „mamă" care scoate semnalul către monitor. Placa conține un RAMDAC care generează semnalul video pentru monitor, memoria, precum și un switch analogic care comută între semnalul generat de placa video și cel generat de placa 3D (fig. 1). Din propoziția anterioară rezultă că la un moment dat, pe monitor vom avea fie output-ul plăcii video, fie cel al plăcii 3D, nefiind posibilă grafica accelerată 3D într-o fereastră. Memoria este EDO, iar viteza acesteia variază în funcție de producător, de la 50 la 35ns, aceasta din urmă dând posibilitatea „forțării" ceasului intern al plăcii, de la standardul de 50MHz la peste 60MHz, cu rezultate pe măsură, normal.

Fig. 1 — schema-bloc a unei plăci Voodoo Graphics: Memorie framebuffer + z-buffer, Memorie texturi, PixelFX, TexelFX, RAMDAC, Switch analogic, Placa video, Bus PCI, Semnal pentru monitor
Fig. 1 — schema-bloc a unei plăci Voodoo Graphics: Memorie framebuffer + z-buffer, Memorie texturi, PixelFX, TexelFX, RAMDAC, Switch analogic, Placa video, Bus PCI, Semnal pentru monitor

În general, există un total de 4M: 2 pentru framebuffer și z-buffer și 2 pentru texturi. Pentru a avea o animație fluidă, avem nevoie de double-buffering, adică în timp ce un cadru este trimis spre monitor trebuie ca următorul să fie calculat și păstrat în memorie. O imagine 640x480 cu 16bpp (65535 culori) ocupă 640x480x2=614.400 bytes, deci pentru două cadre avem nevoie de 1200k, iar pentru z-buffer pe 16 biți este nevoie de 640x480x16=4.915.200 biți adică 600k. Dacă facem adunarea ies 1800k, ceea ce înseamnă că cei 2 mega s-au terminat deja, rezoluții superioare fiind accesibile doar dacă se renunță la z-buffer (pentru 800x600 16bpp e nevoie de 800x600x4=1875k). În privința memoriei pentru texturi, cei 2 M sunt aproape suficienți pentru a păstra destule texturi. Zic aproape, deoarece în destul de multe cazuri numărul de texturi folosite este foarte mare, iar accesele care trebuie făcute pentru a le încărca micșorează sensibil numărul de cadre pe secundă (cine a jucat GLQuake, e1m7 în rețea cunoaște).

Performanțele chipset-urilor grafice se măsoară de obicei în: rata de umplere (pixeli/secundă) și numărul de triunghiuri de o anumită dimensiune (cu toate opțiunile activate) pe care le poate renda pe secundă. Voodoo Graphics are o rată de uplere de 45 milioane pixeli/s pentru texturi filtrate avansat sau bi-linear, și este în stare să facă aproape 1M de triunghiuri cu toate opțiunile (MIP, Z, alpha, ceață).

Există mai multe firme care produc plăci bazate pe VG, cu performanțe aproximativ asemănătoare, neexistând implementări VG de 2 sau 3 ori mai rapide decât altele (vezi tabelul). Dintre toate acestea, Diamond Monster-ul este cel mai frecvent întâlnit și, cu toate că există alte plăci mai performante, reprezintă cea mai bună alegere pentru compatibilitatea totală (la fel cum sunt și sound-blasterele Creative Labs).

Dezavantajele - pentru că există - sunt următoarele: (1) viteza memoriei (45 sau 50ns) nu permite (întotdeauna) forțarea ceasului intern la peste 57MHz; (2) cablul care face legăturile dintre plăci și monitor nu este extraordinar, având ca rezultat degradarea imaginii la frecvențe ridicate în modurile peste 1280x1024; (3) jocurile cu care vine erau ok în momentul în care a fost lansată pe piață, acum însă, nu văd cine vrea să plătească extra $ pentru VR Soccer, Hyperblade sau Whiplash (versiunea retail este aproximativ $185).

Placa pe care o recomand, este Pure3D, care vine cu 6M RAM și de ale cărei performanțe nu se prea apropie ceilalți competitori. Cu toate că memoria suplimentară nu este folosită pentru framebuffer pentru a permite 800x600, cei 2M se descurcă foarte bine la păstrat texturi, rezolvând problemele asemănătoare celei din e1m7 și făcând „gl_playermip" de domeniul trecutului. Restul avantajelor? Memorie de 35ns (nu multe plăci merg la peste 60MHz), cabluri de foarte bună calitate, care nu duc la degradarea imaginii, un set de drivere performante și un control-panel care permite chiar „overclock-area" plăcii și controlul ieșirii TV. Da, ați auzit bine, la numai $179, există o placă cu 6 M și ieșire TV (S-Video și videocomplexă), pentru cine vrea să joace (să luăm un exemplu la întâmplare... Quake) pe „wide-screen". Memoria suplimentară este detectată de toate aplicațiile care folosesc OpenGL și Direct3D, precum și de cele bazate pe Glide care sunt scrise în acest scop - singura problemă întâlnită fiind la o versiune mai veche de Carmageddon (Glide suportă 4M, dar texturile nu trebuie să treacă de limita celor 2M. „Problema" este rezolvată ori de programatori prin împărțirea spațiului de 4M în două, ori de gameri printr-un „SET SST_TMUMEM_SIZE=2048" în autoexec.bat).

Pentru cei care au nevoie de viteză, sau au bani de aruncat (sau amândouă) răspunsul este Quantum Obsidian SB100-4400. Poate vă întrebați cum arată un răspuns pentru care plătești $795. Ei bine, impresionant e puțin spus pentru 2 plăci PCI, unitate dedicată pentru calculele necesare triunghiurilor, 2 unități PixelFX având 2M și 4 unități TexelFX cu 4M fiecare (fig. 2), totalul de 20M fiind aproape de valorile întâlnite la acceleratoarele 3D serioase. Plăcile merg în mod SLI „scan line interleaved", adică una se ocupă cu câmpurile pare iar cealaltă cu cele impare, tehnică ce duce la dublarea ratei de umplere (și avem de-a face cu filtrare tri-liniară, adică una bi-liniară între 2 nivele MIP consecutive).

Fig. 2 — schema-bloc a plăcii Quantum Obsidian SB100-4400: două plăci PCI legate în SLI, fiecare cu un PixelFX (2 MB) și două TexelFX (4 MB), RAMDAC-uri, Switch, Placa video și ieșirea RGB out
Fig. 2 — schema-bloc a plăcii Quantum Obsidian SB100-4400: două plăci PCI legate în SLI, fiecare cu un PixelFX (2 MB) și două TexelFX (4 MB), RAMDAC-uri, Switch, Placa video și ieșirea RGB out

Ceva mai devreme ziceam că toate implementările de VG sunt cam la fel de rapide, dar, am uitat să specific „pentru același număr de procesoare". Pentru un număr superior de procesoare, Obsidian-ul vine și mă contrazice, cei 90 Mpixeli/sec și cele 1.25 Mtriunghiuri/sec (parametrii testelor sunt mai drastici decât în cazurile anterioare) depășind bine de tot celelalte soluții existente.

VOODOO RUSH

Rețetă: se ia un chipset bun 2D, se adaugă unul și mai bun 3D; se obține astfel combinația câștigătoare? Răspunsul este: NU, se obține Voodoo Rush. De ce nu este Rush printre campioni?

La data lansării, toată lumea era încântată de combinația respectivă: chipsetul 2D produs de Alliance (AT3D) nefiind prost, cei 6M de RAM permițând rezoluții 3D de 800x600, respectiv 1600x1200 în 2D și fiind capabil de grafică 3D în fereastră prin folosirea aceluiași framebuffer ca și placa video. Până aici toate bune, dar totuși ceva nu a mers așa cum era de așteptat. Să fi fost compatibilitatea îndoielnică cu titlurile scrise pentru VG, interfața dintre chipsetul 2D și 3D, driverele de la Alliance? Probabil că a fost puțin din fiecare, la care s-a adăugat și neputința chip-ului Rush de a face z-buffering și alpha-blending simultan. Această „scăpare" se datorează modului diferit în care VR discută cu framebufferul, 3Dfx-ul recunoscând că deși multe aplicații nu fac operațiile respective simultan, cele care totuși încearcă (Quake, firește) suferă o pierdere de viteză cam de 15%. Există pe piață plăci cu Voodoo Rush, ca Stingray 128/3D (Hercules), Intense 3D (Intergraph), Adrenaline Rush 3D (Jazz Multimedia), dar, performanțele lor sunt inferioare celor cu VG. Așa că mai bine să nu mai vorbim despre ele.

VOODOO2

Cu toate că chipul a apărut, nu există încă o implementare comercială, versiunile experimentale confirmând însă specificațiile existente.

Voodoo2 suportă filtrare tri-liniară, are unitate dedicată pentru triunghiuri, este gândit pentru arhitecturi paralele, și suportă multitexturi - aplicarea a 2 texturi pe un triunghi într-o singură trecere, capacitate pe care o are și Obsidian-ul (pentru cine nu e convins de importanță, voi aminti că engine-ul de Quake2 are mult de câștigat de pe urma...).

Rata de umplere este de 90Mpixeli/sec, numărul de triunghiuri rendate pe secundă este de 3 milioane, ceasul intern va avea de la 80 la 100MHz iar două plăci produse de aceeași firmă vor putea fi folosite simultan (SLI - ca la Obsidian) pentru a dubla performanțele și a obține moduri precum 1024x768.

Primele versiuni comerciale de Voodoo2 se pare că vor fi cele de la Diamond, Monstrul v2 (aproximativ de trei ori mai rapid decât v.1) urmând să fi „eliberat" prin luna februarie/98.

BANSHEE

Despre Banshee nu se știe deocamdată mare lucru, în afara faptului că își dorește să reușească acolo unde Rush-ul a dat greș. Acesta va fi o soluție integrată 2D și 3D produsă în totalitate de 3Dfx, (bazată probabil pe V2) ale cărei performanțe vor fi de 3 ori mai mari față de actualul Voodoo Graphics. Atât.

CONCLUZIE:

Cine vrea 800x600, grafică în fereastră, nu are sloturi PCI libere, sau placă video performantă ar putea să aleagă Voodoo Rush. Pentru restul, eu zic că alegerea este între: Diamond Monster3D, Canopus Pure3D și Quantum Obsidian (în ordinea crescătoare a performanței).

-Roger

Tabelul plăcilor Voodoo Graphics din partea de jos a paginii 43, transcris:

FIRMA PRODUS MEMORIE WWW
Skywell Magic 3D 4 M (40ns) www.magic-3d.com
Guillemot Maxi Gamer 3Dfx 4 M (40ns) www.guillemot.com
Real Vision Flash 3D 4 M (40ns) www.windsoronline.com
Orchid Righteous 3D 4 M (50ns) www.orchid.com
Diamond Monster 3D 4 M (45-50) www.diamondmm.com
Canopus Pure 3D 6 M (35ns) www.canopuscorp.com
Quantum 3D Obsidian 4 - 20 M www.quantum3d.com

Tabelul plăcilor Voodoo Graphics disponibile: FIRMA / PRODUS / MEMORIE / WWW
Tabelul plăcilor Voodoo Graphics disponibile: FIRMA / PRODUS / MEMORIE / WWW