Giriş
Bir yıl kadar önce 3Dfx Interactive isimli bir şirket insanların PC'ler üzerindeki üc boyutlu grafikler hakkındaki düsüncelerini altüst edecek üc boyutlu yeni yongatakımlarını duyurdu. 3Dfx yongatakımının ilk sürümünden önce, bir ev bilgisayarı üzerinde 3 boyutlu yüksek uç grafiğe sahip olmanın makul fiyatlı bir alternatifi yoktu. Yüksek uç grafikler sadece SGI'lar, Sun'lar gibi pahalı özel donanıma sahip pahalı iş istasyonları üzerinde bulunabiliyorlardı. Number Nine, Diamond Multimedia ve Matrox gibi PC video adaptör üreticilerinin marketlerinde 3 boyutlu yeteneklere sahip oldugu bilinen makul fiyatli video adaptörleri vardı, ama bu yetenekler, SGI'lar ve diğer iş istasyonları üzerinde bulunan pahalı 3 boyutlu donanıma göre oldukça sınırlıydı.
Voodoo 3Dfx isimli 3Dfx yongatakımının sürımı ile birlikte 3 boyutlu yüksek uç grafikler vasat bilgisayar kullanıcısı için daha makul fiyatlı hale geldi. Bu yongatakımının performansı, 3 boyutlu yüksek uç grafikleri ev masaüstü bilgisayarına getirmedeki sonsuz emek açısından hiç kuşkusuz bir değerlendirmedir. Daha önceleri, diğer video yongatakımlarının 3 boyutlu yetenekleri, z-tamponlama (z-buffering) ve gourad gölgelemeyle (gourad shading) (daha ilkel olanlarından bazıları sınırlı metinsel haritalamayı desteklediler), ama bu yetenekleri çoğu zaman yalnızca belli bir çözünürlük ya da renk derinliği için mümkündü. Ne yazik ki, bir uygulamada çalışmak amacıyla bu yeteneklerden bazılarınü koymak için pek çok CPU müdahalesi gerekiyordu.
Video Adaptörlerinde 3 Boyut Yeteneklerindeki Sınırlamalar
İşte video adaptörlerinden birinin ne gibi yetenek kısıtlarına sahip olabileceğine dair bir örnek: z-tamponlamayı desteklediğini iddia edebilir ama yalnızca başka şekilde kullanılmayan video belleğindeki piksellerin z-koordinatlarını depolayan video sürücüleri içinde kodu bulunabilir. Bu z-tamponlama belki sadece daha düşük çözünürlüklü ve daha düşük renk derinlikli modlarda (yüntemlerde) kullanılabilir, çünkü yüksek modlar daha fazla bellek kullanır. Daha yüksek modlarda z-koordinatlarının depolanmasına olanak tanıyacak yeterince serbest bellek olmayacaktı. Video belleğindeki bu z-koordinatlarının depolanmasıyla bile, uygulama, video belleğindeki z-tamponla yeni piksellerin z-koordinatlariını kıyaslamak için hala CPU kullanma gereksinimi duyacaktır. Bu kıyaslamalar önemli ölcüde CPU gücü harcanmasını gerektirdiğinden, video adaptörünün z-tamponlama yeteneği; gerçekte klasik z-tampon darboğazını ortadan kaldırmamaktadır. Eğer bu sizin icin gereğinden fazla bilgi ise endişelenmeyin... Bu, 3 boyutu ve 3Dfx yongatakımını desteklediklerini iddia eden video adaptörleri arasındaki farklılıkları görmek icin gerekli olmayan, teknik bir açıklamadır.
Voodoo 3Dfx Yongatakımının Yetenekleri
Voodoo 3Dfx'in aynı ederdeki diğer video Yongatakımı üreticilerinden biriyle karşılaştırılamayacak kadar çok gelişmiş 3 boyutlu yeteneklere sahip olduğunu söylemek yeterlidir. Yongatakımı, gourad-golgeleme, derinlemesine tamponlama (w-tamponlama kadar z-tamponlama da buna dahil) alfa harmanlama, bulanıklaştırma, renk anahtarlama ve dithering gibi 3 boyutlu genel yetenekleri över. Ayrıca doğru düzgün-perspektifli metin haritalama, uç-doğrusallıklı mip-haritalama, metin aydınlatma, alt-piksel düzeltimi ve metinsel boşluk açılımı da yetenekleri arasındadır. Tüm bu yetenekler çok az ya da hiç uygulamasız, tamamen donanımda gerçekleştirilmektedir. Şu an için Voodoo 3Dfx koordinat kurumunu desteklemiyor, ama modern CPU'lar bu hesaplamalar için fazlasıyla işlemci gücü sağladıklarından genelde bir problem teşkil etmiyor. 3Dfx yongatakımının Voodoo2 isimli bir sonraki nesli grafikler için daha fazla hız sağlayarak, bu yetenege sahip olacağını dikkate alan Voodoo2'yi uygulayan video adaptörlerinin test modelleri bile hız rekorları kırıyorlar! Daha da önemlisi, şu anki Voodoo yongatakımı yeteneklerinin görüntü bellek performans ederi göze çarpan bir özelliktir.
Voodoo 3Dfx Yongatakımının Sınırlamaları
Ne yazik ki, Voodoo 3Dfx yongatakımının da kendine göre kısıtları var. Bu yongatakımının birincil kısıtı sadece tüm-ekran sunum yapabilmesi ve bir bilgisayardaki tek bir adaptör olarak etkin şekilde kullanılamaması. 3Dfx yongatakımını destekleyen video adaptörleri onunla birlikte çalısan bağımsız başka bir video kartına gereksinim duyuyorlar. 3Dfx'in beraberindeki adaptör tamamen bağımsız adaptör tarafında, birlikte çalısır. Çalışma tarzı şudur: İşletim sistemi normalde bağımsız, normal bir video adaptörü kullanür, ama herhangi bir uygulama, bir sunum icin 3Dfx yongatakımını kullanmak istediğinde, 3Dfx'i başlatmaları icin 3Dfx sırıcılerine erişir. Ardından 3Dfx harekete geçer ve uygulama tarafından çağrılan Glide (Kayma) fonksiyonlarına gore sunuma başlar.
3Dfx adaptörsüz normal bir konfigürasyonda, bağımsız adaptör, ana levha üzerindeki kendi taşıt slot'u üzerinde oturur ve monitöre bağlanacak bir çıktıya sahiptir. Video adaptörünün çıktısı daha sonra monitörde görüntülenecektir. Monster3D ve Pure3D video adaptörlerinin her ikisine de ayni monitöru kullanma hakkı veren bir geçiş sistemi kullanırlar. Bunun gibi bir konfigürasyon, ana levha üzerindeki slot'lara yerleştirilmis her iki video adaptörünü de içerir. Bağımsız video adaptörünün çıktısı, genellikle 3Dfx adaptörünün içinde yer alan bir geçiş kablosu aracılıgıyla 3Dfx üzerindeki bir girdiye bağlanır. Ardından monitör de 3Dfx adaptörünün çıktısına bağlanır. Normal çalışma durumunda, bağımsız video adaptörü 3Dfx adaptörünün girdisine giden kendi normal video sinyalini üretir ve 3Dfx de videosinyalini monitöre iletir. Bir uygulama 3Dfx sürücüsüne 3Dfx'i başlatmasünü söylediğinde, 3Dfx adaptöruü geçisşi kapatır ve bağımsız video adaptörünün sinyali artık monitöre ulaşamaz. Bunun yerine, 3Dfx adaptörü monitöre kendi sinyalini yollamaya başlar. 3Dfx adaptörü tarafında yapılan tüm sunum, uygulama, 3Dfx'i sonlandırmak için sürücüye bir kapanış komutunu devreye sokana kadar ve bağımsız video adaptörünün sinyalini monitöre göndermeye başlayana değin, monitöre ulasir.
Ne yazık ki, geçiş konfigürasyonuyla, normal video adaptörünün cıktısı görülmez ve bu durum Xwindows gibi bir pencereleme sistemi kullanan ve bir pencerede sunum yapmak isteyen bir uygulama için problemlere yol açabilir. 3Dfx adaptörleri tarafından desteklenen başka bir yöntem, bu durumlardaki uygulamalar için daha iyi sonuç verebilir, ama bunun için bir monitöre daha ihtiyaç vardır. Eğer iki monitörünüz varsa, normal bağımsız video kartının cıktısına bağlayabilirsiniz, diğer monitör de 3Dfx adaptörünün çıktısına bağlanabilir. Bu şekilde, bir monitör daima sizin bağımsız adaptörınızın sinyalini görüntüleyecektir. Diğer monitör, 3Dfx adaptörü başlatılana kadar hiçbir şey görüntülemeyecektir. 3Dfx devreye girdiği an, bir monitörü normal pencereleme sisteminiz için kullanabilirsiniz, diğer monitör de 3Dfx'ten tamekran görüntü sağlayacaktır.
3Dfx tarafından yapılan 3Dfx RUSH Yongatakımı isminde, bir pencerede sunum yapabilen daha yeni bir yongatakımı var. Bu yongatakımlı video adaptörleri Rush yongatakımının tarafında bir de 2 boyutlu bir yongatakımını barındırabilir ve bunlar ortak bir çerãeve tamponunu paylaşabilirler. Şu an bunun için Linux desteği olmasa da, bu durum burada ele alınmayacaktır ama gelişme sürmektedir.
3Dfx yongatakımının diğer bir kısıtı da günümüz video kartlarının ulaşabildiği kadar yüksek çözünürlüklere erişememesidir. Guünümüzün bağımsız video kartları 1280x1024, 1600x1200 ve daha yüksek çözünürlükleri bile desteklerken, 3Dfx video adaptörleri genellikle 640x480'den öte gidememektedirler. Bu, tahmin edebileceğiniz gibi bir kısüttan daha fazla bir şey değildir. 3Dfx'in anti aliasing ve metin filtreleme yetenekleri ile büyük miktardaki nesneler 640x480 çözünürlügüne şıkıştırılabilir ve sanal olarak pikselizasyon ortaya çıkmaz. Aslına bakarsanız, sadece görüntüye bakarak bir 3Dfx uygulamasının çözünürlügünü belirlemek oldukça zordur!
Monster3D gibi daha yaygın olan taban seviyeli 3Dfx kartları yalnızca 640x480'e erişebilir. Bazılarının 800x600'e ulaşabileceğine inanıyorum, ama bana bu çözünürlükte, normalde bu tamponlar icin kullanılacak olan bellek ekstra çözünürlük için kullanılacagından, adaptörün derinlemesine ve alfa tamponlama gibi yeteneklerini kaybettiği söylendi. 3 boyutlu kuvantum modellerinden olan yüksek uç 3Dfx adaptörleri, derinlemesine ve alfa tamponlamada sorun çıkarmaksızın 800x600'u destekleyebilmektedir.
OEM Üreticileri 3Dfx Kullanıyor.
3Dfx Interactive bu yüksek performanslı 3 boyutlu yongatakımının ureticisi, ama her nasılsa, bu yongatakımını kullanan video adaptörlerini üretmiyorlar. Diamond Multimedia, Orchid Technology ve Canopus Corporation gibi diğer firmaların hepsi de yongatakımını uygulatan video adaptörleri yapıyorlar. Diamond Monster3D'yi, Orchid Righteous3D'yi ve Canopus da Pure3D'yi yapiyor. Quantum 3D isimli bir firma 3Dfx'ten ayrıldı ve Voodoo'nun ileri konfigürasyonlarını kullanan video adaptörleri (çoklu PixelFX ve TexelFX birimleri, daha fazla çerçeve tamponu ya da metin salt okunur belleği,vb.) sunuyor. Bu modeller Obsidian 3D modelleri olarak biliniyor. 3Dfx yongatakımı kullanarak video adaptörü üreten video üreticilerinin tüm listesi icin 3Dfx web sitesine (www.3dfx.com) uğrayabilirisiniz.
Voodoo 3Dfx Içselleri
Aslinda Voodoo yongatakımı, ayrı Voodoo altsistemlerinden oluşan ileri düzeyde esnek grafik sunumu yapan bir lokomotif gibi duüşünülebilir. Altsistemlerin çeşitli kombinasyonları olabilir ama en basit anlamdaki konfigürasyon, sadece tek bir Voodoo altsisteminden ibaret olacaktır. Her bir altsistem, PixelFX ve TexelFX birimleri olarak bilinen ayrı sunum işlemcilerinden olusur. PixelFX, derinlik tamponlama ve gourad gölgeleme gibi piksel işlemlerinden sorumlu olan birimdir. TexelFX birimi, metin filtreleme ve projeksiyon gibi metinsel işlemlerden sorumludur. Bu birimler birlikte aydınlatılmüş metinler gibi etkiler üretmek için beraber ãalışabilirler. Bu birimlerin herbirinin özel işlemleri için kullanacakları kendi video bellekleri vardır. PixelFX, belleğini çerçeve tampon için piksel depolamak amacıyla kullanır. TexelFX ise belleğini metinleri depolamak için kullanir.
Her bir Voodoo altsistem kombinasyonu bir PixelFX birimi içerir, ama metinsel haritalama hızını arttırmak için bir, iki ya da üç ayrı TexelFX birimi ile konfigüre edilmiş altsistemler olabilir. Dahası, bir Voodoo makinası çoklu altsistemler ile konfigüre edilebilir ve makinanın sunum oranını etkin bir şekilde ikiye katlamak için tarama çizgisi girişikleme (scanline interleaving) kullanılabilir. Bu ileri düzey konfigürasyonlar; deneme olaylarında kanıtlanmıs olan yüksek uç SGI iş istasyonlarında bile daha yüksek performans sağlama yeteneğine sahiptirler. Tabii ki, bu ileri düzey konfigürasyonlar, popüler Voodoo video adaptörlerinde kullanülan ve birçok kullanıcı tarafından olduğu düşünülen basit konfigürasyondan biraz daha pahalıdır.
3Dfx Programlama
3DFX Interactive donanımlarını basite indirgemek adına mühendisliğe ters düşecek bir şey yapma korkusu nedeniyle yongatakımlarının kayıt düzeyindeki programlama dokümanlarını basmayacaklar. Bunun yerine, Glide isimli bir SDK'yı yayıyorlar; bu, donanımın tepesinde "mikro-kayman" görevi görür. Glide, çok az duyulmus 3Dfx yongatakımlarını programlamak için daha kolay bir Uygulama Programlama Arayüzü (API) geliştirirken, kayıt özelliklerini saklayan bir yazılım kitaplığından kurulu bir fonksiyonlar kümesidir. Kitaplıklar, 3Dfx'in API için çok kapsamlı dokümantasyonunu desteklemek amacıyla seçtiği platformlara (Linux dahil) nakledilir. Geliştiriciler, 3 boyutlu kendi uygulamalarını 3Dfx ile arabirim oluşturacak şekilde API'yi kullanırlar. Glide, OpenGL ya da Direct3D'den farklı olarak çok düsük seviyeli bir grafik kitaplığıdır. Görüntü listeleri ya da dönüsüm fonksiyonları gibi yuksek seviyeli 3 boyutlu grafik yeteneklerinden birini saglamaz. Tam olarak, 3Dfx'in kayıtlarından küçük bir özet sağlar ve sadece 3Dfx üzerinde direkt olarak donanım içinde uygulaması olan yazılım fonksiyonları sağlar. Glide'i Linux'a nakleden kişiyle görüştüğümde kitaplığın çok basit olduğundan bahsetti. Basit anlamda Glide fonksiyonuna doğru parametreleri girdiğinizi ve fonksiyonların tam olarak parametreleri, kart üzerindeki kayıtlara ittiğini ve 3Dfx'i sunum yapması için çağırdığını söyledi.
Bu, OPENGL geliştiricileri ya da Direct3D geliştiricileri 3Dfx uygulamaları geliştiremezler anlamına gelmiyor. OpenGL ve Direct3D sürücüleri; geliştiriciler, OpenGL ve Direct3D API'lerini kullanabilsinler diye Glide'i kullanmaları için yazılmışslardır ve sürücü, yüksek seviyeli fonksiyon çagrılarını ve işlemlerini 3Dfx'i dönüşümlü olarak çalıştıran Glide'a özgü işlemlere dönüştüreceklerdir. Bu, gelişme açısından oldukça hızlı ve etkin bir yöntemdir.
3Dfx ile Mesa Kullanımı
Mesa (OPENGL'in pek çok işletim sistemi altında çalışan edersiz uygulaması) ile Glide arasında bir arabirim oluşturan bir sürücü, OPENGL uygulamalarının Linux ve Win95 altında donanım desteğiyle birlikte çalışabilmesi için yazılmıştır. Linux edersiz, Linux derleyicileri edersiz, Mesa edersiz, 3Dfx'in Glide SDK'si edersizdir, bu nedenle temelde bu kombinasyon; çok uygun ücretli yüksek performanslı bir geliştirme sistemi sağlar. Ne yazik ki Alpha ya da Sparc CPU'ları üzerinde çalisan Linux için Glide SDK'si yoktur, bu nedenle bu durum sadece intel 386 platformuna uygulanabilir.
Bu yazıyı yazdığım sırada Mesa'nın en yeni sürümü 2.5 ve 2.6'nin da deneme aşamasında beta sürümleri bulunmaktadır. Mesa sürücüsü; metinsel haritalama, derinlik tamponlama, bulanıklaştırma ve karıştırma kadar düz gölgeleme ve gourad gölgeleme ile nokta, çizgi ve çokgen sunumunu ilerletme yetenegi açısından oldukça gelişmiştir. Daha önce, Voodoo 3dfx yongatakımının tamekran sunumundan başka bir yeteneği olmadığını vurgulamama rağmen, Mesa sürücüsündeki küçük bir çentiğe (hack) pencere içi sunum dolayısıyla minnettar olmak da olasıdır. Bu çentik, veriyi 3Dfx çerçeve tamponundan alır ve sonu PCI taşıtı üzerinden bağımsız video kartının salt okunur belleğine nakleder. Bu, tüm ekran 3Dfx sunumu kadar hızlı olmasa bile, yine de Mesa'nın tek başına yazılım sunumundan çok daha hızlıdır.
Mesa'yı ftp://iris.ssec.wisc.edu/pub/Mesa ftp sitesinden yöreyeçekebilirsiniz. Mesa iki ayrı paket halinde dagıtılıyor. Biri ana kitaplıgı, dosyaları içeriyor ve MesaLib ismiyle başlıyorken, diğer dosya demo dosyalar paketinden ibaret kalıyor. Demo dosyalar paketi MesaDemos ile baslamalıdır. Yüklemek için paketleri açmanız (untar) ve açma işlemi esnasında oluşturduğunuz dizine geçmeniz gerekiyor. Bu aşamadan itibaren Mesa'yı kurarken önünüzde birkaç seçenek var. Mesa'nin 2.5 sürümünden başlamak üzere hız artsın diye intel 386 donanım dilinde (assembly dilinde) yeniden yazılmış dönüşüm yordamları vardı. Maalesef birazcık hatalılar ama Mesa 2.6'nin beta sürümünde bu hatalar düzeltilmiş durumda. Mesa'yı 3 boyut destekli ama donanım dili yordamları olmaksızın kurmak için "make linux-glide" (tabii ki tırnak işareti olmaksızın) yazmanız gerekiyor. Mesa'yı 3 boyutlu ve donanım dili yordamlarıyla birlikte kurmak icin "make linux-386- glide" (gercekte komut satırında yazarken yine tırnakları kullanmıyorsunuz.) yazın. Mesa 2.6'dan itibaren derleyicinin Mesa'yı ünlü GlQuake ve QuakeII oyunlarının kullanımı icin eniyileyecek kodu üretmesini sağlayan makefile içine yazılan derleyici eniyilemeleri vardır. Eğer Mesa'yı kurarken GlQuake eniyilemesini isterseniz "make linux-386-quake-glide" demeniz gerekir.
Mesa'yi kurduktan sonra onun yüklenmesi için pek çok yol var. Bir alternatif, include ve lib dizinleri içinde yerleşik olan dosyaları /usr/lib ve /usr/include ya da belki /usr/local/lib ve /usr/local/include koymak olabilirdi. Ya da Linux'un dinamik bağlayıcısı onları bulana değin onları herhangi bir dizine de koyabilirdiniz. Dinamik bağlayıcının baktığı dizinler /etc/ld.so.conf dosyasında konfigüre edilebilir. Çünkü Mesa boyle hızlı bir adımda geliştirildi ve ben serbest birakıldıklarında betaları test etmeyi çok severim, her Mesa sürümü için ayrı dizinler açarım. Hangi sürümü kullanmak istersem isteyeyim, kullanmak istediğim sürümü içeren dizini içine alması için ld.so.conf dosyam} değiştiririm. Şu anda sürüm kitaplıgını (/usr/local/Mesa-2.5/lib) ve kapsama (include) (/usr/local/Mesa- 2.6/include) dosyalarını tutan /usr/local/Mesa-2.5 dizinim var. 2.6 betaları için de /usr/local/Mesa- 2.6b1 ya da /usr/local/Mesa-2.6b2'yi kullanıyorum. Nasıl yaptığınız tamamen size kalmış bir şey, ama unutmamanız gereken ÇOK önemli bir adım var. Yeni kitaplıklar yüklediğinizde ya da /etc/ld.so.conf dosyasındaki dizinleri değiştirdiğinizde mutlaka ldconfig uygulamasını çalıştırmanız gerekir. Bu, kitaplık dizinlerine girerek doğru sembolik bağlantıları kurar ve birkaç işlem daha gerçekleştirir. Eğer bağlayıcının şu anda hangi kitaplıkları tanıdığını görmek isterseniz, ldconfig'i -p secenegi ile birlikte kullanabilirsiniz. Bir uygulamanın hangi Mesa sürümünü kullandığını görmek istersem
ldconfig -p | grep Mesa
yaziyorum ve bu bana Mesa kitaplık incelemelerini listeliyor. Mesa'yı yükledikten sonra devam etmeye hazırsınız. 3Dfx'i kullanan bir uygulamayı çalıştırmak için onu root olarak çalıştırmalısınız. Ayrıca kullanmakta olduğunuz Xsunumcusunu piksel başına 16 bit renk derinliği kullanacak sekilde ayarlamanız gerek. Eğer demoları yöreyeçektiniz ve actıysanız, Mesa'yi kurduğunuzda onlar derlenmiş olmalı ve böylelikle onları test edebilmelisiniz. Mesa'yı kullandıgınız zaman bir Mesa uygulamasını çalıştırmanız için 3 farklı yol var. Herşeyden önce, 3Dfx'i pek de desteklemeyen bir yazılım sunumuna herşeyi yaptırabilirsiniz. Bu benimsenmiş olandır. Uygulamanın 3Dfx'i kullanması için çevresel bir degişkeni ayarlamanız gerekiyor. Uygulamayi 3Dfx'le birlikte tamekran modunda çalıştırmak için,
MESA_GLX_FX=fullscreen
ifadesini kullanın, program 3Dfx'i kullanacaktır. Bir Mesa programını kullanmak Xwindows içerisinde entrikalı olabilir. Bir Mesa programını çalıştırdığınız zaman, aslında Xsunumcusu 3Dfx'in var olup olmadığını bile bilmez. Olay şudur: Bir pencere başlatıldığında ve açıldığında, 3Dfx başlatılır ve sunuma başlayabilir. Eğer fare imleci Xsunumcusu üzerinde pencerenin dışına çıkarsa, Mesa programı artık klavye girdisini ya da fare hareketlerini algılamayacaktır. Bu nedenle, eğer birden fazla monitor kullanmıyor iseniz, eğer pencere yöneticiniz destekliyorsa etkileşimli pencere yerleşimini kullanmanız tavsiye edilir. Aksi halde, Mesa programını başlattığınız anda, 3Dfx arada devreye girecektir ve Xsunumcu masaüstü bilgisayarınızın fare imlecini pencere içerisinde geriye yerleştirildiğini göremeyeceksiniz. Fare imleci bir kez pencere içine girdi mi bir daha dışarı taşınamayacak şekilde fare dönüsüne izin veren bir Mesa programı yazılabilir. Pencerenin sınırına ulaştığı anda pencerenin ortasına geri gönderilecektir (bu, fare dönüşü olarak bilinir).
Bir uygulamanün bir pencerede görüntüleştirme yapmak uzere 3Dfx'i kullanması için başka çevresel değişkenleri de ayarlamanız gerekir.
SST_VGA_PASS=1
SST_NOSHUTDOWN=1
şeklinde.
Ardindan MESA_GLX_FX=window dersiniz. Bu değerleri ayarlayıp programı çalıştırdıktan sonra, sunum sırasında sadece yazılım görüntüleştirimini kullandıgınız zamankinden daha iyi performans almalısınız. Daha Çok Bilgi İçin::
- 3Dfx Interactive'i ziyaret edin.
-
|