BOLUM 1: Temel Fiziksel Ozellikler
Arkadaslar bu yazinin amaci grafik kartlarinin ozelliklerini ve yapilarini anlatmaktir. Son zamanlarda cok sık sorulan sorular ve anlasilamayan ozellikleri netlestirmek icin bu dokuman hazirlanmistir. Oncelikle grafik kartlari diyince gunumuzun modern 3D grafik kartlarini anlatmaya calisacagim. Yani 2D ve 3D ozelliklerini ayni anda sunan kartlardan bahsedecegim.
Oncelikli olarak bilinmesi gereken grafik kartlarinin bir sub-system oldugudur. Yani bilgisyardan ayri olarak kendi icinde calisan, kendi BIOSu ve kendi hafiza denetleyicisi olan bir eklenti kartindan (add-on card) bahsediyoruz. Bu kart icinde 3 ana oge bulunur. Bunlarda ilki ve en onemlisi tum grafik, doku ve vektorel hesaplamalari yapan grafik islemcisidir. Son yillarda grafik islemciler o denli gelismislerdir ki gunumuzun en guclu ve modern CPUlarindan kat ve kat daha yuksek transistore sahiptirler ve islem kapasiteleri de cok yuksektir. Gelistiriciler tarafindan kismen veya tamamen programlanabilir olmalari sayesinde son zamanlarda bu grafik islemcilerine GPU (Graphical Processing Unit) ya da VPU (Visual Pprocessing Unit) isimleri verilmistir.
GPUnun asil amaci islem yapaktir. Yani 3D ortamda bir noktanin koordnatlarinin konumu ve diger noktalara nasil baglanacagi, ucgen ve poligonlarin durumu ve nasil olusturulcagi, doku kaplamalarinin yapilmasi ve kayan nokta olarak tabir edilen bir noktanin bir sonraki goruntu karesinde nasil hareket edecegi konusundaki tum hesaplamalari yonetir. GPUnun da ayni CPUlar gibi ayni anda isleyebilecegi veri miktari vardir. Gunumuzun en modern GPUlari 256bitliktirler. Yani ayni anda 256bitlik veriyi isleyebilir veya hesaplayabilirler. Su anda sizin de bildiginiz gibi bilgisayar CPUlarin cogu 32bittir. Bu da GPUlarin gucunu ortaya koymaktadir. Bir anda islenebilecek veri miktari ne denli cok olursa, performans da o denli artar.
GPUlarin verileri isleyebilmesi icin is hattina sahip olmalari gerekir. Bu is hatlari ne kadar fazla olursa islenebilecek veri ayri kanallardan o denli cabuk islenebilir. Gunumuzde en yuksek seviye ekran kartlari 16 adet is hattina sahiptir ve bu oldukca yuksek bir rakamdir. Bu 16 adet is hattinin amaci hafizadan gelmis olan veriyi GPUnun islem noktari olan FPU unitesine aktarmaktir. Boylece veri islenir ve goruntu olarak aktarilir. Her pipeline (is hatti) 1 veya 2 adet TMUya sahiptir. TMU ise bir is hattinda kac tane texture yani doku tasinabilecegini gosterir. TMU sayisi ne kadar fazla olursa GPUnun doldurma hizi yani fillrate de o denli artar.
GPU ayni zamanda bir hafiza denetleyicisine de sahiptir. Bu hafiza denetleyicisi, PCBnin (yani kartin uzerine insa edildigi silika alasimli yari iletken board) durumuna gore 256, 128, 64 ya da 32 bit veriyolu genisligine sahip bir kanaldan hafizayi yonetir. Veriyolu genisligi ne denli buyuk olursa, GPUya iletilen birim zamandaki veri ve doku miktari da o denli yuksek olur. Yani bir karilastirma yapmak gerekirse bu veriyolu bir otobana benzetilebilir. Otobandaki seritler ne kadar fazla olursa birim zamanda o kadar fazla arac gecebilir. Veriyolu genisligi ekrk\an kartinin yuksek performan vermesinde direkt rol oyanayan bir faktordur. Bu yuzden en ust seviye ekran kartlari 256 bitlik genis bir veriyoluna sahiptirler. Teorik hafiza bant genisligi hesaplamalarinin nasil yapildigini ilerki bolumlerde okuyacaksiniz.
ONEMLI!!!! GPUnun ayni anda isleyebilecegi veri miktari ile hafiza denetleyicisinin veriyolu genisligi pekcok kisi tarafindan karistirilmaktadir. Unutmayin ki gunumuz GPUlarinin hemen hepsi 256bittir, ancak hafiza denetleyicileri 64, 128 ya da 256 bit olabilmektedir. Ekran kartinizi satin alirken hafiza denetleyicisinin 64 bit olmadigina dikkat edin.
Hafiza ekran kartinda oldukca onemli bir parametredir. Dogal olarak hafiza miktarinin artisi performansi arttirir ancak bu islem dolaylidir ve her zaman dogru olmayabillir. Ekran kartinin hafizasi basi islemleri, dokulari ve algoritmalari depolamak icin kullanilir. Hafiza miktari 256MB olan bir kartin maksimum 80MB tekture kullanan bir oyunda 128MB hafizaya sahip eslenigi ile arasinda bir performans farki yoktur. Ancak bazi goruntu kalitsi iyilestirici ozelliklar acildigina (Anti-Anliasing ve Anisotropic Filtering) ekran karti her bir texture icin mipmap diye tabir edilen bazi layerlar (tabaka) olusturur ve her texture bircok kez ekran karti hafizasina depolanir. Bu yuzden bazi tektirelarin birden fazla olarak hafizada yer almasi da gerekebilir. Bu yuzden hafizanin artmasi dolayli yoldan parformansi etkileyebilir. ANCAK! Herkesin de acikca bildigi gibi AntiAliasing ve Anisotropic Filtering Perfomansi oldukca dusuren uygulamalardir ve bu ozellikler acik iken GPU buyuk bit yuk altina girer. GPU eger bu yuku kaldiramayacak olursa ekran karti yeterli framerate (fps) saglayamaz ve oyunun oynanabilirligi azalir. Gunumuzde herkesin agzinda olan Ekran kartinin hafizasi ne kadar coksa o kadar iyidir sozune guvenerek firmalar alt ve orta seviye ekran kartlarini cok yuksek miktarda hafiza ile donatarak yuksek fiyata satmaktadirlar. Dusuk seviye ekran kartlarinin en unlulerinden olan nVidianin GeForceFX 5200 adli urunu, bazi frmalar tarafindan 256MBlik versiyonlarla piyasaya suruluyor. Ustte de acikladigim gibi bu denli yuksek hafizanin faydasi ancak AntiAliasinge ve Anisotropic Filtering aciken farkedilebilir. Ancak dusuk GPU ve RAM hizi, 4 is hatli bir ekran karti olan GF FX 5200un bu hafizayi kullanabilmesi mumkun degildir. AA ve AF acik oldugu zaman GPU cok zorlanacak ve framerate dusecektir. Bu yuzden bu tur pazarlama hilelerine kanip yuksek hafiza = yuksek performans mantigini kafanizdan silmelisiniz.
Hafizanin bir baska onemli ozelligi de tipi ve hizidir. Artik gunumuzde eredeyse her ekran karti DDR-SDRAM diye tabir edilen bir saat dongusunden 2 adet veriyi ayni anda tasiyabilen Ramlere sahiptir. Ancak DDR-SDRAM gelistirlmis ve GDDR2 ve GDRR3 adi altina daha soguk calisan ve daha yuksek hizlara cikabilen chipler uretilmistir. Gunumuzde satilan en ust duzey ekran kartlari olan GeForce 6800 serisi ve Radeon X800 serisi kartlar GDDR3 hafiza tipini kullanmaktadirlar. Bu sayede hem daha az isinan belleklere sahip olurlar hem de 1Ghzten bile daha hizli calisan bellekler ile daha yuksek hafiza bant genisligine sahip olurlar.
Teorik hafiza bant genisligi nasil hesaplanir? Aslinda oldukca basit bir matematik islemidir.
(Bellek hizi) x (Hafiza denetleyicisinin veriyolu genisligi) / 8 = (MB/s cinsinden teorik hafiza bant genisligi)
Yani bir ornek verecek olursak Radeon X800XT PE ekran kartinin bellek hizi 1150Mhztir ve 256bitlik bir hafiza denetleyicisi veriyolu genisligine sahiptir. Dolayisiyla teorik hafiza bant genisligi:
1150x256/8 = 36,8GB/s olacakir.
Ekran kartinin temel fiziksel ozellikleri bunlarla sinirlidir. Bundan sonraki bolumde size ekran kartlarinin grafiksel ve goruntu kalitesi iyilestirmede kullanilan diger ozelliklerini anlatmaya calisacagim. (DirectX, CineFX, 3Dc, FSAA, AF, LOD,...vs)
BOLUM 2: Gelismis ozellikler ve goruntu iyilestirme
Bu yazinin amaci, grafik karti dosyasinin ilk bolumunde anlattigim temel fiziksel ozelliklere ek olarak goruntu iyilestirmede kullanilan ozelliklerin bazilarini ve 3D dunyasinda kullanilan bazi terimleri ozetlemektir. Her terimi ozetleyemeyecegim icin en cok karsilasilan terimlere deginiyorum.
Hepinizin bildigi gibi dunumuz ekran kartlari 2D ve 3D ozellikleri bir arada bulunduran bir alt-sistemdir. 3D dunyasi ilk olarak 1980lerin ortasinda gelismeye baslamis olsa da bizim gibi son kullanicilarin bu devrimle tanismasi 1996 yilinda oldu. Silicon Graphics firmasindan ayrilan iki muhendis 3dfx adli firmayi kurdular ve 3D dunyasini ilk olarak son kullaniciya actilar. Bir 3D sahnenin yaratilmasi icin bir APIye, yani Application program Interfacee ihtiyac vardir. Bir rutin, program seti tplulugu olan bu arayuz yardimiyla bir 3D sahne tasarlanabilir.
Gunumuzde 2 buyuk API bulunmaktadir: Microsoft Direct3D ve OpenGL. Piyasada 3. baska bir API de yaygin olarak kullanilmaktaydi ve bu APIyi eskiden beri 3D dunyasini takip eden kullanicilar bilecektir: GLIDE. Glide, 3dfx tarafindan OpenGL baz alinilarak gelistirilmis bir API idi ancak 2000 yilinin sonunda 3dfxin tum haklarinin nVidia tarafindan satin alinmasi ile piyasadan silindi.
Bizim yaygin olarak kullandigimiz 3D programlar olan oyunlar, gunumuzde geri kalan 2 yaygin Api ile programlanip olusturulmaktadir. Microsoftun Direct3Dsi su anda son kullanicilar tarafindan en cok kullanilan API olmasina ragmen, OpenGL, acik kaynak kodlu bir yazilim olmasi ve profesyonel alanda Direct3Dden cok daha fazla programlanabilir ve genisletilebilri olmasi acisindan daha fazla ragmet gormektedir.
Direct3D, Microsoftun Windows95e gecis yapmasi ile kullanilmaya baslanan bir uygulamadir. DOS ortaminda oynanan oyunlarin terk edilmesi ve 3Dnin duyurulmasi ile Microsoft grafik yongasi ureticileri ile ortaklasa calisarak D3D standartlarini surekli guncelledi ve gerekli gelistirmeleri yapti. Su anda kullanmakta oldugumuz DirectXin 9. surumu Direct3Dnin gelmis oldugu en son noktayi belirlemektedir.
OpenGL ise son kullanicidan cok profesyonel CAD/CAM ve 3D cizim uygulamalarinin ureticilerinin dogrultusunda gelismis daha farkli bir APIdir. Ancak OpenGL bizim gibi son kullanicilarin da kullandigi bazi oyunlarda onemli rol oynamistir. İd Softtwarein Quake2, Quake3, Doom3 gibi oyunlari bu APIyi kullanarak gelistirilmis ve oldukca da basarili olmuslardir.
3D dunyasinda su anda sikca duydugumuz bir terim bulunmaktadir: Shader. APIlerin gelisim sureclerinde eklenen bu ozellik bir cesit vektorel golgelendirme algoritmasidir. Pixel ve Vertex olarak iki farkli shader bulunmaktadir ve pixel shader adindan da anlasilacagi gibi belirli pixellerin belli bir kod ya da kodlar zinciri vasitasiyla golgelendirerek daha gercekci 3D sahnelerin yaratilmasini saglar. Vertex Shader ise daha cok islenmemis bir 3D sahnedeki objelerin birbirlerine olan baglarini ve hareketlerinin daha onceden yazilmis bir kod yardimi ile kontrol edilmesini saglar. Pixel Shader efektlerini bir ornek olarak su yuzyinde yansima efektleri verilebilir. Vertex shader efektleri ise goz ile gorulebilecek bir sey olmasa da, ornegin bir cesit ruzgarin 3D sahnedeki objelerin hareketi uzerine etkisi olarak orneklenebilir.
Baska sikca duyulan bir ozellik de mappingdir. Bump, parralax, displacement, mip-map gibi cesitli metodlar kullanilarak yapilan bu uygulama, doku kapli bir yueyin eblirli noktalarinda glgelendirme efekti vermeye yarar. Ornegin bir tas duvarin onunde yanan bir atesin olusturacagi golgelerin nasil ve ne yonde olusacagi konusunda mapping kodlari gorevi ustlenir. Bump mapping belli bir yer degistirme ya da kabartma olmadan sanal olarak cikinti ve girintileri olustururken, displacement mapping, doku kapi yuzeylerin seklini de degistirerek daha gercekci efekler olusturabilir.
Anisotropic Filtering. Bir cogumuz bu terimi duyuyoruz ama cogumuz ne ise yaradigini bilmiyor. Adindan da anlasilacagi gibi bir cesit filtreleme yontemidir bu. 3D sahnelerde baki acisi kuculdugunde yuzeyler daha flu gozukur ve netlik azalir. Bunun sebei ise daha az alanda daha fazla detay gostermek zorunda kalan APInin zorlanmasidir. Fakat bir cesit sonradan filtreleme olan Anisotropic Filtering (AF) bu cesit bir durumda dokulari netlestirerek goruntu kalitesini iyilestirir. Bu is GPU tarafindan yapildigi icin, performans kaybi kacinilmazdir. Buna bir ornek verecek olursak, FPS tarzi bir oyunda bulundugunuz zemine bakabilirsiniz. Belli bir mesafeden sonra yer kaplamasinin netligini yapbettigini goreceksiniz. AF acildigi zaman tekrarlama seviyesine gore (1x----16x) doku netligi artacaktir.
Full Scene Anti-Aliasing. Bu terim bize 1999 yilinda 3dfx tarafindan duyuruldu. Belki de 3D tarihindeki en onemli gelismelerden biri olan Anti-Aliasing (AA), merdiven efekti olarak adlandirilan 3D sahnelerdeki objelerin cigilerini yumusatma ve daha kaliteli goruntuler elde etmek icin kullanilan bir yontemdir. 3D sahnelerde bir cizgi yaratmak icin tek bir yol vardir. Sadece dikdortgen sekilli yatay ve dikey olarak pikseller bir araya getirilebildiginden, egri ya da acili bir cizgi lusturuldugunda bu cizgi bir merdiven basamagi gibi tirtikli gorunur. AA ise bu efekti yok etmek icin her pixelin etrafindaki pixelleri, ortadaki pixelin rengine gore farkli tonlarda renklendirir ve/veya kendi ekseni etrafinda cevirir. Pixel kombinasyonalrina gore (2x-8x) kalite arttirilabilir, ama ekran kartinin performansini ldukca dusuren bir uygulamadir. Hem hafiza bant genisliginden hem de doldurma hizindan feragat etmek gerekir.
Simdilik bu kadar, aklima gelen daha detayli bilgiler olursa bu dokumani guncelleyecegim. Benden ayrilmayin.
Arkadaslar bu yazinin amaci grafik kartlarinin ozelliklerini ve yapilarini anlatmaktir. Son zamanlarda cok sık sorulan sorular ve anlasilamayan ozellikleri netlestirmek icin bu dokuman hazirlanmistir. Oncelikle grafik kartlari diyince gunumuzun modern 3D grafik kartlarini anlatmaya calisacagim. Yani 2D ve 3D ozelliklerini ayni anda sunan kartlardan bahsedecegim.
Oncelikli olarak bilinmesi gereken grafik kartlarinin bir sub-system oldugudur. Yani bilgisyardan ayri olarak kendi icinde calisan, kendi BIOSu ve kendi hafiza denetleyicisi olan bir eklenti kartindan (add-on card) bahsediyoruz. Bu kart icinde 3 ana oge bulunur. Bunlarda ilki ve en onemlisi tum grafik, doku ve vektorel hesaplamalari yapan grafik islemcisidir. Son yillarda grafik islemciler o denli gelismislerdir ki gunumuzun en guclu ve modern CPUlarindan kat ve kat daha yuksek transistore sahiptirler ve islem kapasiteleri de cok yuksektir. Gelistiriciler tarafindan kismen veya tamamen programlanabilir olmalari sayesinde son zamanlarda bu grafik islemcilerine GPU (Graphical Processing Unit) ya da VPU (Visual Pprocessing Unit) isimleri verilmistir.
GPUnun asil amaci islem yapaktir. Yani 3D ortamda bir noktanin koordnatlarinin konumu ve diger noktalara nasil baglanacagi, ucgen ve poligonlarin durumu ve nasil olusturulcagi, doku kaplamalarinin yapilmasi ve kayan nokta olarak tabir edilen bir noktanin bir sonraki goruntu karesinde nasil hareket edecegi konusundaki tum hesaplamalari yonetir. GPUnun da ayni CPUlar gibi ayni anda isleyebilecegi veri miktari vardir. Gunumuzun en modern GPUlari 256bitliktirler. Yani ayni anda 256bitlik veriyi isleyebilir veya hesaplayabilirler. Su anda sizin de bildiginiz gibi bilgisayar CPUlarin cogu 32bittir. Bu da GPUlarin gucunu ortaya koymaktadir. Bir anda islenebilecek veri miktari ne denli cok olursa, performans da o denli artar.
GPUlarin verileri isleyebilmesi icin is hattina sahip olmalari gerekir. Bu is hatlari ne kadar fazla olursa islenebilecek veri ayri kanallardan o denli cabuk islenebilir. Gunumuzde en yuksek seviye ekran kartlari 16 adet is hattina sahiptir ve bu oldukca yuksek bir rakamdir. Bu 16 adet is hattinin amaci hafizadan gelmis olan veriyi GPUnun islem noktari olan FPU unitesine aktarmaktir. Boylece veri islenir ve goruntu olarak aktarilir. Her pipeline (is hatti) 1 veya 2 adet TMUya sahiptir. TMU ise bir is hattinda kac tane texture yani doku tasinabilecegini gosterir. TMU sayisi ne kadar fazla olursa GPUnun doldurma hizi yani fillrate de o denli artar.
GPU ayni zamanda bir hafiza denetleyicisine de sahiptir. Bu hafiza denetleyicisi, PCBnin (yani kartin uzerine insa edildigi silika alasimli yari iletken board) durumuna gore 256, 128, 64 ya da 32 bit veriyolu genisligine sahip bir kanaldan hafizayi yonetir. Veriyolu genisligi ne denli buyuk olursa, GPUya iletilen birim zamandaki veri ve doku miktari da o denli yuksek olur. Yani bir karilastirma yapmak gerekirse bu veriyolu bir otobana benzetilebilir. Otobandaki seritler ne kadar fazla olursa birim zamanda o kadar fazla arac gecebilir. Veriyolu genisligi ekrk\an kartinin yuksek performan vermesinde direkt rol oyanayan bir faktordur. Bu yuzden en ust seviye ekran kartlari 256 bitlik genis bir veriyoluna sahiptirler. Teorik hafiza bant genisligi hesaplamalarinin nasil yapildigini ilerki bolumlerde okuyacaksiniz.
ONEMLI!!!! GPUnun ayni anda isleyebilecegi veri miktari ile hafiza denetleyicisinin veriyolu genisligi pekcok kisi tarafindan karistirilmaktadir. Unutmayin ki gunumuz GPUlarinin hemen hepsi 256bittir, ancak hafiza denetleyicileri 64, 128 ya da 256 bit olabilmektedir. Ekran kartinizi satin alirken hafiza denetleyicisinin 64 bit olmadigina dikkat edin.
Hafiza ekran kartinda oldukca onemli bir parametredir. Dogal olarak hafiza miktarinin artisi performansi arttirir ancak bu islem dolaylidir ve her zaman dogru olmayabillir. Ekran kartinin hafizasi basi islemleri, dokulari ve algoritmalari depolamak icin kullanilir. Hafiza miktari 256MB olan bir kartin maksimum 80MB tekture kullanan bir oyunda 128MB hafizaya sahip eslenigi ile arasinda bir performans farki yoktur. Ancak bazi goruntu kalitsi iyilestirici ozelliklar acildigina (Anti-Anliasing ve Anisotropic Filtering) ekran karti her bir texture icin mipmap diye tabir edilen bazi layerlar (tabaka) olusturur ve her texture bircok kez ekran karti hafizasina depolanir. Bu yuzden bazi tektirelarin birden fazla olarak hafizada yer almasi da gerekebilir. Bu yuzden hafizanin artmasi dolayli yoldan parformansi etkileyebilir. ANCAK! Herkesin de acikca bildigi gibi AntiAliasing ve Anisotropic Filtering Perfomansi oldukca dusuren uygulamalardir ve bu ozellikler acik iken GPU buyuk bit yuk altina girer. GPU eger bu yuku kaldiramayacak olursa ekran karti yeterli framerate (fps) saglayamaz ve oyunun oynanabilirligi azalir. Gunumuzde herkesin agzinda olan Ekran kartinin hafizasi ne kadar coksa o kadar iyidir sozune guvenerek firmalar alt ve orta seviye ekran kartlarini cok yuksek miktarda hafiza ile donatarak yuksek fiyata satmaktadirlar. Dusuk seviye ekran kartlarinin en unlulerinden olan nVidianin GeForceFX 5200 adli urunu, bazi frmalar tarafindan 256MBlik versiyonlarla piyasaya suruluyor. Ustte de acikladigim gibi bu denli yuksek hafizanin faydasi ancak AntiAliasinge ve Anisotropic Filtering aciken farkedilebilir. Ancak dusuk GPU ve RAM hizi, 4 is hatli bir ekran karti olan GF FX 5200un bu hafizayi kullanabilmesi mumkun degildir. AA ve AF acik oldugu zaman GPU cok zorlanacak ve framerate dusecektir. Bu yuzden bu tur pazarlama hilelerine kanip yuksek hafiza = yuksek performans mantigini kafanizdan silmelisiniz.
Hafizanin bir baska onemli ozelligi de tipi ve hizidir. Artik gunumuzde eredeyse her ekran karti DDR-SDRAM diye tabir edilen bir saat dongusunden 2 adet veriyi ayni anda tasiyabilen Ramlere sahiptir. Ancak DDR-SDRAM gelistirlmis ve GDDR2 ve GDRR3 adi altina daha soguk calisan ve daha yuksek hizlara cikabilen chipler uretilmistir. Gunumuzde satilan en ust duzey ekran kartlari olan GeForce 6800 serisi ve Radeon X800 serisi kartlar GDDR3 hafiza tipini kullanmaktadirlar. Bu sayede hem daha az isinan belleklere sahip olurlar hem de 1Ghzten bile daha hizli calisan bellekler ile daha yuksek hafiza bant genisligine sahip olurlar.
Teorik hafiza bant genisligi nasil hesaplanir? Aslinda oldukca basit bir matematik islemidir.
(Bellek hizi) x (Hafiza denetleyicisinin veriyolu genisligi) / 8 = (MB/s cinsinden teorik hafiza bant genisligi)
Yani bir ornek verecek olursak Radeon X800XT PE ekran kartinin bellek hizi 1150Mhztir ve 256bitlik bir hafiza denetleyicisi veriyolu genisligine sahiptir. Dolayisiyla teorik hafiza bant genisligi:
1150x256/8 = 36,8GB/s olacakir.
Ekran kartinin temel fiziksel ozellikleri bunlarla sinirlidir. Bundan sonraki bolumde size ekran kartlarinin grafiksel ve goruntu kalitesi iyilestirmede kullanilan diger ozelliklerini anlatmaya calisacagim. (DirectX, CineFX, 3Dc, FSAA, AF, LOD,...vs)
BOLUM 2: Gelismis ozellikler ve goruntu iyilestirme
Bu yazinin amaci, grafik karti dosyasinin ilk bolumunde anlattigim temel fiziksel ozelliklere ek olarak goruntu iyilestirmede kullanilan ozelliklerin bazilarini ve 3D dunyasinda kullanilan bazi terimleri ozetlemektir. Her terimi ozetleyemeyecegim icin en cok karsilasilan terimlere deginiyorum.
Hepinizin bildigi gibi dunumuz ekran kartlari 2D ve 3D ozellikleri bir arada bulunduran bir alt-sistemdir. 3D dunyasi ilk olarak 1980lerin ortasinda gelismeye baslamis olsa da bizim gibi son kullanicilarin bu devrimle tanismasi 1996 yilinda oldu. Silicon Graphics firmasindan ayrilan iki muhendis 3dfx adli firmayi kurdular ve 3D dunyasini ilk olarak son kullaniciya actilar. Bir 3D sahnenin yaratilmasi icin bir APIye, yani Application program Interfacee ihtiyac vardir. Bir rutin, program seti tplulugu olan bu arayuz yardimiyla bir 3D sahne tasarlanabilir.
Gunumuzde 2 buyuk API bulunmaktadir: Microsoft Direct3D ve OpenGL. Piyasada 3. baska bir API de yaygin olarak kullanilmaktaydi ve bu APIyi eskiden beri 3D dunyasini takip eden kullanicilar bilecektir: GLIDE. Glide, 3dfx tarafindan OpenGL baz alinilarak gelistirilmis bir API idi ancak 2000 yilinin sonunda 3dfxin tum haklarinin nVidia tarafindan satin alinmasi ile piyasadan silindi.
Bizim yaygin olarak kullandigimiz 3D programlar olan oyunlar, gunumuzde geri kalan 2 yaygin Api ile programlanip olusturulmaktadir. Microsoftun Direct3Dsi su anda son kullanicilar tarafindan en cok kullanilan API olmasina ragmen, OpenGL, acik kaynak kodlu bir yazilim olmasi ve profesyonel alanda Direct3Dden cok daha fazla programlanabilir ve genisletilebilri olmasi acisindan daha fazla ragmet gormektedir.
Direct3D, Microsoftun Windows95e gecis yapmasi ile kullanilmaya baslanan bir uygulamadir. DOS ortaminda oynanan oyunlarin terk edilmesi ve 3Dnin duyurulmasi ile Microsoft grafik yongasi ureticileri ile ortaklasa calisarak D3D standartlarini surekli guncelledi ve gerekli gelistirmeleri yapti. Su anda kullanmakta oldugumuz DirectXin 9. surumu Direct3Dnin gelmis oldugu en son noktayi belirlemektedir.
OpenGL ise son kullanicidan cok profesyonel CAD/CAM ve 3D cizim uygulamalarinin ureticilerinin dogrultusunda gelismis daha farkli bir APIdir. Ancak OpenGL bizim gibi son kullanicilarin da kullandigi bazi oyunlarda onemli rol oynamistir. İd Softtwarein Quake2, Quake3, Doom3 gibi oyunlari bu APIyi kullanarak gelistirilmis ve oldukca da basarili olmuslardir.
3D dunyasinda su anda sikca duydugumuz bir terim bulunmaktadir: Shader. APIlerin gelisim sureclerinde eklenen bu ozellik bir cesit vektorel golgelendirme algoritmasidir. Pixel ve Vertex olarak iki farkli shader bulunmaktadir ve pixel shader adindan da anlasilacagi gibi belirli pixellerin belli bir kod ya da kodlar zinciri vasitasiyla golgelendirerek daha gercekci 3D sahnelerin yaratilmasini saglar. Vertex Shader ise daha cok islenmemis bir 3D sahnedeki objelerin birbirlerine olan baglarini ve hareketlerinin daha onceden yazilmis bir kod yardimi ile kontrol edilmesini saglar. Pixel Shader efektlerini bir ornek olarak su yuzyinde yansima efektleri verilebilir. Vertex shader efektleri ise goz ile gorulebilecek bir sey olmasa da, ornegin bir cesit ruzgarin 3D sahnedeki objelerin hareketi uzerine etkisi olarak orneklenebilir.
Baska sikca duyulan bir ozellik de mappingdir. Bump, parralax, displacement, mip-map gibi cesitli metodlar kullanilarak yapilan bu uygulama, doku kapli bir yueyin eblirli noktalarinda glgelendirme efekti vermeye yarar. Ornegin bir tas duvarin onunde yanan bir atesin olusturacagi golgelerin nasil ve ne yonde olusacagi konusunda mapping kodlari gorevi ustlenir. Bump mapping belli bir yer degistirme ya da kabartma olmadan sanal olarak cikinti ve girintileri olustururken, displacement mapping, doku kapi yuzeylerin seklini de degistirerek daha gercekci efekler olusturabilir.
Anisotropic Filtering. Bir cogumuz bu terimi duyuyoruz ama cogumuz ne ise yaradigini bilmiyor. Adindan da anlasilacagi gibi bir cesit filtreleme yontemidir bu. 3D sahnelerde baki acisi kuculdugunde yuzeyler daha flu gozukur ve netlik azalir. Bunun sebei ise daha az alanda daha fazla detay gostermek zorunda kalan APInin zorlanmasidir. Fakat bir cesit sonradan filtreleme olan Anisotropic Filtering (AF) bu cesit bir durumda dokulari netlestirerek goruntu kalitesini iyilestirir. Bu is GPU tarafindan yapildigi icin, performans kaybi kacinilmazdir. Buna bir ornek verecek olursak, FPS tarzi bir oyunda bulundugunuz zemine bakabilirsiniz. Belli bir mesafeden sonra yer kaplamasinin netligini yapbettigini goreceksiniz. AF acildigi zaman tekrarlama seviyesine gore (1x----16x) doku netligi artacaktir.
Full Scene Anti-Aliasing. Bu terim bize 1999 yilinda 3dfx tarafindan duyuruldu. Belki de 3D tarihindeki en onemli gelismelerden biri olan Anti-Aliasing (AA), merdiven efekti olarak adlandirilan 3D sahnelerdeki objelerin cigilerini yumusatma ve daha kaliteli goruntuler elde etmek icin kullanilan bir yontemdir. 3D sahnelerde bir cizgi yaratmak icin tek bir yol vardir. Sadece dikdortgen sekilli yatay ve dikey olarak pikseller bir araya getirilebildiginden, egri ya da acili bir cizgi lusturuldugunda bu cizgi bir merdiven basamagi gibi tirtikli gorunur. AA ise bu efekti yok etmek icin her pixelin etrafindaki pixelleri, ortadaki pixelin rengine gore farkli tonlarda renklendirir ve/veya kendi ekseni etrafinda cevirir. Pixel kombinasyonalrina gore (2x-8x) kalite arttirilabilir, ama ekran kartinin performansini ldukca dusuren bir uygulamadir. Hem hafiza bant genisliginden hem de doldurma hizindan feragat etmek gerekir.
Simdilik bu kadar, aklima gelen daha detayli bilgiler olursa bu dokumani guncelleyecegim. Benden ayrilmayin.