Archiv verlassen und diese Seite im Standarddesign anzeigen : Non-maskable AA
ich bin neuerdings wieder über Non-maskable AA gestolpert, und möchte wissen worum es da eigentlich geht. Also:
1.was ist NMAA (ich erlaube mir mal diese abkürzung) und wie funktioniert es ?
2.was sind die vor- und nachteile (sowohl qualität- als auch performancemäßig)
3.was hat es mit den qualitätsstufen auf sich (ich denke mal es ist die sample anzahl)
es wäre nett diese aspekte kurz mit den heute gebräuchlichen MSAA und SSAA methoden zu vergleichen
Danke.
Non-maskable AA ist keine AA-Methode. Es ist eine Klassifizierung von AA-Methoden in DirectX 9.
Es gibt in DirectX 9 zwei Methoden, Antialiasing durch die Applikation anzufordern: Einmal die explizite Angabe "Multisampling mit N Samples", und einmal "Antialiasing mit der Qualitätsstufe X" (das wird als non-maskable AA bezeichnet).
Der Unterschied dabei ist, dass man nur im ersten Fall das so genannte "Multisample Masking" verwenden kann. Damit kann man die Ausgabe von Werten für alle Samples getrennt steuern, um z.B. Effekte wie Motion Blur, Depth of Field, etc. per Multisample Buffer zu erreichen.
Non-maskable AA heißt nun non-maskable, weil in diesem Fall die Verwendung von Multisample Masking verboten ist. Deswegen kann der Treiber in dieser Kategorie auch AA-Modi anbieten, die prinzipiell kein Masking erlauben, wie z.B. Fragment AA von Matrox.
Eine Anwendung sollte maskable AA nur verwenden, wenn sie Multisample Masking verwendet. Non-maskable AA heißt aus Anwendungssicht "Treiber, glätte die Kanten, aber wie du das machst ist mir egal".
Die Qualitätsstufen beziehen sich nicht direkt auf die Samplezahl. Der Treiber macht einfach eine Angabe, wieviele Qualitätsstufen für AA er bietet, und ordnet jeder Stufe mit aufsteigender Qualität einen unterstützten AA-Modus zu. Die Applikation bietet dem User idealerweise einen Slider mit dem er die Qualitätsstufe auswählt.
Wenn der Treiber z.B. 4 AA-Modi bietet, dann sollte Qualitätsstufe 4 einfach der mit der besten Qualität sein, egal ob FAA, MSAA, SSAA oder irgendwas anderes.
erstmal danke, das hast du sehr gut erklärt.
Die Qualitätsstufen beziehen sich nicht direkt auf die Samplezahl. Der Treiber macht einfach eine Angabe, wieviele Qualitätsstufen für AA er bietet, und ordnet jeder Stufe mit aufsteigender Qualität einen unterstützten AA-Modus zu. Die Applikation bietet dem User idealerweise einen Slider mit dem er die Qualitätsstufe auswählt.
ja, es war mir klar das die qualitätsstufe (also 0,1,2...) nicht direkt die sampleanzahl angibt, (0 oder 1 sample wär ja nicht besonders nützlich :D), nur wusste ich nicht wer die verschiedenen qualitätsstufen bestimmt (also ob es durch DirectX, das programm selber oder der hersteller bzw. driver das machen). jetzt ist aber alles klar.
Effekte wie Motion Blur, Depth of Field, etc. per Multisample Buffer zu erreichen.
1. ist es das was 3dfx seinerzeit durch den T-Buffer gemacht hat ? (wenn ich mich richtig erinnere ist der Multisample Buffer und auch der T-Buffer eigentlich auch ein Accumulation Buffer, wo das bild vor der endgültiger darstellung auf dem bildschirm nochmal manipuliert werden kann - wenn ich da falsch liege dann bitte sagen;))
2. wird der Multisample Buffer heutzutage in irgendeinem spiel mit diesem zweck eingesetzt (also für Motion Blur oder Depth of Field) ? oder ist es einfacher/effizienter diese effekte mit einem Pixelshader zu machen (das gibt es ja heutzutage immer öfter zu sehen)
Damit kann man die Ausgabe von Werten für alle Samples getrennt steuern
3. und das hab ich nicht verstanden. du meinst warscheinlich nicht die anzahl der verwendeten samples pro pixel. für ein kurzes wie und warum hierzu wär ich dir also dankbar.
1. ist es das was 3dfx seinerzeit durch den T-Buffer gemacht hat ? (wenn ich mich richtig erinnere ist der Multisample Buffer und auch der T-Buffer eigentlich auch ein Accumulation Buffer, wo das bild vor der endgültiger darstellung auf dem bildschirm nochmal manipuliert werden kann - wenn ich da falsch liege dann bitte sagen;))
T-Buffer ist dasselbe, nur mit Supersampling. Es werden mehrere Samples pro Pixel gespeichert, und diese werden, wenn das Bild fertiggerendert ist, zusammengemischt.
2. wird der Multisample Buffer heutzutage in irgendeinem spiel mit diesem zweck eingesetzt (also für Motion Blur oder Depth of Field) ? oder ist es einfacher/effizienter diese effekte mit einem Pixelshader zu machen (das gibt es ja heutzutage immer öfter zu sehen)
AFAIK benutzt MotoGP den Multisample Buffer für Motion Trail, was so relativ einfach und performant zu lösen ist. Eine Liste von Spielen, die Multisample Masking nutzen, kenne ich nicht. Was effizienter ist, hängt stark von der Hardware und dem gewünschten Effekt ab. Da Multisampling hardwareseitig noch auf 4 bis 6 Samples limitiert ist, ist aber häufig die Qualität nicht ausreichend.
3. und das hab ich nicht verstanden. du meinst warscheinlich nicht die anzahl der verwendeten samples pro pixel. für ein kurzes wie und warum hierzu wär ich dir also dankbar.
Die Anzahl der Samples pro Pixel ist fest, mit Multisample Masking hat man aber eine Bitmaske mit der man beeinflussen kann, welche Samples geschrieben werden.
Benutzt man z.B. 2xMSAA und eine Bitmaske 01, dann wird nur ein Sample pro Pixel geschrieben, mit der Bitmaske 10 entsprechend das andere Sample im Pixel. Das praktische daran ist, dass das Zusammenmischen der Samples ganz automatisch erfolgt. Malt man also in einem ersten Pass mit Maske 01 ein Bild, und im zweiten Pass mit Maske 10 ein anderes, erscheinen beide jeweils mit 50% Anteil zusammengemischt auf dem Bildschirm.
aaaalles klar, danke. die MotoGP 2 demo hab ich auch noch irgendwo, und werd's mir mal mal genauer anschauen; soweit ich mich erinnern kann war da der Motiontrail effekt akkzeptabel (trotz der niedrigen sampleanzahl).
kann man aber mit 4-6 samples wirklich einen halbwegs anständigen DoF-effekt hinkriegen ? weil bei Motiontrail geht´s ja noch irgendwie daß man die "einzelnen" bilder sieht die zum endgültigen bild zusammengemischt wurden, aber bei DoF muss alles schön smooth von scharf nach verschwommen übergehen (also je weiter sich daß objekt außer fokus befindet), sonst wird das ganze bild nur verschlechtert.
übrigens, wie wird das gemacht ? wird die sampleanzahl/pixel reduziert je weiter das objekt (bzw. die dazugehörigen pixel) out-of-focus sind ?
Ailuros
2004-09-18, 20:18:40
Benutzt auch NFS: Underground motion trail? (nach echtem motion blur sieht die Schmiererei nicht gerade aus).
Ausserdem fuer Tests kann man non-maskable AA in 3dmark03 ausprobieren.
Benutzt auch NFS: Underground motion trail? Ja.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.