.td_uid_43_5cc2f00c00775_rand.td-a-rec-img{text-align:left}.td_uid_43_5cc2f00c00775_rand.td-a-rec-img img{margin:0 auto 0 0}През месец януари 1997 година много

...
.td_uid_43_5cc2f00c00775_rand.td-a-rec-img{text-align:left}.td_uid_43_5cc2f00c00775_rand.td-a-rec-img img{margin:0 auto 0 0}През месец януари 1997 година много
Коментари Харесай

Историята на 3dfx Voodoo1

.td_uid_43_5cc2f00c00775_rand.td-a-rec-img{text-align:left}.td_uid_43_5cc2f00c00775_rand.td-a-rec-img img{margin:0 auto 0 0}
През месец януари 1997 година доста неща в света на компютърните игри се трансформираха, откакто id Software показа новата версия на Quake с име GLQuake . И защото портът бе написан благодарение на miniGL (подмножество на стандарта OpenGL 1.1), всеки производител на хардуерни графични ускорители имаше опция да напише собствен miniGL драйвер и да се включи в конкуренцията при 3D картите. От този миг, всеки получи опцията да се конкурира и да предложи решение с допустимо най-вече фрагменти в секунда. Нека в резюме разгледаме тези събития и да висим кои два престижа от това време без подозрение бяха считани за кралете в тази област.

„Засега няма никакви подозрения: светът на Quake се ръководи от Voodoo. А защото Quake е водеща фигура в света на игрите, то закупуването на 3Dfx Voodoo е съвсем неизбежно за геймъра“ – Tom’s Hardware, 30 октомври 1997 година.

„3DFX Voodoo 1 е примерът, по който се равняват всички останали графични карти“ – се споделя в .plan файла на Джон Кармак от 12 февруари 1998 година.

Само като погледнах спецификациите, в които се споделя, че скоростта на запълване е 50 мегапиксела в секунда, незабавно желаех да изуча тази карта и да направя нещо сходно, само че още по-мощно.
3dfx Interactive

.td_uid_42_5cc2f00c00477_rand.td-a-rec-img{text-align:left}.td_uid_42_5cc2f00c00477_rand.td-a-rec-img img{margin:0 auto 0 0}
Рос Смит, Скот Селърс и Хари Търли се срещат, до момента в който работят в SGI. Те работят известно време в Pellucid, където се пробват да продават платките IrisVision за лични компютри (през 1994 година цената на една такава платка е $4000), само че малко по-късно основават лична компания с поддръжката на компанията TechFarm на Горди Кемпбъл. Така през 1994 година се появява компанията 3dfx Interactive, централният офис на която се намира в Сан Хосе, Калифорния.

Първоначално компанията има намерение да построява мощни системи за аркадните автомати, само че сменя активността си и стартира създаването на разширителни платки за лични компютри. Причините за тази постъпка са три:
Достатъчно ниската цена на паметтаЗапочвайки от FastPage RAM, а по-късно при EDO RAM, таймингите понижават с 30% и паметта към този момент може да работи с периодичност до 50 MHz3D или псевдо 3D игрите стават извънредно известни. Успехът на игри като DOOM, Descent и Wing Commander III демонстрира, че към този момент са назрели изискванията за възникването на пазар за 3D ускорители
Основателите на компанията схващат, че би трябвало да основат нещо мощно за тези игри, цената на което да е в границите на 300-400 $. През 1996 година компанията афишира основаването на новата архитектура SST1 (наречена по този начин в чест на създателите – Sellers-Smith-Tarolli-1 ), за която напълно скоро лицензи за потребление закупуват редица OEM производители, в това число Diamond, Canopus, Innovision и ColorMAX. За техните устройства е измислено маркетинговото име Voodoo1, подчертаващо високата „вълшебна“ продуктивност.

Както и в тази ситуация с V1000, при основаването на лични версии производителите могат да трансформират единствено вида на буферната памет, цвета на печатната платка и разположението на чиповете. Всичко останало е стандартизирано.
#td_uid_41_5cc2f00beec07.td-doubleSlider-2.td-item1{background:url(https://i2.wp.com/www.kaldata.com/wp-content/uploads/2019/04/3511.jpg?resize=80%2C60&ssl=1) 0 0 no-repeat}#td_uid_41_5cc2f00beec07.td-doubleSlider-2.td-item2{background:url(https://i2.wp.com/www.kaldata.com/wp-content/uploads/2019/04/352.png?resize=80%2C60&ssl=1) 0 0 no-repeat}#td_uid_41_5cc2f00beec07.td-doubleSlider-2.td-item3{background:url(https://i0.wp.com/www.kaldata.com/wp-content/uploads/2019/04/353.png?resize=80%2C60&ssl=1) 0 0 no-repeat}#td_uid_41_5cc2f00beec07.td-doubleSlider-2.td-item4{background:url(https://i1.wp.com/www.kaldata.com/wp-content/uploads/2019/04/354.png?resize=80%2C60&ssl=1) 0 0 no-repeat}1 от 4


3dfx прави смела стъпка, като се отхвърля от 2D рендирането. Voodoo1 има два VGA врата, единият от които се употребява вход, а другият – за излаз. Карата е разработвана като допълнение – тя взема за входни данни информацията от общоприетата 2D VGA карта, към този момент конфигурирана в компютъра. Когато потребителят работи с операционната система (DOS или Windows), Voodoo1 просто препраща сигнала от своя VGA вход към своя VGA излаз. Но при превключването към 3D режим, Voodoo1 поема контрола върху своя VGA излаз и пренебрегва сигнала на своя VGA вход. Някои карти имат машинален комутатор, от който се чува ясно тракване при прекосяване от 2D към 3D режим. Това решение явно значи, че Voodoo1 може да се употребява единствено за рендиране на цялостен екран и няма по какъв начин да демонстрира изображение в програмен прозорец.


Друг значим миг при SST1 е, че в нея не се употребява един процесор а два непрограмируеми ASIC (Application-Specific Integrated Circuit) профилирани чипа. Ако погледнем пътечките на печатната платка ще забележим, че всеки един от тези чипове, маркирани като TMU и FBI, имат лична памет. На картата с 4 MB буферна памет, тя е разграничена по равно: 2 MB за TMU за построяването на текстурите и 2 MB за FBI, които се употребяват за буфериране на цветовете и за z-буфера за пресмятане на дълбочината, като се записват надлежно 16-битови RGBA и 16-битови integer/half-float думи. Картата с 4 MB буферна памет поддържа резолюция до 640х480 пиксела – 2 буфера за цветовете (640x480x2) за задачите на двойното буфериране, плюс един буфер за дълбочината (640x480x2) = 1 843 200. Следващите модели с 4 MB памет за FBI дават резолюция до 800х600 пиксела – 2x800x600x2 + 800x600x2 = 2 880 000.
Конвейера за рендиране SST1


В спецификациите конвейерът не е разказан в детайли. Според моята интерпретация, животът на един триъгълник се състои от пет стадия:
Триъгълникът се основава и преобразува от централния процесор на компютъра – по това време нормално Pentium. Това изисква осъществяване на интервенциите умножение на матрица на точките от пространството на модела, ампутиране, унищожаване на еднородните координати и преобразуването на забележимото поле. В края на този развой остават единствено забележимите обикновени триъгълници от екранното пространствоС помощта на командата triangleCMD триъгълниците посредством PCI шината се подават на интерфейса на буфера на фрагментите (Frame Buffer Interface, FBI). Те се преобразуват в поръчки за растерни редове, създавани от Texture Mapping Unit. За всеки детайл от растерния ред (фрагмент) TMU извършва до четири поръчки за търсене на филтър, в случай че на разработчика е належащо билинейно филтриранеTMU изпраща фрагментите във FBI във тип на текстурирано 16-битово значение на RGBA цвета плюс 16-битовото z значениеFBI прави проби на фрагментите в z буфера, като ги съпоставя със заделената буферна паметНакрая, за всеки откъс се ползва осветление въз основата на атрибута за осветяването и се прави търсене в таблицата със смислите на мъглата, която включва 64 елементаНещо не съответствува
След като се запознахме с конвейера и знаем, че всеки съставен елемент (TMU, FBI, EDO RAM) работи с периодичност 50 MHz, виждаме че в плановете наподобява има някаква неточност и тази графична карта няма по какъв начин да доближи скорост от 50 мегапискела в секунда.

Необходимо е да бъдат решени два казуса.

Първо, TMU би трябвало да прочита четири тексела (Texture element) с цел да може да се извърши билинейното пречистване на текстурите. А това значи, че би трябвало да се извършат четири цикъла на послание към паметта. Това ще докара до дефицит на данни за TMU и надлежно, скоростта на запълване ще падне до 40/14 = 12,5 мегапиксела в секунда.

Има и друго тясно место на равнище FBI. Ако е включена инспекцията за дълбочина на z-буфера, то преди записването или отхвърлянето на входящото z значение на съответния откъс би трябвало да се съпоставя с това, което към този момент се намира в z-буфера. Това са две интервенции с паметта, които двойно биха понижили скоростта на запълване: 50/2= 25 мегапиксела в секунда.
Четирипосочният интерлийв на TMU
Решението на казуса с четирите семпъла е обещано в спецификациите на SST1.

„Паметта за данните на текстурите е разграничена на няколко редуващи се елементи, което дава опция на всяка обособена банка да има достъп до данните, без значение от адреса. употребен за достъп до данните в другите банки“ – част от SST1 спецификацията.

В спецификацията не се споделя дали се употребява мултиплексиране на адресите и дали можем да ги покажем без мултиплексиране и без делене:



По този метод, TMU архитектурата разрешава за един такт да се получат 4х 16-битови тексела.
Двупосочният интерлийв при FBI
Решението на казуса с двете интервенции за достъп до паметта при FBI също не е разказано в спецификациите. Но в документа се споделя, че скоростта на запълване е 100 мегапиксела за секунда, с помощта на опцията за запис на два пиксела за такт. Това се реализира посредством в двете посоки периодично повтаряне (двупосочен интерлийв).



FBI (Frame Buffer Interface) чете и записва по два пиксела едновременно (2х 1 пиксел, включващи 16-битов цвят и 16 битов z). За тази цел 21-битовия адрес се преобразува в два 20-битови адреса, в които най-младшият обичай е отритнат и се употребява за четене и запис на двата следващи пиксела. И защото логаритъмът за изчертаване на растерни линии се движи отляво надясно, четенето на два следващи пикела едновременно, извънредно доста оказва помощ за реализацията на този логаритъм.
Програмирането на Voodoo1
На най-ниско равнище програмирането на Voodoo1 става благодарение на регистрите, а API има изумително дребен брой команди. Всъщност, те са единствено пет: TRIANGLECMD (с закрепена запетая), FTRIANGLECMD (с плаваща запетая), NOPCMD (no-op), FASTFILLCMD (изчистване на буфера) и SWAPBUFFERCMD за зареждането на регистрите с данни за реализиране на z-теста, смесването, зареждането на цветовете на мъглата и още доста други. Зареждането на текстурите във VRAM става посредством 8 MB write-only памет, която е дублирана в оперативната памет на компютърната система.

Разработчиците програмираха Voodoo1 посредством Glide API. Логиката на дизайна на Glide API е въодушевена от GL/OpenGL, като главните разлики са, че вместо вместо префикса gl се употребява gr, а програмистите би трябвало независимо да ръководят VRAM, както в този момент се прави във Vulkan.

Ето един образец:
#include <glide.h> void main( void ) { GrHwConfiguration hwconfig; grGlideInit(void); grSstSelect( 0 ); grSstQueryHardware(&hwconfig); grSstSelect(0); grSstWinOpen(null, GR_RESOLUTION_640x480, GR_REFRESH_60HZ, GR_COLORFORMAT_RGBA, GR_ORIGIN_LOWER_LEFT, 2, 0); grBufferClear(0, 0, 0); GrVertex A, B, C;... // Init A, B, and C. guColorCombineFunction( GR_COLORCOMBINE_ITRGB ); grDrawTriangle(&A, &B, &C); grBufferSwap( 1 ); grGlideShutdown(); }

GLQuake
Теоретичният най-много на скоростта на запълване от 50 мегапиксела в секунда би трябвало да обезпечава освежаване на фрагментите с периодичност съвсем 50 Hz при резолюция 640х480. Но защото Quake комбинира по два пласта текстури за една и съща повърхнина (единият пласт е за цвета, а вторият – за картата на осветеността), то всеки кадър се рисува на два пъти, като при втория пас се ползва в допълнение отместване. В резултат от това с процесор P166Mhz играта Quake работи с 26 fps.
 Софтуерно рендиране  GLQUAKE VOODOO1
А в случай че резолюцията на играта бъде понижена до 512х384 пиксела, получават се плавни 41 fps, каквито по това време не може да доближи нито един съперник.
3fdx Voodoo2


Малко е да се каже, че 3dfx беше примерът на пазара от 1996 до 1998 година. След SST1, технологията Voodoo2 подвигна летвата на продуктивността още по-високо с помощта на 100 MHz EDO RAM, ASIC с периодичност 90 MHz, както и с потреблението на два TMU чипа, даващи опция за генерирането на един кадър с двойна текстура за потребностите на Quake единствено за един пас. Тази технология бе чудовищна за времето си, а и самите графични карти изглеждаха луксозно.

Скоростта за запълване при Voodoo2 съвсем се удвои и доближи 90 МР/с. Бенчмарковете на Quake доближиха до потресаващите за времето си 80 fps при система с процесор Pentium II 266 MMX.

За страдание, след излизането на Voodoo3 през 1999 година, ориста на 3dfx внезапно се промени. Компанията се опита да създава лични универсални карти и приключи да продава на OEM производителите своите технологии, тъй като се сблъска с възходящата конкуренция в това отношение.

Следващата графична карта Voodoo3 се оказа по-слаба спрямо видеокартата GeForce 256 на компанията Nvidia, която предлага хардуерната поддръжка на теселацията и осветяването на сцените.

В отговор на това, 3dfx отсрочи излизането на Voodoo4 и пристъпи към основаването на Voodoo5 с технологията VSA-100 (Voodoo Scalable Architecture). Резултатът бе много непредвиден. Новата графична карта с кодово име Napalm се сблъска с конкуренцията на още по-мощните NVidia GeForce 2 и ATI Radeon. И най-после, на 28 март 2000 година 3dfx разгласи банкрут и бе закупена от Nvidia.

За хората, живели през 90-те години и играли игри, ускорени от Voodoo1 или Voodoo2, компанията 3dfx си остава знакова компания, символизираща предимство в доста връзки. Тя стана нещо като ода на заслужения триумф, реализиран с помощта на проявената храброст, изключителния гений и упоритата работа. Адмирации.
.td_uid_44_5cc2f00c00a0f_rand.td-a-rec-img{text-align:left}.td_uid_44_5cc2f00c00a0f_rand.td-a-rec-img img{margin:0 auto 0 0}
Източник: kaldata.com

СПОДЕЛИ СТАТИЯТА


Промоции

КОМЕНТАРИ
НАПИШИ КОМЕНТАР