Çoklu örnek kenar yumuşatma - Multisample anti-aliasing
Çoklu örnek kenar yumuşatma ( MSAA ), bilgisayar grafiklerinde çentikleri gidermek için kullanılan bir tür uzamsal kenar yumuşatma tekniğidir .
Tanım
Terim genellikle özel bir süper örnekleme durumunu ifade eder . İlk tam sahne örtüşme önleme ( FSAA ) uygulamaları kavramsal olarak basitçe bir sahneyi daha yüksek çözünürlükte oluşturarak ve ardından daha düşük çözünürlüklü bir çıktıya altörnekleyerek çalıştı. Çoğu modern GPU , bu tür kenar yumuşatma yeteneğine sahiptir, ancak doku, bant genişliği ve dolgu hızı gibi kaynakları büyük ölçüde vergilendirir . (Bir program yüksek düzeyde TCL'ye bağlı veya CPU'ya bağlıysa, süper örnekleme, çok fazla performans vuruşu olmadan kullanılabilir.)
Göre OpenGL GL_ARB_multisample tarifnamede, "multisampling" supersampling belirli bir optimizasyonu anlamına gelir. Spesifikasyon, oluşturucunun parça programını piksel başına bir kez değerlendirmesini ve yalnızca "gerçekten" derinlik ve şablon değerlerini örneklemesini gerektirir . (Bu, süper örneklemeyle aynı değildir, ancak OpenGL 1.5 spesifikasyonuna göre tanım, tam olarak süper örnekleme uygulamalarını da içerecek şekilde güncellenmiştir.)
Genel olarak grafik literatüründe, "çoklu örnekleme", son görüntünün bazı bileşenlerinin tam olarak süper örneklenmediği herhangi bir özel süper örnekleme durumunu ifade eder. Aşağıdaki listeler özellikle ARB_multisample tanımına atıfta bulunmaktadır.
Açıklama
Süper örnek kenar yumuşatmada, her pikselde birden çok konum örneklenir ve bu örneklerin her biri, sonuçta görüntülenen pikseli oluşturmak için tamamen işlenir ve diğerleriyle birleştirilir. Bu, hesaplama açısından pahalıdır, çünkü tüm işleme süreci her numune konumu için tekrarlanmalıdır. Ayrıca, örtüşme tipik olarak görüntünün yalnızca kenarlar gibi bazı kısımlarında fark edilirken, her bir piksel için süper örnekleme gerçekleştirildiğinden , aynı zamanda verimsizdir .
Çoklu örnek yumuşatmada, bir pikseldeki çoklu örnek konumlarından herhangi biri işlenmekte olan üçgen tarafından kaplanmışsa, bu üçgen için bir gölgeleme hesaplaması yapılmalıdır. Ancak bu hesaplamanın , kaç tane örnek pozisyonunun kapsanacağına bakılmaksızın tüm piksel için yalnızca bir kez yapılması gerekir ; gölgeleme hesaplamasının sonucu, basitçe tüm ilgili çoklu numune konumlarına uygulanır.
Piksel içindeki her çoklu örnek konumunu yalnızca bir üçgenin kapsadığı durumda, yalnızca bir gölgeleme hesaplaması gerçekleştirilir ve bu pikseller, kenarları yumuşatılmamış görüntüdekinden biraz daha pahalıdır (ve sonuç farklı değildir). Bu, örtüşmenin bir sorun olmadığı üçgenlerin ortası için geçerlidir. ( Kenar algılama , MSAA hesaplamasını, örnekleri birden çok üçgen veya birden çok derinlikte üçgen içeren piksellerle açıkça sınırlandırarak bunu daha da azaltabilir.) Çoklu örnek konumlarının her birinin farklı bir üçgenle kaplandığı uç durumda, farklı bir gölgeleme hesaplaması her konum için gerçekleştirilecek ve sonuçlar daha sonra son pikseli verecek şekilde birleştirilecektir ve sonuç ve hesaplama masrafı, eşdeğer süper örneklenmiş görüntüdekiyle aynıdır.
Gölgelendirme hesaplaması, belirli bir piksel üzerinde gerçekleştirilmesi gereken tek işlem değildir; çoklu örnekleme uygulamaları, farklı örnekleme seviyelerinde görünürlük gibi diğer işlemleri çeşitli şekillerde örnekleyebilir.
Avantajları
- Pixel shader genellikle sadece piksel başına bir kere değerlendirilmesi gerekiyor.
- Çokgenlerin kenarlarının ( 3B grafiklerde en belirgin örtüşme kaynağı ) kenarları yumuşatılmıştır.
- Piksel başına birden çok alt piksel örneklendiğinden, MSAA olmadan gözden kaçmış olabilecek bir pikselden daha küçük çokgen detaylar yakalanabilir ve eğer yeterli örnek alınırsa nihai işlenmiş görüntünün bir parçası haline getirilebilir.
Dezavantajları
Alfa testi
Alfa testi, piksellerin çerçeve arabelleğine yazılmasını reddederek yarı saydam nesneleri oluşturmak için kullanılan eski video oyunlarında yaygın olarak kullanılan bir tekniktir. Yarı saydam bir parçanın alfa değeri belirli bir aralıkta değilse, alfa testinden sonra atılacaktır. Bu piksel piksel temelinde gerçekleştirildiği için, görüntü bu pikseller için çoklu örneklemenin (bir pikseldeki tüm çoklu örnekler alfa testine göre atılır) faydalarını almaz. Ortaya çıkan görüntü, saydam nesnelerin kenarları boyunca veya dokulardaki kenarlar boyunca örtüşme içerebilir, ancak görüntü kalitesi herhangi bir kenar yumuşatma olmadan olacağından daha kötü olmayacaktır. Alfa testi dokuları kullanılarak modellenen yarı saydam nesneler, alfa testi nedeniyle de takma adlanır. Bu etki, saydam dokulara sahip nesnelerin birden çok kez işlenmesiyle en aza indirilebilir, ancak bu, birçok saydam nesne içeren sahneler için yüksek performans düşüşüne neden olur.
Takma ad
Çoklu örnekleme, dahili çokgen parçalarını piksel başına yalnızca bir kez hesapladığından, parça gölgelendirici çıktısının yüksek frekanslı bileşenler içerdiği işlenmiş çokgenlerde örtüşme ve diğer yapılar yine de görünür olacaktır.
Verim
SSAA'dan (süper örnekleme) daha az performans yoğun olsa da, MSAA'nın belirli bir çerçeve için FXAA , SMAA ve MLAA gibi post işleme kenar yumuşatma tekniklerine göre birden çok kat daha yoğun olması bazı senaryolarda (karmaşık parçalarda ağır sahneler) mümkündür. . Bu kategorideki ilk teknikler, daha düşük performans etkisine yönelme eğilimindedir, ancak doğruluk sorunlarından muzdariptir. Daha önce oluşturulmuş karelerden gelen verileri birleştirerek örtüşmeyi azaltan geçici kenar yumuşatma (TAA) gibi daha yeni işlem sonrası örtüşme önleme teknikleri , işlem sonrası AA hem daha çok yönlü hem de daha fazla hale geldiği için bu eğilimin tersine döndüğünü gördü. MSAA'dan daha pahalıdır ve tüm çerçeveyi tek başına antialias yapamaz.
Örnekleme yöntemleri
Nokta örneklemesi
Nokta örneklemeli bir maskede, her çoklu örnek için kapsama biti yalnızca çoklu örnek oluşturulan ilkel içinde yer alıyorsa ayarlanır. Örnekler asla oluşturulmuş bir ilkelin dışından alınmaz, bu nedenle nokta örnekleme kullanılarak üretilen görüntüler geometrik olarak doğru olacaktır, ancak filtreleme kalitesi düşük olabilir çünkü pikselin kapsama maskesinde ayarlanan bitlerin oranı, pikselin oranına eşit olmayabilir. aslında söz konusu parça tarafından kapsanmaktadır.
Alan örneklemesi
Alan örneklemeli maskeler kullanılarak filtreleme kalitesi iyileştirilebilir. Bu yöntemde, bir piksel için bir kapsama maskesinde ayarlanan bit sayısı, parçanın gerçek alan kapsamı ile orantılı olmalıdır. Bu, gerçekten işlenen ilkel içinde bulunmayan çoklu örnekler için bazı kapsama bitlerinin ayarlanmasına neden olur ve örtüşme ve diğer yapaylıklara neden olabilir.
Örnek desenler
Normal ızgara
Çoklu örnek konumlarının piksel boyunca eşit aralıklarla yerleştirilmiş bir ızgara oluşturduğu normal bir ızgara örnek modelinin uygulanması kolaydır ve öznitelik değerlendirmesini basitleştirir (yani, alt piksel maskelerinin ayarlanması, örnekleme rengi ve derinliği). Bu yöntem, çok sayıda örnek olması nedeniyle hesaplama açısından pahalıdır. Kenar optimizasyonu, ekrana hizalı kenarlar için zayıftır, ancak çoklu örneklerin sayısı çok olduğunda görüntü kalitesi iyidir.
Seyrek düzenli ızgara
Seyrek düzenli ızgara örnek deseni, normal ızgara örnek deseninden seçilen örneklerin bir alt kümesidir. Normal ızgarada olduğu gibi, düzenli aralık nedeniyle öznitelik değerlendirmesi basitleştirilmiştir. Yöntem, daha az numuneye sahip olduğu için hesaplama açısından daha ucuzdur. Kenar optimizasyonu, ekrana hizalanmış kenarlar için iyidir ve görüntü kalitesi, makul sayıda çoklu örnek için iyidir.
Stokastik örnek desenler
Stokastik bir örnek desen, piksel boyunca çoklu örneklerin rastgele bir dağılımıdır. Örneklerin düzensiz aralıkları, nitelik değerlendirmesini karmaşık hale getirir. Yöntem, düşük örnek sayısı nedeniyle uygun maliyetlidir (normal ızgara modellerine kıyasla). Bu yöntemle kenar optimizasyonu, ekran hizalı kenarlar için yetersiz olsa da. Görüntü kalitesi, makul sayıda örnek için mükemmeldir.
Kalite
Süper örneklemeye kıyasla, çoklu örnek kenar yumuşatma, daha yüksek performansta benzer kaliteyi veya aynı performans için daha iyi kaliteyi sağlayabilir. Döndürülmüş ızgara alt piksel maskeleri kullanılarak daha da iyileştirilmiş sonuçlar elde edilebilir. Çoklu örneklemenin gerektirdiği ek bant genişliği, Z ve renk sıkıştırması mevcutsa oldukça düşüktür.
Modern GPU'ların çoğu 2 ×, 4 × ve 8 × MSAA örneklerini destekler. Daha yüksek değerler daha iyi kaliteyle sonuçlanır, ancak daha yavaştır.