Oyunlarda filtre nedir? Anizotropik filtreleme

Performans testleri:

Artık filtreleme ve doku yumuşatmanın temel kavramlarına aşina olduğumuza göre uygulamaya geçebiliriz.

Bilgisayar Yapılandırması:
İşlemci: Intel Core 2 Quad Q6600 @ 3200MHz (400x8, 1.3125V)
Ekran kartı: Palit Nvidia GeForce 8800GT
Anakart: Asus P5Q PRO TURBO
Bellek: 2x2048MB DDR2 Corsair XMS2 @ 1066MHz, 5-5-5-15
Güç kaynağı: Corsair CMPSU-850HXEU 850W
CPU soğutucusu: Zalman CNPS9700 LED
İşletim Sistemi: Windows 7 Ultimate x64
Video sürücüsü sürümü: Nvidia 195.62 x64

Bugünkü testimizin ana konusu çok eski ama daha az ünlü olmayan Counter-Strike: Source'du, çünkü bu, çok çeşitli farklı kenar yumuşatma ve filtreleme ayarları sunan, gerçekten yaygın olan birkaç oyundan biridir. Motorun eskiliğine (2004) rağmen, bu oyun hala en modern platformu bile oldukça iyi bir şekilde yükleyebiliyor. İşte kullanıcıya sunulan çok zengin bir ayar yelpazesi:

Kenar yumuşatma ve filtreleme testleri yerleşik kıyaslamada 1280x1024 çözünürlükte gerçekleştirildi. Diğer tüm ayarlar yukarıdaki ekran görüntüsündeki gibi maksimum olarak alınmıştır. Sonucu gerçeğe mümkün olduğunca yakın hale getirmek için her parametre üç kez test edildi ve ardından ortaya çıkan değerlerin aritmetik ortalaması bulundu.

Peki ne elde ettik:

Sonuçlar oldukça beklenmedikti. Tanımı gereği MSAA'dan daha az kaynak tüketmesi gereken kapsama örnekleme teknolojisi (CSAA), burada tamamen zıt bir tablo gösteriyor. Bu fenomenin pek çok nedeni olabilir. Her şeyden önce, kenar yumuşatmayı etkinleştirirken performansın birçok açıdan GPU mimarisine bağlı olduğunu hesaba katmak gerekir. Oyunun çeşitli teknolojilerinin ve sürücü versiyonunun optimizasyonu da aynı derecede önemli bir rol oynamaktadır. Bu nedenle, diğer ekran kartlarını veya hatta farklı bir sürücü sürümünü kullanırken sonuçlar tamamen farklı olabilir.

Kenar yumuşatma devre dışı bırakılan testler (algı kolaylığı için maviyle işaretlenmiştir), yaklaşık olarak eşit bir resim gösterdi; bu, video kartındaki yükte hafif bir fark olduğunu gösterir.

Ayrıca AF 8x ve AF 16x için aynı kenar yumuşatma yöntemini kullanırken FPS göstergeleri arasında net bir benzerlik vardır. Aynı zamanda, fark 1 ila 4 fps arasında değişmektedir (farkın 11 fps olduğu MSAA 8x hariç). Bu, performans üzerinde önemli bir etki yaratmadan resim kalitesini artırmanız gerekiyorsa 16x filtreleme kullanmanın çok yararlı olabileceğini göstermektedir.

Yine de, aynı FPS değerlerini doğrudan oyunda elde etmenin gerçekçi olmadığına dair bir rezervasyon yaptırmak gerekiyor, çünkü birçok sahne, özellikle birçok oyuncuyla çok daha zor çıkıyor.

Test resimleri:

Peki neyimiz var? Farklı ayar yapılandırmalarının performans üzerindeki etkilerini öğrendik. “Peki bütün bunlara neden ihtiyaç duyuldu?” - sen sor. Görüntülenen görüntünün kalitesini artırmak için cevap vereceğim. Böyle bir artış var mı? Bu soruyu cevaplamak için aşağıdaki ekran görüntülerine göz atmanızı öneririm:

Çift Doğrusal/MSAA 2xTrilinear/MSAA 2xAF 2x / MSAA 2x
AF 2x / CSAA 8xAF 2x / MSAA 8xAF 2x / CSAA 16x
AF 2x / CSAA 16xQAF 8x/MSAAx2AF 8x / CSAA 8x
AF 8x / MSAA 8xAF 8x / CSAA 16xAF 8x / CSAA 16xQ
AF 16x / MSAA 2xAF 16x / CSAA 8xAF 16x / MSAA 8x
AF 16x / CSAA 16xAF 16x / CSAA 16xQÇift Doğrusal/CSAA 16xQ

Gördüğünüz gibi AF 8x / MSAA 8x (CSAA 8x) "üstündeki" kombinasyonlarda önemli bir fark yoktur. Ancak bu, özellikle Kapsama Örnekleme AntiAliasing kullanılırken performansta gözle görülür bir düşüşe neden olur.

Sonuçlar:

Elbette bu makaleyi okuyanlar arasında Cs:s, HL2 ve Source motoruna dayalı diğer oyunların oyuncuları olacaktır. Bu makaleyi diğerlerinden daha ilginç ve eğitici bulacaklar. Ancak bu yazının amacı sadece oyunların görsel algısını geliştirmeye yardımcı olan modern teknolojilerden bahsetmekti. Ve testler belirtilen teoriyi pratikte göstermenin bir yoludur.

Elbette okumaların güvenilirliğini sağlamak için hem diğer video çiplerinde hem de ek oyunlarda performans testlerinin yapılması gerekiyordu.

Öyle olsa bile, bu makalenin konusuna dönecek olursak, herkes hangi ayarlarla oynayacağını seçiyor. Ve önceden başarısızlığa mahkum oldukları için tavsiye veya tavsiye vermeyeceğim. Yukarıdaki teori ve testlerin açıklanan teknolojilere daha aşina olmanıza yardımcı olacağını umuyorum.

By Stormcss


Acımasızca tekmelemek

3D oyunların ortaya çıkışıyla birlikte, 2D oyunlarda olmayan sorunlar ortaya çıkmaya başladı: Sonuçta, artık üç boyutlu bir görüntüyü düz bir monitörde görüntülemeniz gerekiyor. Nesne, yakınındaki ekran düzlemine paralel ise sorun yoktur: bir piksel, bir teksele karşılık gelir (bir teksel, 3 boyutlu bir yüzey üzerine bindirilmiş iki boyutlu bir görüntünün pikselidir). Peki nesne eğikse veya uzaktaysa ne yapmalı? Sonuçta piksel başına birkaç doku vardır ve monitör sınırlı sayıda piksele sahip olduğundan, her birinin renginin belirli bir filtreleme işlemiyle birkaç dokudan hesaplanması gerekir.


Anlaşılırlığı kolaylaştırmak için, her pikselin monitörde kare bir "delik" olduğunu, gözlerden "ışık ışınları" çektiğimizi ve dokuların monitörün arkasında kare bir ızgara üzerinde bulunduğunu hayal edelim. Izgarayı hemen arkasına monitöre paralel yerleştirirsek, bir pikselden gelen ışık yalnızca bir dokuyu kaplayacaktır. Şimdi ızgarayı uzaklaştırmaya başlayacağız - ne elde edeceğiz? Gerçek şu ki, bir pikselden gelen ışık noktamız zaten birden fazla dokuyu kapsayacaktır. Şimdi kafesi döndürelim ve aynı şeyi elde edelim: Bir pikseldeki bir nokta birçok dokuyu kapsayacaktır. Ancak bir pikselin tek bir rengi olabilir ve içinde çok sayıda doku varsa, o zaman rengini belirleyeceğimiz bir algoritmaya ihtiyacımız var - buna doku filtreleme denir.


Bu en basit filtreleme algoritmasıdır: piksel rengi için pikselden ışık noktasının merkezine en yakın olan doku rengini almamız gerçeğine dayanır. Bu yöntemin avantajı açıktır - video kartına en az miktarda yük getirir. Ayrıca pek çok dezavantaj da var - bir merkezi tekselin rengi, piksel noktasına düşen düzinelerce ve hatta yüzlerce diğer tekselin renginden önemli ölçüde farklı olabilir. Ayrıca noktanın şekli önemli ölçüde değişebilir ancak merkezi aynı yerde kalabilir ve sonuç olarak pikselin rengi değişmeyecektir. Asıl dezavantaj "blokluk" sorunudur: piksel başına az sayıda doku olduğunda (yani oynatıcının yanında bir nesne), o zaman bu filtreleme yöntemiyle görüntünün oldukça büyük bir kısmının doldurulduğunu elde ederiz tek renkle, bu da ekranda aynı renkteki "blokların" açıkça görülebilmesine yol açar. Son görüntü kalitesi... tek kelimeyle berbat:


Dolayısıyla bu tür filtrelemenin günümüzde artık kullanılmaması şaşırtıcı değil.


Video kartlarının gelişmesiyle birlikte güçleri artmaya başladı, bu nedenle oyun geliştiricileri daha da ileri gitti: Bir pikselin rengi için bir doku alırsanız kötü olur. Tamam - 4 dokudan ortalama rengi alalım ve buna çift doğrusal filtreleme adını verelim mi? Bir yandan her şey daha iyi olacak - blokaj ortadan kalkacak. Ancak iki numaralı düşman gelecek - oyuncunun yakınındaki görüntünün bulanıklığı: bunun nedeni enterpolasyonun dörtten daha fazla doku gerektirmesidir.

Ancak asıl sorun bu değil: çift doğrusal filtreleme, nesne ekrana paralel olduğunda iyi çalışır: o zaman her zaman 4 doku seçip "ortalama" bir renk elde edebilirsiniz. Ancak dokuların %99'u oyuncuya doğru eğimlidir ve 4 dikdörtgen paralelyüzlüyü (ya da yamuk) 4 kare olarak tahmin ettiğimiz ortaya çıktı ki bu yanlıştır. Doku ne kadar eğilirse renk doğruluğu o kadar düşük ve bulanıklık da o kadar güçlü olur:


Tamam, oyun geliştiricileri dedi ki - 4 doku yeterli olmadığından, iki çarpı dört alalım ve rengi daha doğru bir şekilde eşleştirmek için mip dokulandırma teknolojisini kullanacağız. Yukarıda yazdığım gibi, doku oynatıcıdan ne kadar uzaktaysa, pikselde o kadar fazla doku olacak ve video kartının görüntüyü işlemesi o kadar zor olacaktır. MIP dokulandırma, aynı dokuyu farklı çözünürlüklerde depolamak anlamına gelir: örneğin, orijinal doku boyutu 256x256 ise, kopyaları bellekte 1x1'e kadar 128x128, 64x64 vb. boyutlarda depolanır:


Ve şimdi, filtreleme için yalnızca dokunun kendisi değil aynı zamanda mipmap de alınır: dokunun oynatıcıdan daha uzakta veya daha yakın olmasına bağlı olarak, daha küçük veya daha büyük bir doku mipmap alınır ve zaten üzerinde en yakın 4 doku bulunur pikselin merkezine alınır ve çift doğrusal analiz filtrasyonu gerçekleştirilir. Daha sonra orijinal dokunun pikseline en yakın 4 texel alınarak yine “ortalama” renk elde edilir. Bundan sonra, mipmap'in ve orijinal dokunun ortalama renklerinden "ortalama" renk alınır ve piksele atanır - üç çizgili filtreleme algoritması bu şekilde çalışır. Sonuç olarak, video kartını çift doğrusal filtrelemeden biraz daha fazla yükler (mipmap'in de işlenmesi gerekir), ancak görüntü kalitesi daha iyidir:


Gördüğünüz gibi, üç doğrusal filtreleme, çift doğrusal filtrelemeden çok daha iyidir ve hatta nokta filtrelemeden daha iyidir, ancak görüntü uzun mesafelerde hala bulanıklaşır. Ve bulanık resim, dokunun oynatıcıya göre eğilebileceği gerçeğini hesaba katmamamızdan kaynaklanmaktadır - ve bu tam olarak anizotropik filtrelemenin çözdüğü sorundur. Kısaca anizotropik filtrelemenin çalışma prensibi şu şekildedir: izleme yönü boyunca yerleştirilen bir MIP dokusu alınır, ardından izleme yönü boyunca belirli sayıdaki dokuların rengiyle renk değerlerinin ortalaması alınır. Texel sayısı 16 (x2 filtreleme için) ile 128 (x16 için) arasında değişir. Basitçe söylemek gerekirse, kare filtre yerine (çift doğrusal filtrelemede olduğu gibi), ekran pikseli için istediğiniz rengi daha iyi seçmenize olanak tanıyan uzun bir filtre kullanılır. Ekranda bir milyon veya daha fazla piksel olabileceğinden ve her bir doku en az 32 bit (32 bit renk) ağırlığında olduğundan, anizotropik filtreleme, saniyede onlarca gigabayt gibi çok büyük bir video belleği bant genişliği gerektirir. Bu kadar büyük bellek gereksinimleri, doku sıkıştırma ve önbelleğe alma nedeniyle azalır, ancak yine de DDR belleğe veya 64 bit veriyoluna sahip video kartlarında, trilinear ve x16 anizotropik filtreleme arasındaki fark% 10-15 fps'ye ulaşabilir, ancak böyle bir filtrelemeden sonraki resim en iyisi olduğu ortaya çıkıyor:

Doku filtreleme.

Filtreleme, bir doku görüntüsündeki mevcut dokulara dayalı olarak bir pikselin rengini belirleme sorununu çözer.

Dokuları uygulamanın en basit yöntemine denir nokta örnekleme(tek nokta örnekleme). Bunun özü, çokgeni oluşturan her piksel için, ışık noktasının merkezine en yakın olan doku görüntüsünden bir doku seçilmesidir. Bir pikselin rengi birkaç doku tarafından belirlendiği halde yalnızca bir tanesinin seçildiği için bir hata oluşur.

Bu yöntem çok yanlıştır ve kullanımının sonucu düzensizliklerin ortaya çıkmasıdır. Yani piksellerin boyutu dokulardan büyük olduğunda titreme etkisi gözlemlenir. Bu etki, çokgenin bir kısmı gözlem noktasından, bir pikselin kapladığı alana çok sayıda doku üst üste gelecek kadar uzaktaysa ortaya çıkar. Poligonun gözlem noktasına çok yakın konumlandırılması ve dokuların piksellerden daha büyük olması durumunda, başka bir tür görüntü kalitesi bozulmasının gözlemleneceğini unutmayın. Bu durumda görüntü bloklu görünmeye başlar. Bu etki, doku yeterince büyük olduğunda, ancak mevcut ekran çözünürlüğündeki sınırlama orijinal görüntünün düzgün şekilde temsil edilmesini engellediğinde ortaya çıkar.

İkinci yöntem - çift ​​doğrusal filtreleme(Bi-Linear Filtering) enterpolasyon teknolojisinin kullanılmasından oluşur. Enterpolasyon için kullanılması gereken dokuları belirlemek için ışık noktasının temel şekli kullanılır - daire. Esas itibariyle bir daireye 4 texel yaklaşılır. Çift doğrusal filtreleme, dokular büyütüldüğünde "bloklaşması" gibi görüntü bozulmalarını (filtreleme) ortadan kaldırmaya yönelik bir tekniktir. Bir nesneyi yavaşça döndürürken veya hareket ettirirken (yaklaşırken/uzaklaşırken), piksellerin bir yerden diğerine "atlaması" fark edilebilir; blokaj ortaya çıkar. Bu etkiyi önlemek için, her pikselin rengini belirlemek için dört bitişik dokuya ait renk değerinin ağırlıklı ortalamasını kullanan ve bunun sonucunda kaplama dokusunun rengini belirleyen çift doğrusal filtreleme kullanılır. Ortaya çıkan piksel rengi, üç karıştırma işlemi gerçekleştirildikten sonra belirlenir: önce iki çift kumaşın renkleri karıştırılır ve ardından elde edilen iki renk karıştırılır.

Çift doğrusal filtrelemenin ana dezavantajı, yaklaşımın yalnızca ekrana veya gözlem noktasına paralel konumlanan çokgenler için doğru şekilde gerçekleştirilmesidir. Çokgen belirli bir açıyla döndürülürse (ve bu durum vakaların %99'unda gerçekleşir), bir elipsin yaklaşıklaştırılması gerektiğinden yanlış yaklaşım kullanılır.

"Derinlik yumuşatma" hataları, bakış noktasından uzaktaki nesnelerin ekranda daha küçük görünmesi nedeniyle ortaya çıkar. Bir nesne hareket ederse ve görüş noktasından uzaklaşırsa, küçülen nesnenin üzerine bindirilen doku görüntüsü giderek daha fazla sıkıştırılır. Sonunda nesneye uygulanan doku görüntüsü o kadar sıkıştırılır ki işleme hataları oluşur. Bu işleme hataları özellikle animasyonda problemlidir; bu tür hareket yapaylıkları, görüntünün sabit ve sabit olması gereken kısımlarında titremeye ve yavaş hareket etkilerine neden olur.

Çift doğrusal dokulu aşağıdaki dikdörtgenler açıklanan etkinin bir örneği olarak hizmet edebilir:

Pirinç. 13.29. Çift doğrusal filtreleme yöntemini kullanarak bir nesneyi gölgelendirme. Birkaç karenin tek bir karede birleşmesi ile sonuçlanan "derinlik örtüşme" yapılarının ortaya çıkışı.

Hataları önlemek ve uzaktaki nesnelerin, görüş noktasına daha yakın olanlara göre daha az ayrıntılı göründüğü gerçeğini simüle etmek için, şu şekilde bilinen bir teknik kullanılır: mip haritalama. Kısaca mip-haritalama, gözlem noktasına olan mesafeye bağlı olarak gerekli ayrıntıya sahip bir doku seçildiğinde, farklı derece veya düzeyde ayrıntıya sahip dokuların üst üste bindirilmesidir.

Bir mip dokusu (mip haritası), önceden filtrelenmiş ve ölçeklendirilmiş bir dizi görüntüden oluşur. Bir mip-map katmanıyla ilişkilendirilen bir görüntüde bir piksel, daha yüksek çözünürlükteki önceki katmandan dört pikselin ortalaması olarak temsil edilir. Bu nedenle, her bir mip-doku seviyesiyle ilişkili görüntünün boyutu, bir önceki mip-harita seviyesinden dört kat daha küçüktür.

Pirinç. 13.30. Dalgalı dokunun her bir mip-harita düzeyiyle ilişkili görüntüler.

Soldan sağa 0, 1, 2 vb. mip haritası seviyelerimiz var. Görüntü küçüldükçe daha fazla ayrıntı kaybolur, ta ki sonlara doğru gri piksellerden oluşan bulanık bir bulanıklık dışında hiçbir şey görünmeyene kadar.

Ayrıntı Düzeyi veya basitçe LOD, bir nesneye doku uygulamak için hangi mip-map düzeyinin (veya ayrıntı düzeyinin) seçilmesi gerektiğini belirlemek için kullanılır. LOD, piksel başına yerleştirilen doku sayısına karşılık gelmelidir. Örneğin dokulandırma 1:1'e yakın bir oranla meydana gelirse LOD 0 olacaktır, bu da en yüksek çözünürlüğe sahip mip-map seviyesinin kullanılacağı anlamına gelir. Eğer 4 doku bir pikselle örtüşüyorsa LOD 1 olacak ve daha düşük çözünürlüklü bir sonraki mip seviyesi kullanılacaktır. Genellikle gözlem noktasından uzaklaştıkça en çok ilgiyi hak eden nesnenin LOD değeri daha yüksek olur.

Mip dokulandırma, derinlik örtüşme hataları sorununu çözerken, kullanımı başka yapıtların ortaya çıkmasına neden olabilir. Nesne gözlem noktasından uzaklaştıkça, düşük bir mip-harita seviyesinden yüksek bir seviyeye geçiş meydana gelir. Bir nesne bir mip-harita düzeyinden diğerine geçiş durumunda olduğunda, "mip-bantlama" - bantlama veya laminasyon olarak bilinen özel bir tür görselleştirme hatası ortaya çıkar; bir mip-harita düzeyinden diğerine geçişin açıkça görülebilen sınırları.

Pirinç. 13.31. Dikdörtgen bant, "mip bantlama" eserlerinin kırmızı oklarla gösterildiği, dalga benzeri bir görüntüyle dokulu iki üçgenden oluşur.

İnsan gözünün yer değiştirmelere karşı çok hassas olması ve bir nesnenin etrafında hareket ederken filtreleme seviyeleri arasındaki keskin geçişin yerini kolayca fark edebilmesi nedeniyle, "mip bantlama" hataları sorunu özellikle animasyonda ciddidir.

Üç çizgili filtreleme(üç çizgili filtreleme), mip dokulandırma kullanıldığında ortaya çıkan mip bantlama eserlerini ortadan kaldıran üçüncü bir yöntemdir. Üçlü filtreleme ile bir pikselin rengini belirlemek için sekiz tekselin ortalama renk değeri alınır, bitişik iki dokudan dördü alınır ve yedi karıştırma işlemi sonucunda piksel rengi belirlenir. Üç çizgili filtreleme kullanıldığında, bir mip seviyesinden diğerine yumuşak geçişlerle dokulu bir nesneyi görüntülemek mümkündür; bu, iki bitişik mip-harita seviyesinin enterpolasyonuyla LOD'nin belirlenmesiyle elde edilir. Böylece mip dokulandırmayla ilgili sorunların çoğu ve sahne derinliğinin yanlış hesaplanmasından ("derinlik örtüşmesi") kaynaklanan hatalar çözülür.

Pirinç. 13.32. Piramit MIP haritası

Aşağıda üç doğrusal filtrelemenin kullanımına bir örnek verilmiştir. Burada yine aynı dikdörtgen kullanılmış, dalga benzeri bir görüntüyle dokulandırılmış, ancak üç çizgili filtrelemenin kullanımı nedeniyle bir mip seviyesinden diğerine yumuşak geçişler var. Göze çarpan hiçbir işleme hatası olmadığını unutmayın.

Pirinç. 13.33. Dalga benzeri bir görüntüyle dokulu bir dikdörtgen, mip dokulandırma ve üç çizgili filtreleme kullanılarak ekranda oluşturulur.

MIP dokuları oluşturmanın birkaç yolu vardır. Bunun bir yolu, Adobe PhotoShop gibi grafik paketlerini kullanarak bunları önceden hazırlamaktır. Başka bir yol da MIP dokularını anında oluşturmaktır; programın yürütülmesi sırasında. Önceden hazırlanmış MIP dokuları, oyunun temel kurulumundaki dokular için ek %30 disk alanı anlamına gelir, ancak bunların oluşturulmasını kontrol etmek için daha esnek yöntemlere izin verir ve farklı MIP düzeylerine farklı efektler ve ek ayrıntılar eklemenize olanak tanır.

Üç çizgili mipmap oluşturmanın olabilecek en iyi şey olduğu ortaya çıktı.

Tabii ki değil. Sorunun sadece piksel ve texel boyutlarının oranında değil, aynı zamanda her birinin şeklinde (veya daha doğrusu şekillerin oranında) olduğu görülüyor.

Mip dokulandırma yöntemi, bakış açısıyla doğrudan yüz yüze olan çokgenler için en iyi sonucu verir. Ancak gözlem noktasına göre eğik olan çokgenler üst üste bindirilen dokuyu büker ve böylece doku görüntüsünün farklı türleri ve kare şeklindeki alanları piksellerin üzerine üst üste bindirilebilir. Mip dokulandırma yöntemi bunu hesaba katmaz ve sonuç, sanki yanlış dokular kullanılmış gibi doku görüntüsünün çok bulanık olmasıdır. Bu sorunu çözmek için dokuyu oluşturan dokulardan daha fazlasını örneklemeniz ve bu dokuları, doku uzayındaki pikselin "eşlenen" şeklini dikkate alarak seçmeniz gerekir. Bu yöntem denir anizotropik filtreleme("anizotropik filtreleme"). Normal mip dokulandırmaya "izotropik" (izotropik veya tek biçimli) denir çünkü her zaman dokuların kare bölgelerini birlikte filtreliyoruz. Anizotropik filtreleme, kullandığımız texel bölgesinin şeklinin şartlara göre değişmesi anlamına gelir.

Dokulandırma algoritmalarının açıklaması: doku filtreleme

Doku filtreleme

Son zamanlarda, 3 boyutlu bilgisayar grafiklerinin geliştirilmesinde yer alan şirketler, bilgisayarla görüntülemede ayrıntı ve görüntü kalitesini artırmak için sürekli çaba göstermektedir. Yeni teknolojiler ve 3D işleme mimarileri sürekli olarak geliştirilmekte, sıkıştırma algoritmaları geliştirilmekte ve bellek bant genişliğini artırmak için yükseltilmekte ve bellek mimarisi de değişikliklere uğramaktadır. Ne yazık ki, 3D grafiklerdeki gelişmiş fikirler ile geleneksel PC'ler arasındaki fark oldukça büyük: modern oyunlardaki gerçekçilik vb. 1-2 yıl önce geliştirilen teknolojiler kullanılarak yapıldı. Ek olarak, sıradan bilgisayarların gücü çok sınırlıdır, bu nedenle oyunlar için bu makalede tartışacağımız oldukça basit algoritmalar kullanılır: bu dokulandırmadır ve daha ayrıntılı olarak doku filtrelemedir.

Mevcut bilgisayardan çok daha üstün performansa sahip ideal bir bilgisayara sahip olarak, bir resmi gerçek zamanlı olarak çok gerçekçi bir görüntüyle görüntüleyebileceğiz. Milyonlarca, hatta milyarlarca pikseli hesaplamak ve her biri için kendi rengini ayarlamak mümkün olacaktır; bu durumda resim, gerçek bir videodan kesinlikle ayırt edilemez. Ancak ne yazık ki bunlar şimdilik sadece hayal: Mevcut bilgisayarlar için nesnelerin hareket halindeyken çizimini aynı anda işlemek hala çok zor. Buna ek olarak, bellek bant genişliği konusunda hala felaket düzeyde bir eksiklik var. 3D uygulamalarda iyi kaliteyi sağlamak için görüntü oluşturma sürecini basitleştirecek teknolojiler geliştirilmektedir.

Görüntü hesaplamalarını oldukça iyi kalitede basitleştiren, en çok kullanılan teknolojilerden biri dokulandırmadır. Doku, 3 boyutlu bir nesneye veya herhangi bir yüzeye uygulanan 2 boyutlu bir görüntüdür. Örnek olarak şu durumu ele alalım: Bir geliştiricisiniz ve kullanıcının bir tuğla duvar görmesini istiyorsunuz. 3 boyutlu bir duvar çerçevesi oluşturulur ve tuğlaları ayrı ayrı seçebilirsiniz. Şimdi bir tuğlanın 2 boyutlu resmini çekiyoruz ve onu 3 boyutlu bir çerçevedeki tuğlanın üzerine koyuyoruz, vb. - tüm duvar. Sonuç, normal bir 3 boyutlu duvardır ve grafik çipinin her pikseli çizmesine ve hesaplamasına gerek yoktur; 2 boyutlu görüntünün eklendiği 3 boyutlu çerçevenin koordinatlarını hesaplar.

Tekstüre konusunda tartışılması gereken bir kavram daha var. 2 boyutlu bir görüntüyü üst üste bindirirken görüntü birçok renkli parçaya bölünür. Bu, nesneyi ölçeklendirmek için yapılır; doku 2 boyutludur ve 3 boyutlu bir nesne yaklaşırken veya uzaklaşırken değişmelidir. Gerçekçiliği ve kaliteyi korumak için doku da değişmelidir. Böylece doku, texel (doku elemanları) adı verilen birçok renkli parçaya bölünür. Gelecekte, örneğin bir nesneye yaklaşırken yeni bir doku yüklemeye gerek kalmayacak: dokular orijinal dokudan alınıp büyütülecek. Elbette kalite kayboluyor ancak oldukça yüksek bir seviyede kalıyor, ayrıca bu yaklaşımla grafik işlemcisi ve belleğin yükü önemli ölçüde boşaltılıyor.

Mip-Haritalama

Hareket, görüntülenen tüm nesnelerin bir özelliğidir; Nesnenin kendisi sabit olsa bile karakterin hareketinden dolayı görüş açısı değiştiğinde yine de değişir. Bu nedenle, nesneye yerleştirilen dokunun da hareket etmesi gerekir - bu, bazı komplikasyonlar ve ek işlemler gerektirir. Peki ya bir nesneye belirli bir açıdan, örneğin zeminden bakarsak? Zemin geniş bir alanı kaplayabilir ve gerçekçiliği korumak için bizden ne kadar uzak olursa bileşenleri (örneğin fayanslar) o kadar küçük olur. Bunu sağlamak için dokunun belirli bir şekilde azaltılması gerekir. Ne yazık ki, dokuların çözünürlüğünü basitçe değiştirmek, bir doku diğeriyle görsel olarak birleştiğinde oldukça hoş olmayan bir etkiye yol açabilir. Dokunun gereken piksel sayısından büyük olması durumunda başka bir hoş olmayan etki ortaya çıkabilir. Bu, çok uzaktaki bir dokuya baktığınızda meydana gelir. Geleneksel kenar yumuşatma kullanıldığında her iki durum da ortaya çıkar. Ve işte bu vakaların gerçek örnekleri:

Bu gibi durumları hafifletmek için mip haritalaması oluşturuldu. Bu teknoloji çok basit bir şekilde çalışır: Orijinal doku, çeşitli durumlarda, dokuyu farklı mesafelerde ve farklı görüş açılarında doğru şekilde görüntüleyecek şekilde oluşturulur. Bir nesneye yaklaşırken doku daha yüksek çözünürlükte, uzaklaşırken ise daha düşük çözünürlükte gösterilir. Böylece mip-mapping görüntü kalitesini artırır ve çentikleri azaltır. Aşağıda aynı resimler, yalnızca mip-mapping etkinken verilmiştir: Bu özette resim yoktur.

Kalitede bir iyileşme fark ettiniz mi? Özellikle sarı ve kırmızı desenli ikinci resimde dikkat çekiyor. Lütfen unutmayın: yalnızca uzaktaki dokuların kalitesi artmadı; yakındaki dokular da çok daha iyi görünüyor. Genel olarak, mip haritalamalı bir görüntü, mip haritalamasız olduğundan çok daha iyi görünür: normal görüntüleme sırasında fark edilebilecek çok sayıda bozulma ve eğrilik yoktur.

Filtrasyon

Nokta dokulandırma belki de ana dokulandırma türüdür. Nokta dokulandırmada ayrı bir doku parçası (teksel) seçilir ve pikseller için renk değeri olarak kullanılır. Gerçek şu ki, bu yöntem bir miktar özensizliğe ve bunun sonucunda da görüntü kalitesinde bozulmaya yol açmaktadır. Böyle bir görüntü mevcut standartlara göre kabul edilemez. Aşağıda nokta dokulandırma ile işlenmiş bir doku bulunmaktadır (resmin alt kısmı). Resim, çok büyük bir doku boyutu seçildiğinde kalitedeki teorik bozulmayı göstermektedir.

Çift Hatlı Filtrasyon

Başka bir dokulandırma yöntemi çift doğrusal filtrelemedir. Bu dokulandırma yönteminin çalışma prensibi nokta yöntemine çok benzemekle birlikte ondan farklı olarak piksellerin rengini seçmek için tam görüntü değil, 4 teksellik bir blok kullanılır. Bu, piksel renklerini seçerken doğruluğu artırır ve görüntünün tek tek küçük ayrıntılarının daha iyi işlenmesini sağlar.

Bu resimde çift doğrusal filtreleme ve mip haritalama kullanılarak bir görüntünün çizilmesine ilişkin bir örnek gösterilmektedir.

Üç çizgili filtreleme

Bilineer filtreleme ikinci doğuşunu, çalışma prensibi tamamen aynı olan, ancak işleme doğruluğunu artıran geliştirilmiş bir hesaplama algoritması kullanılan üç çizgili filtreleme biçiminde aldı. Üç doğrusal filtreleme, çift doğrusal filtreleme gibi 4 teksellik bloklar kullanır, tıpkı çift doğrusal filtrelemede olduğu gibi, görüntü normalleştirilir, ardından 4 teksellik sınır bloğundan gelen görüntü normalleştirilir. Son adım, her iki bloğun sınırlarının analiz edilmesidir ve bunun sonucunda bu 2 bloğun sınırındaki olası hatalar ve tutarsızlıklar düzeltilir. Çift doğrusal filtrelemede, blok sınırlarında görünen ve üç doğrusal filtreleme kullanıldığında kaybolan çizgilerin görülmesi oldukça yaygındır. Ayrıca, trilinear filtreleme kullanıldığında, hareket sırasındaki ve görüş açısının değiştirilmesindeki bozulmalar ve düzensizlikler daha iyi giderilir. Aşağıda üç doğrusal filtrelemenin nasıl kullanıldığını ve nasıl uygulandığını gösteren bir diyagram bulunmaktadır.

Üçlü filtreleme kullanıldığında bile bazı kusurların oldukça uzakta göründüğüne dikkat edilmelidir. Bunun nedeni, başlangıçta mip-harita seviyeleri arasındaki bozulmayı azaltmak için tasarlanmış olmasıdır.

Görüntü ancak daha direkt bakış açılarında çok yüksek kalitede elde edilir; gerçek çizimde nesnenin geometrik şekilleri bozulabilir. SGI'dan gelen resme bakın:

Anizotropik filtreleme

Dokulu nesnelerin şekli hem çift doğrusal hem de üç çizgili filtreleme sırasında bozulabilir çünkü Bu filtrelerin her ikisi de izotropiktir - görüntü belirli bir şekilde - kare şeklinde filtrelenir. Oluşturulan nesnelerin çoğu bu özel ve değişmez forma uymuyor: yüksek kaliteli işlenmesi için başka bir tür filtreleme - anizotropik - kullanılması gerekiyor. Anizotropi Latince birkaç kelimeden oluşur ve kelimenin tam anlamıyla "Ani" anlamına gelir - "iso" değil - belirli bir şekil ve "tropia" - model - yani. belirsiz şekilli modeller. Bu teknolojinin adı teknik uygulamasını yansıtmaktadır. Anizotropik filtreleme genellikle en az 8 teksel, tüm yönlerde mip-harita seviyelerinde çalışır ve önceden belirlenmiş bir şekle sahip bir model kullanır. Sonuç olarak, nesnelerdeki gürültü ve bozulma ortadan kalkar ve görüntü bir bütün olarak daha yüksek kalitede olur.

İki resmi karşılaştırın: birinde mip-map seviyeleri ve görüntü gürültüsü arasındaki bozulmaları ortadan kaldıran 16 texel anizotropik filtreleme kullanılmış; ikinci resimde anizotropik filtreleme kapatılmıştı.

Görüntünün uzun mesafelerine dikkat edin: anizotropik ve izotropik filtreleme arasındaki farklar açıktır. Anizotropik filtrelemeyle doku kalitesi, uzun mesafelerde bile orijinaline benzer kalır; İzotropik filtrelemede görüntüyü "pürüzsüzleştirme" eğilimi vardır ve bu da kalite kaybına neden olur. Anizotropik filtreleme, üç çizgili filtreleme gibi doku düzensizliğini azaltır. Ancak anizotropik filtreleme kullanıldığında kalite hala daha iyidir, çünkü karşılaştırma için çok daha fazla sayıda blok kullanır. Anizotropik filtrelemeyi çalışırken gösteren başka bir örnek:

Tüketici sınıfı grafik kartları uzun bir süre anizotropik filtrelemeyle mümkün olan görüntü kalitesini sağlayamadı. NVIDIA GeForce2 ve ATI Radeon gibi grafik yongalarının ortaya çıkışıyla birlikte donanımdaki 16 teksellik blokları analiz eden anizotropik filtrelemenin kullanılması mümkün hale geldi. GeForce3 ve Radeon 8500 ekran kartları zaten 32 texel anizotropik filtreleme kullanıyor. Aşağıdaki resim, profesyonel 64 texel anizotropik filtreleme kullanılarak üretilecek görüntüye yakın bir görüntüyü göstermektedir:

Gelecek…

Yakın gelecekte anizotropik filtreleme giderek daha sık kullanılacaktır. Gelecek nesil grafik yongaları için nesnelerdeki düzensizliklerin ve açısallıkların ortadan kaldırılmasına yönelik yeni teknolojiler halihazırda geliştirilmektedir. Yakın gelecekte görüntülerin multitexel bloklar kullanılarak işlendiğini göreceğiz. 128 texel blok kullanan anizotropik filtreleme için donanım desteğine sahip ekran kartları bulunacaktır. Aynı zamanda görüntü kalitesi de önemli ölçüde artacak ve üretkenlik artacaktır.

Bunlara ek olarak:

Günümüzde kenar yumuşatma ve anizotropik filtreleme: ne, nerede ve ne kadar? Bölüm Bir

Aslında böyle bir başlığa sahip bir makale, "her bilgisayar kullanıcısı bir noktada kenar yumuşatma veya anizotropik filtreleme gibi 3 boyutlu görüntü iyileştirme tekniklerinin işleyişini görmüştür" gibi basmakalıp bir sözle başlayabilir. Veya şu: "Uzay gemilerimiz uzayda dolaşırken, NVIDIA ve ATI programcıları iyi bilinen görüntü iyileştirme tekniklerinin performansını artırmanın yollarını arıyor." İkinci sıradanlığın yaşama şansı çok daha yüksek, zira sürücülerin kim tarafından ve nasıl "optimize edildiği" sorusunu araştırıyor olacağımız gerçeğini şimdiden merak konusu yapıyor.

Ancak, muhtemelen basmakalıp sözler olmadan da idare edeceğiz. Çünkü görüntü iyileştirme tekniklerinin artık sıradan kullanıcılar veya daha doğrusu sıradan oyuncular için ne kadar erişilebilir hale geldiğine dair spekülasyon yapmak çok daha ilginç. Günümüzün oyuncuları, 3D'deki tüm yeni teknolojilerin ve yeniliklerin en aktif tüketicileridir. Genel olarak, günümüzde güçlü bir 3D hızlandırıcıya, çeşitli versiyonlardaki karmaşık gölgelendiricilerle çalışan güçlü 3D motorlarla en yeni bilgisayar oyunlarını oynamak için özel olarak ihtiyaç duyulmaktadır. Günümüzde Pixel shader sürüm 2.0'a sahip bir oyunla kimseyi şaşırtmayacaksınız - oyun dünyasında bu tür eğlence yavaş yavaş gündelik bir olay haline geliyor. Oyun geliştiricileri için en önemli şeyin, oyunlarının oyuncuların büyük çoğunluğunun sahip olduğu donanım üzerinde makul derecede iyi çalışmasını sağlamak olması nedeniyle çoğu oyun hala 1.1 gölgelendirici modeli kullanılarak piyasaya sürülüyor. Artık süper gelişmiş bir motor yapmak büyük bir israf ve hatta bir risktir. Kendiniz karar verin: “Doom 3” veya “Half-Life 2” sınıfından bir motorun geliştirilmesi (peki, buraya gölgelendiriciler 2.0'ın öncüsü, Crytek'in buluşu olan “FarCry”yi tüm ihtişamıyla ekleyelim) gerçek bir her yerde bulunan üçlü) çok fazla zaman alır, bu da gelişmeye ek zorluklar getirir - motorun oluşturulması sırasında yeniliklerin ve orijinal gelişmelerin modası geçmeyeceği bir zaman diliminde motoru geliştirmek gerekir.

Bunun olabileceğinden şüpheniz varsa, o zaman tamamen boşuna - "Half-Life 2" durumunda her şey tam olarak böyleydi (ve "Doom 3", GeForce 3 dikkate alınarak geliştirildi ve GeForce FX). Ayrıca, bu sınıftaki motorların geliştirilmesi, yüksek geliştirme maliyetleriyle ilişkilidir: yetenekli programcılar bugün ucuz değildir. Ve son zamanlarda, oyun motorlarıyla ilgili olarak tabiri caizse "siyaset" konusuna (gereğinden fazla) çok fazla ilgi gösterildi.

Evet, evet, doğru, doğru duydunuz, 3D alanının uzun zamandır doğal olarak grafik işlemci tasarımındaki iki devin çıkarlarına dayanan kendi politikası var: ATI ve NVIDIA. Sert Kanada, güneşli Kaliforniya'ya karşı uzun süredir mücadele ediyor ve şu ana kadar bu çatışmanın sonu görünmüyor ve bu elbette yalnızca biz sıradan tüketicilere fayda sağlıyor. Artık harika bir motor geliştirmek yeterli değil - başarılı olmak için Kaliforniyalı diva NVIDIA'nın veya Kanadalı ATI'nin desteğini almanız gerekiyor, neyse ki artık hem birincinin hem de ikincisinin oyun geliştiricileri için kendi ortaklık programları var. NVIDIA böyle bir programı "Oynatılması gerektiği gibi" olarak adlandırıyor ve ATI buna "Oyuna dahil edin" diyor. Her şey oldukça anlamlı ve net: NVIDIA "bu şekilde oynamanız gerektiğini" söylüyor ve değil hiç de böyle ve ATI, oyunda kesinlikle istediğimiz her şeyi elde edeceğimizi garanti ediyor. Oldukça cazip, değil mi? Motorlar “Doom 3” ve “Half-Life 2” sınıfındandır (durumda) ikincisinin motoru Source olarak adlandırılır, ancak anlaşılmasını kolaylaştırmak için, doğru ilişkilendirmeyi sürdürmek amacıyla buna "Half-Life 2" adını vereceğiz) ve başlangıçta grafik yongası üreticilerinin mühendisleriyle yakın işbirliği içinde geliştirildi, böylece oyunlar bir üreticinin GPU'sunda daha iyi çalışır.

Dolayısıyla gördüğümüz gibi yeni 3D grafik motorları alanındaki devrimler çok sorunlu ve bu nedenle oyun motorları dünyasındaki bu devrimler çok sık olmuyor. Ancak görüntü kalitesinin bir şekilde iyileştirilmesi gerekiyor. Çerçevedeki çokgenlerin sayısını artırarak görsel olarak algılanacak daha güzel bir resim elde edersek, sonunda hızlandırıcının sahneyi kabul edilebilir bir kare hızı düzeyinde işleyemeyeceği noktaya geleceğiz. , ama yine de resimde bir şeyler eksik olacak. Piksel merdivenleri hala kalacak ve dokuların kalitesi artmayacak. Bir monitördeki üç boyutlu görüntünün kalitesini artırmanın daha az belirgin yolları vardır: anizotropik filtreleme ve kenar yumuşatma. Bu görüntü iyileştirme tekniklerinin 3D motorun kendisiyle doğrudan hiçbir ilgisi yoktur ve doğal olarak motorun kendisini daha güzel hale getiremezler ancak dokular ve görüntülerle çıktıda yani görüntüde çalışacak şekilde çalışabilirler. monitörde görsel olarak daha güzel ve yumuşak bir resim görebiliriz.

Anizotropik filtreleme ve kenar yumuşatma alanında hem NVIDIA hem de ATI tarafında çok büyük miktarda sürücü optimizasyonu gerçekleştirilir. Şirketlerin aynı optimizasyonlarla ilgili farklı yaklaşımları ve politikaları vardır ve bu bazen kullanıcılar için tamamen adil olmayabilir. Ancak yazımız tam olarak hem GPU üreten firmaların yaklaşımlarında neyin iyi neyin kötü olduğunu ve günümüzde 3D oyunlarda görüntü kalitesini nelerin artırabileceğini anlamaya yöneliktir.

Kenar yumuşatma nedir ve ne için kullanılır?

Kenar yumuşatmayı optimize etme ve çeşitli doku filtreleme türleri gibi yakıcı bir konunun ayrıntılarına girmeden önce, bugünkü konuşmamızın konusu hakkında bazı teorik bilgiler edinmenin zararı olmaz (ve hatta gerekli olduğunu söyleyebiliriz).

Peki antialiasing nedir ve neden gereklidir? Öncelikle “antialiasing” kelimesinde onun “anti” kısmını vurgulamak gerekiyor. Kelimenin bu bölümünün "kenar yumuşatma" olgusunun kendisinin bir şeyle mücadele etmeyi amaçladığını ima ettiği çok açıktır. Tahmin edebileceğiniz gibi, bizim durumumuzda “takma ad” ile. Bu nedenle, şu anda kötü şöhretli "takma adın" ne olduğunu açıkça anlamamız bizim için önemli.

Öncelikle, sizin ve benim her gün monitörlerimizin ekranlarında görebildiğimiz görüntünün, genellikle piksel adı verilen küçük parçacıklardan oluştuğunu açıkça anlamalısınız. Bu anlamda iyi bir benzetme kareli kağıt örneğidir. Monitördeki görüntü aynı kareli kağıttır, ancak bu durumda bunlar çok çok küçüktür. Ekran çözünürlüğünün 32 bit renk ile 1024x768 olduğunu söylerlerse bu, monitöre yatay olarak 1024 piksel, dikey olarak 768 piksel sığdığı anlamına gelir.Üstelik her piksel, 32 bit palette bulunanlardan bir renkle boyanabilir. Şu anda 32 bit renk, bilgisayar ekranında elde edebileceklerimizin sınırıdır. İnsanlığın en iyi beyinleri (aynı Carmack) zaten 64 bit renge geçme ihtiyacından bahsediyor ve 32 bit paletin bariz dezavantajlarına dikkat çekiyor. Bir zamanlar, 16 bitten 32 bit renge geçerken, bu ihtiyaç oldukça açık bir şekilde haklıydı ve 32 bit'e geçmeye değer olmasının gerçek nedenleri vardı. Günümüzde 64 bit renge geçiş oldukça abartılı. Tıpkı 16 ve 32 bitlerde olduğu gibi, zamanla tüm seviyelerdeki hızlandırıcıların 64 bit rengi kabul edilebilir bir hızda işleyebilmesi için oldukça uzun bir süre beklemeniz gerekecek.

Bir şekilde 3 boyutlu görüntü oluşturma ilkelerine değinen ve kenar yumuşatma hakkında konuştukları makalelerin büyük çoğunluğu, oldukça iyi anlamak için kullanılabilecek basit ama aynı zamanda en etkili örnekle doludur. antialiasing nedir? Word'de yapılan ve ardından Photoshop'ta basitçe büyütülen büyütülmüş "Yükseltme" yazısına bakın. Pek iyi görünmüyor, değil mi? Harflerin yanlarında sözde tarağı veya aynı zamanda "merdiven" olarak da adlandırıldığını görebilirsiniz. Özünde, bu "tarak" veya "merdiven" takma addır. Başka bir örnek piramit gibi geometrik bir nesneyle temsil edilebilir. Aynı "tarak" kenarları boyunca da açıkça görülmektedir. Şimdi aynı piramidin iki katı çözünürlükteki başka bir görüntüsüne bakın. Zaten çok daha iyi görünüyor ve "tarak" neredeyse görünmez. Yukarıda da bahsettiğimiz gibi “tarak”ı yumuşatan bu etki, çözünürlüğü 2 kat artırmamız sayesinde elde edildi.

Bu ne anlama gelir? 200x200 piksel çözünürlüğe sahip bir piramit oluşturduğumuzu varsayalım (yukarıda piksellerin ne olduğu ve neden gerekli olduğu sorusunu ayrıntılı olarak açıklamıştık). Dikeyde ve yatayda nokta sayısını tam 2 kat artırdık yani çözünürlüğü dikeyde 400 piksel, yatayda 400 piksel olan bir görüntü elde ettik. Bu aynı zamanda sahnedeki nesnemizin üzerindeki nokta sayısının da iki katına çıktığı anlamına geliyor. Bu bizim takma etkimiz için ne yaptı? Açıkçası, minimum hale geldi, yani yumuşatıldı - sonuçta nesnenin kenarları boyunca noktaların sayısı da iki katına çıktı. Burada anahtar olan "düzeltilmiş" kelimesidir. Sonuçta, kenar yumuşatmaya, üç boyutlu nesnelerin kenarları boyunca o "merdiveni" yumuşatan teknolojinin özünü yansıtan kenar yumuşatma denir.

Aslında çözünürlüğü artırdıktan sonra piramidin kenarındaki "merdiven" kaybolmadı - eskisi gibi orada kaldı. Bununla birlikte, çözünürlüğü arttırdığımız için (bu, piramidin görüntülenmesi için harcanan piksellerin artması anlamına gelir), artık pikselleri net bir şekilde görmeyen insan görüşünün özellikleri nedeniyle "merdiven" etkisi yumuşatıldı. bir nesnenin kenarında. Çözünürlüğü daha da artırırsanız, örtüşme etkisinin giderek daha az gözlemleneceği kesinlikle açıktır. Daha doğrusu, takma etki ortadan kalkmayacağı için insan gözü bunu giderek daha az fark etmeye başlayacaktır. Ancak çözünürlüğü süresiz olarak artırmanın mümkün olmayacağı da kesinlikle açıktır, çünkü monitörler, hatta en modernleri bile sonlu çözünürlüklere sahiptir ve o kadar büyük değildir, bu da nokta sayısını sürekli artırmamıza izin vermeyecektir. Basitçe söylemek gerekirse, en basit kenar yumuşatma efekti yalnızca ekran çözünürlüğünün arttırılmasıyla elde edilebilir, ancak çözünürlük süresiz olarak artamaz. Görünüşe göre çıkış yolu yok mu? Ancak gerçekte bulunmuştur ve insan görüşünün aynı özelliğine dayanmaktadır.

Bu, görüntüdeki renklerin yumuşak geçişleri sayesinde sağlandı. Aslında görüntünün görsel olarak iyileştirilmesi, çözünürlükteki fiziksel artıştan değil, tabiri caizse çözünürlükteki renk artışından kaynaklanmaktadır. Bu yazıda bu noktaları hesaplamak için kullanılan algoritmaları açıklamayacağız ve matematiksel hesaplamaların derinliklerine girmeyeceğiz, sadece bu tür kenar yumuşatmanın çalışma prensibinden bahsedeceğiz. Nesnelerin sınırlarındaki merdiven yalnızca üç boyutlu nesnelerin kenarlarının resmin geri kalanından renk açısından oldukça güçlü bir şekilde öne çıkması ve bir piksellik ince çizgiler olarak görünmesi nedeniyle görülebilir. Bu durum, kenarın kendi renk değerlerinden hesaplanan renklere ve o kenara yakın noktalara bir dizi nokta yerleştirilerek telafi edilebilir. Yani, bir nesnenin kenarı siyah ve arka planı beyazsa, siyah kenar çizgisinin yanındaki ekstra nokta griye dönecektir. Herhangi bir 3 boyutlu nesnenin kenarına yakın olan bu ekstra noktalar ne kadar fazla olursa, kenarları o kadar düzgün görünecek ve merdiven o kadar az fark edilecektir. Bu yönteme kenar yumuşatma denir. Video kartı sürücüsünde ayarlanan kenar yumuşatma kalitesi, örneğin: 2x, 4x, 6x, 8x, kenar yumuşatma gerektiren çizginin etrafına yerleştirilen ek piksel sayısı anlamına gelir.

Anizotropik filtreleme: yeni başlayanlar için mini bir eğitim programı

Filtrelemenin ne olduğunu anlamak için bazı temel bilgilere sahip olmanız gerekir. Ekrandaki görüntünün, sayısı çözünürlüğe göre belirlenen çok sayıda pikselden oluştuğunu zaten öğrenmiştik. Renkli bir görüntü çıktısı alabilmeniz için grafik kartınızın her pikselin rengini algılaması gerekir. Rengi, üç boyutlu uzayda bulunan çokgenlerin üzerine doku görüntülerinin yerleştirilmesiyle belirlenir. Doku görüntüleri piksellerden veya daha doğrusu teksellerden oluşur, yani bir doku, 3 boyutlu bir yüzey üzerine bindirilmiş iki boyutlu bir görüntünün pikselidir. Temel ikilem şudur: Ekrandaki pikselin rengini hangi doku veya doku belirler? Filtreleme problemini hayal etmek için bir resim hayal edelim. Diyelim ki ekranınız, her biri bir piksel olan çok sayıda yuvarlak deliğe sahip bir levha. Plakanın arkasında bulunan üç boyutlu sahneye göre bir pikselin hangi renge sahip olduğunu belirlemek için deliklerden birinden bakmanız yeterlidir.

Şimdi deliklerden birinden geçen ve dokulu çokgenimize çarpan bir ışık ışınını hayal edin. İkincisi, ışık ışınının geçtiği deliğe paralel olarak yerleştirilmişse, ışık noktası daire şeklinde olacaktır. Aksi halde poligon deliğe paralel değilse ışık noktası bozulur ve eliptik bir şekil alır. Şu anda pek çok okuyucunun şu soruyu sorduğunu düşünüyoruz: "Bütün bu plakalar, bir delik, bir ışık huzmesi bir pikselin rengini belirleme problemiyle nasıl bağlantılıdır?" Dikkat! Anahtar ifade: ışık noktasında bulunan tüm çokgenler pikselin rengini belirler. Yukarıdakilerin tümü, çeşitli filtreleme algoritmalarını anlamak için gerekli olan temel bilgilerdir.

Şimdi ise filtrelemeye neden ihtiyaç duyulduğunu daha iyi anlamanız için efsane “Quake 3 Arena” örneğini kullanarak gerçekleşen süreçlere bakalım. Pek çok karenin ve çeşitli süslemelerin bulunduğu bir tür koridor hayal edin (neyse ki Quake 3 Arena'da bu kadarı var). Koridorun başlangıcındaki süsleme oldukça detaylıdır ve koridorun sonuna (ufuk) yaklaştıkça süslemenin unsurları giderek küçülür, yani. daha az pikselle görüntülenirler. Sonuç olarak süsleme elemanları arasındaki dikişler gibi detaylar kaybolur ve bu da görüntü kalitesinde bozulmaya yol açar.

Sorun, grafik kartı sürücüsünün dokudaki hangi ayrıntıların önemli olduğunu bilmemesidir.

Nokta Örnekleme

Nokta Örnekleme, bir pikselin rengini belirlemenin en basit yoludur. Bu algoritma bir doku görüntüsüne dayanmaktadır: ışık noktasının merkezine en yakın olan yalnızca bir doku seçilir ve piksel rengi bundan belirlenir. Bunun tamamen yanlış olduğunu tahmin etmek zor değil. İlk olarak, bir pikselin rengi birkaç doku tarafından belirlenir ve biz yalnızca birini seçtik. İkincisi, ışık noktasının şekli değişebilir ve algoritma bunu hesaba katmaz. Ama boşuna!

Satır içi örneklemenin ana dezavantajı, poligonun ekrana yakın konumlandırılması durumunda piksel sayısının dokulardan önemli ölçüde daha yüksek olacağı ve bunun sonucunda görüntü kalitesinin büyük ölçüde düşeceği gerçeğidir. Sözde engelleme etkisi, inandığımız gibi, birçok kişinin eski bilgisayar oyunlarında, örneğin aynı efsanevi "Doom" da gözlemleyebileceğine inanıyoruz.

Noktadan Örneklemenin bir avantajı vardır. Bir pikselin renginin belirlenmesinin yalnızca bir doku kullanılarak gerçekleştirilmesi nedeniyle, bu yöntem bellek bant genişliği açısından kritik değildir ve bu, 3D hızlandırıcının çok az kaynağının kullanılması anlamında otomatik olarak bu filtreleme yöntemine çok büyük faydalar sağlar. bu şemayı kullanarak filtrelemeye harcanır.

Çift Doğrusal Filtreleme

Çift Doğrusal Filtreleme – enterpolasyon teknolojisini kullanma yöntemine dayalı çift doğrusal filtreleme. Gerekli dokuları belirlemek için ışık noktasının temel şekli yani daire kullanılır. Daire örneğimizde ikincisi 4 texel ile tahmin edilmektedir. Gördüğünüz gibi burada işler Nokta Örneklemesinden biraz daha iyi. Çift doğrusal filtreleme zaten 4 doku kullanıyor.

Görüntü daha yüksek kalitededir, blokaj yoktur, ancak ekrana yakın çokgenler bulanık görünür ve bunun nedeni, enterpolasyonun mevcut dörtten daha fazla sayıda doku gerektirmesidir.

Belirsizlik hiçbir şekilde çift doğrusal filtrelemenin ana sorunu değildir. Gerçek şu ki, yaklaşım yalnızca ekrana veya gözlem noktasına paralel konumdaki nesneler için doğru bir şekilde gerçekleştirilirken, herhangi bir bilgisayar oyunundaki nesnelerin %99'u gözlem noktasına paralel değildir. Bundan nesnelerin %99'unun yanlış şekilde tahmin edileceği sonucuna varabiliriz. Örneğin dairemizi ele alalım - çokgen gözlem noktasına göre paralel olmayan bir konumdadır, bu nedenle bir elipse yaklaşık olarak yaklaşmalıyız, ancak bir daireye yaklaşık olarak yaklaşıyoruz ki bu son derece yanlıştır. Buna ek olarak, çift doğrusal filtreleme, bellek bant genişliği açısından çok daha fazla talepkardır ve çift doğrusal filtrelemenin bir pikselin rengini belirlemek için zaten 4 teksel kullandığı göz önüne alındığında, bu genel olarak mantıklı olmaktan da ötedir.

İnternetteki forumlar ve makalelerdeki bilgilere bakılırsa ATI, yeni X800 GPU'da üç çizgili doku filtrelemeyle oyun oynuyor. Ancak ATi'yi şiddetle savunanlar da var. Genel olarak bu tür tartışmalar bize bir yıl önce nVidia ile ilgili yaşanan skandalı hatırlatıyor.

Bu kadar hararetli bir tartışmanın nedeni Alman Computerbase web sitesinde yer alan bir makaleydi. ATI'nin, Radeon 9600 ve X800 GPU'larında çift doğrusal ve üç doğrusal filtreleme karışımı nedeniyle genellikle "brilineer" olarak adlandırılan optimize edilmiş üç doğrusal doku filtrelemeyi nasıl kullandığını gösterdi. ATI'nin her zaman gerçek üç çizgili filtrelemenin kullanılmasından bahsettiği için bu haber gerçekten çarpıcıydı.

Peki durum gerçekte nasıl görünüyor? Bu bir optimizasyon mu, bir hile mi yoksa sadece akıllı bir çözüm mü? Karar vermek için çeşitli filtreleme yöntemlerinin ardındaki teknolojiyi araştırmamız gerekiyor. Ve makalenin ilk kısmı tam olarak buna ayrılacak ve bazı teknolojileri birkaç sayfaya sığdırmak için çok basitleştirilmiş bir şekilde sunacağız. Şimdi filtrelemenin temel ve temel işlevlerine bir göz atalım.

Devam filmi olacak mı? Belki de Radeon 9600 ve X800 kartlarında yakın zamanda keşfedilen brilinear filtreleme konusundaki tartışmalar devam ettiğinden beri. ATi'nin bu filtrelemeden dolayı kartların görüntü kalitesinin görsel açıdan olumsuz etkilenmediğini takdir etmek gerekiyor. En azından aksini önerebileceğimiz bir örnek yok elimizde. Şu ana kadar brilineer filtrasyon yapay olarak oluşturulan laboratuvar koşullarında kendini gösteriyor. Aynı zamanda ATi, uyarlanabilir olsun ya da olmasın, bahsedilen kartlar için tam üç çizgili filtrelemeyi etkinleştirmenize izin vermiyor. Yeni filtreleme nedeniyle testlerdeki performans değerleri X800'ün tam potansiyelini göstermiyor çünkü FPS değerleri optimizasyondan sonra elde ediliyor ve bunun hız üzerindeki etkisini değerlendirmek zor. Ve "uyarlanabilir" kelimesi ağızda acı bir tat bırakıyor. ATI bize sürücünün nasıl çalıştığına dair herhangi bir bilgi vermedi ve kartın tam üçlü filtreleme sunduğunu birçok kez belirtti. ATi ancak yukarıda bahsedilen açıklamadan sonra filtrelemenin optimize edildiğini itiraf etti. Umarız sürücünün başka yerlerinde böyle bir "uyum yeteneği" yoktur.

Ancak üreticiler yavaş ama emin adımlarla tolerans seviyesinin aşılacağı noktaya doğru ilerliyor. "Uyarlanabilirlik" veya başlatılan uygulamanın tanımı, kıyaslama programlarının kartın oyunlardaki gerçek performansını göstermesine izin vermiyor. Oyunun görüntü kalitesi bir sürücüden diğerine değişebilir. Üreticiler, pazarlama departmanının o anda ihtiyaç duyduğu performansa bağlı olarak sürücüyle eğlenmekte özgürdür. Tüketicinin gerçekte ne satın aldığını bilme hakkı artık burada kimseyi ilgilendirmiyor. Bütün bunlar medyaya kaldı; bırakın onlar eğitim misyonlarını yerine getirsinler. Makalemizde tartıştığımız filtreleme püf noktaları bu tür durumların yalnızca en ünlüleridir. Dikkatimizden başka ne gizlenir, ancak tahmin edilebilir.

Her üretici standart olarak hangi düzeyde görüntü kalitesi sağlayacağına kendisi karar verir. Ancak üreticiler, son ATI örneğinde olduğu gibi, özellikle de bilinen kıyaslamalardan gizlenmişse, kullandıkları optimizasyonları belgelendirmelidir. Çözüm açık: Optimizasyonları kapatma fırsatı verin! Daha sonra tüketici kendisi için neyin daha önemli olduğuna kendisi karar verebilecek: daha fazla FPS mi yoksa daha iyi kalite mi? Hakem olarak da Microsoft'a güvenemezsiniz. WHQL testleri pek çok şeyi ölçmez ve kolayca atlanabilir: "Duyarlı" kelimesinin anlamını biliyor musunuz?

Şu anda bilinen filtreleme optimizasyonları
ATi nVidia
Üç çizgili
optimizasyon
R9600
X800
GF FX5xxx
(GF 6xxx)*
Açısal optimizasyon
anizotropik filtreleme
R9xxx
X800
GF 6xxx
Uyarlanabilir
anizotropik filtreleme
R9xxx
X800
GF FX5xxx
GF 6xxx
Aşama optimizasyonu R9xxx
X800
GF FX5xxx
LOD optimizasyonu R9xxx
X800(?)

Genel olarak bu tür tartışmaların faydaları vardır: alıcılar ve muhtemelen OEM müşterileri sorunu dinlemeye başlar. Dizginsiz optimizasyon çılgınlığının devam edeceğinden şüphemiz yok. Bununla birlikte, karanlık krallıkta, nVidia'nın üçlü optimizasyonuyla açıkça gösterilen bir ışık ışını ortaya çıktı. Benzer adımların devamını umalım!

KATEGORİLER

POPÜLER MAKALELER

2023 “kingad.ru” - insan organlarının ultrason muayenesi